UNPKG

vpaid-html5-client

Version:
286 lines (244 loc) 6.07 kB
'use strict'; var METHODS = [ 'handshakeVersion', 'initAd', 'startAd', 'stopAd', 'skipAd', // VPAID 2.0 new method 'resizeAd', 'pauseAd', 'resumeAd', 'expandAd', 'collapseAd', 'subscribe', 'unsubscribe' ]; var EVENTS = [ 'AdLoaded', 'AdStarted', 'AdStopped', 'AdSkipped', 'AdSkippableStateChange', // VPAID 2.0 new event 'AdSizeChange', // VPAID 2.0 new event 'AdLinearChange', 'AdDurationChange', // VPAID 2.0 new event 'AdExpandedChange', 'AdRemainingTimeChange', // [Deprecated in 2.0] but will be still fired for backwards compatibility 'AdVolumeChange', 'AdImpression', 'AdVideoStart', 'AdVideoFirstQuartile', 'AdVideoMidpoint', 'AdVideoThirdQuartile', 'AdVideoComplete', 'AdClickThru', 'AdInteraction', // VPAID 2.0 new event 'AdUserAcceptInvitation', 'AdUserMinimize', 'AdUserClose', 'AdPaused', 'AdPlaying', 'AdLog', 'AdError' ]; var GETTERS = [ 'getAdLinear', 'getAdWidth', // VPAID 2.0 new getter 'getAdHeight', // VPAID 2.0 new getter 'getAdExpanded', 'getAdSkippableState', // VPAID 2.0 new getter 'getAdRemainingTime', 'getAdDuration', // VPAID 2.0 new getter 'getAdVolume', 'getAdCompanions', // VPAID 2.0 new getter 'getAdIcons' // VPAID 2.0 new getter ]; var SETTERS = [ 'setAdVolume' ]; /** * This callback is displayed as global member. The callback use nodejs error-first callback style * @callback NodeStyleCallback * @param {string|null} * @param {undefined|object} */ /** * IVPAIDAdUnit * * @class * * @param {object} creative * @param {HTMLElement} el * @param {HTMLVideoElement} video */ function IVPAIDAdUnit(creative, el, video) {} /** * handshakeVersion * * @param {string} VPAIDVersion * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.handshakeVersion = function (VPAIDVersion, callback) {}; /** * initAd * * @param {number} width * @param {number} height * @param {string} viewMode can be 'normal', 'thumbnail' or 'fullscreen' * @param {number} desiredBitrate indicates the desired bitrate in kbps * @param {object} [creativeData] used for additional initialization data * @param {object} [environmentVars] used for passing implementation-specific of js version * @param {NodeStyleCallback} callback */ IVPAIDAdUnit.prototype.initAd = function(width, height, viewMode, desiredBitrate, creativeData, environmentVars, callback) {}; /** * startAd * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.startAd = function(callback) {}; /** * stopAd * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.stopAd = function(callback) {}; /** * skipAd * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.skipAd = function(callback) {}; /** * resizeAd * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.resizeAd = function(width, height, viewMode, callback) {}; /** * pauseAd * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.pauseAd = function(callback) {}; /** * resumeAd * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.resumeAd = function(callback) {}; /** * expandAd * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.expandAd = function(callback) {}; /** * collapseAd * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.collapseAd = function(callback) {}; /** * subscribe * * @param {string} event * @param {nodeStyleCallback} handler * @param {object} context */ IVPAIDAdUnit.prototype.subscribe = function(event, handler, context) {}; /** * startAd * * @param {string} event * @param {function} handler */ IVPAIDAdUnit.prototype.unsubscribe = function(event, handler) {}; /** * getAdLinear * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.getAdLinear = function(callback) {}; /** * getAdWidth * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.getAdWidth = function(callback) {}; /** * getAdHeight * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.getAdHeight = function(callback) {}; /** * getAdExpanded * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.getAdExpanded = function(callback) {}; /** * getAdSkippableState * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.getAdSkippableState = function(callback) {}; /** * getAdRemainingTime * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.getAdRemainingTime = function(callback) {}; /** * getAdDuration * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.getAdDuration = function(callback) {}; /** * getAdVolume * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.getAdVolume = function(callback) {}; /** * getAdCompanions * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.getAdCompanions = function(callback) {}; /** * getAdIcons * * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.getAdIcons = function(callback) {}; /** * setAdVolume * * @param {number} volume * @param {nodeStyleCallback} callback */ IVPAIDAdUnit.prototype.setAdVolume = function(volume, callback) {}; addStaticToInterface(IVPAIDAdUnit, 'METHODS', METHODS); addStaticToInterface(IVPAIDAdUnit, 'GETTERS', GETTERS); addStaticToInterface(IVPAIDAdUnit, 'SETTERS', SETTERS); addStaticToInterface(IVPAIDAdUnit, 'EVENTS', EVENTS); var VPAID1_METHODS = METHODS.filter(function(method) { return ['skipAd'].indexOf(method) === -1; }); addStaticToInterface(IVPAIDAdUnit, 'checkVPAIDInterface', function checkVPAIDInterface (creative) { var result = VPAID1_METHODS.every(function(key) { return typeof creative[key] === 'function'; }); return result; }); module.exports = IVPAIDAdUnit; function addStaticToInterface(Interface, name, value) { Object.defineProperty(Interface, name, { writable: false, configurable: false, value: value }); }