@openplayerjs/ads 3.0.0-beta.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,166 @@
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
+ };
35
+ export declare class AdsPlugin implements PlayerPlugin {
36
+ name: string;
37
+ version: string;
38
+ capabilities: string[];
39
+ private ctx;
40
+ private bus;
41
+ private _lastCreative;
42
+ private overlayId;
43
+ private prevActiveCaptionSig;
44
+ private adEndPromise;
45
+ private adTrackEls;
46
+ private cfg;
47
+ private overlay;
48
+ 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
+ private currentBreakMeta?;
58
+ private vastClient;
59
+ private tracker?;
60
+ private globalUnsubs;
61
+ private sessionUnsubs;
62
+ private active;
63
+ private resumeAfter;
64
+ private contentMedia?;
65
+ private contentHadControls;
66
+ private startingBreak;
67
+ private playedBreaks;
68
+ private userPlayIntent;
69
+ private forcedMuteUntilInteraction;
70
+ private resolvedBreaks;
71
+ private pendingPercentBreaks;
72
+ private syncingVolume;
73
+ private vmapLoadPromise;
74
+ private vmapPending;
75
+ private pendingVmapSrc?;
76
+ constructor(config?: AdsPluginConfig);
77
+ setup(ctx: PluginContext): void;
78
+ playAds(vastUrl: string): Promise<boolean>;
79
+ playAdsFromXml(vastXml: string): Promise<boolean>;
80
+ getDueMidrollBreaks(currentTime: number): AdsBreakConfig[];
81
+ /** Returns the earliest due midroll break, if any. (Convenience for tests/debugging.) */
82
+ getDueMidrollBreak(currentTime: number): AdsBreakConfig | undefined;
83
+ 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;
108
+ private bindPrerollInterceptors;
109
+ private bindBreakScheduler;
110
+ private startBreak;
111
+ 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;
144
+ private playNonLinearOnlyBreak;
145
+ private mountAdVideo;
146
+ private bindAdSurfaceCommands;
147
+ 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
+ private startAdPlayback;
160
+ private clearSession;
161
+ private finish;
162
+ }
163
+ export declare function installAds(PlayerCtor: any): void;
164
+ export declare function extendAds(player: any, plugin: AdsPlugin): void;
165
+ export {};
166
+ //# sourceMappingURL=ads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ads.d.ts","sourceRoot":"","sources":["../../src/ads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @openplayerjs/ads
3
+ *
4
+ * VAST / VMAP / VPAID ad-serving plugin for OpenPlayerJS.
5
+ * Peer dependencies: @openplayerjs/core, @dailymotion/vast-client, @dailymotion/vmap
6
+ *
7
+ * ESM usage:
8
+ * import { AdsPlugin } from '@openplayerjs/ads';
9
+ * new Core(el, { plugins: [new AdsPlugin({ breaks: [...] })] });
10
+ *
11
+ * UMD / CDN usage: load openplayer-ads.umd.js after the main OpenPlayer bundle.
12
+ * It auto-registers itself under window.OpenPlayerPlugins.ads.
13
+ */
14
+ export { AdsPlugin } from './ads';
15
+ export { extendAds, installAds } from './ads';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=umd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"umd.d.ts","sourceRoot":"","sources":["../../src/umd.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@openplayerjs/ads",
3
+ "version": "3.0.0-beta.0",
4
+ "description": "VAST/VMAP/Non-linear/companions ad-serving plugin for OpenPlayerJS",
5
+ "author": {
6
+ "name": "Rafael Miranda",
7
+ "email": "rafa8626@gmail.com"
8
+ },
9
+ "license": "MIT",
10
+ "type": "module",
11
+ "sideEffects": false,
12
+ "types": "./dist/types/index.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "import": "./dist/index.js",
16
+ "types": "./dist/types/index.d.ts"
17
+ }
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "README.md",
22
+ "LICENSE"
23
+ ],
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/openplayerjs/openplayerjs.git",
27
+ "directory": "packages/ads"
28
+ },
29
+ "bugs": {
30
+ "url": "https://github.com/openplayerjs/openplayerjs/issues"
31
+ },
32
+ "keywords": [
33
+ "vast",
34
+ "vmap",
35
+ "ads",
36
+ "ad",
37
+ "advertising",
38
+ "player",
39
+ "openplayer"
40
+ ],
41
+ "dependencies": {
42
+ "@dailymotion/vast-client": "^6.4.2",
43
+ "@dailymotion/vmap": ">=3.0.0"
44
+ },
45
+ "peerDependencies": {
46
+ "@openplayerjs/core": "^3.0.0-beta.0"
47
+ },
48
+ "devDependencies": {
49
+ "@types/dailymotion__vast-client": "^6.3.0"
50
+ },
51
+ "publishConfig": {
52
+ "access": "public"
53
+ },
54
+ "scripts": {
55
+ "test": "jest --passWithNoTests --config ../../jest.config.cjs"
56
+ }
57
+ }