From d52a9004bfdb7d41fa563f2d4e48ddabdcded305 Mon Sep 17 00:00:00 2001 From: Karim Mourra Date: Fri, 25 Mar 2022 19:18:56 -0300 Subject: [PATCH 01/13] checks for bid identifiers bfore accessing properties From 432f2b73b39b435389d5e71d9ad692750e90524e Mon Sep 17 00:00:00 2001 From: Karim Mourra Date: Tue, 26 Apr 2022 15:12:43 +0200 Subject: [PATCH 02/13] demo --- modules/.submodules.json | 3 --- modules/jwplayerVideoProvider.js | 8 ++++++- modules/testVideoProvider.js | 24 +++++++++++++++++++ .../videoModule/videoImpressionVerifier.js | 2 +- .../shared/parentModule.js | 0 {modules/videoModule => src}/shared/state.js | 0 .../shared/vastXmlBuilder.js | 2 +- .../shared/vastXmlEditor.js | 0 .../videoModule/shared/parentModule_spec.js | 2 +- .../modules/videoModule/shared/state_spec.js | 2 +- .../videoModule/shared/vastXmlBuilder_spec.js | 2 +- .../videoModule/shared/vastXmlEditor_spec.js | 2 +- webpack.conf.js | 1 + 13 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 modules/testVideoProvider.js rename {modules/videoModule => src}/shared/parentModule.js (100%) rename {modules/videoModule => src}/shared/state.js (100%) rename {modules/videoModule => src}/shared/vastXmlBuilder.js (96%) rename {modules/videoModule => src}/shared/vastXmlEditor.js (100%) diff --git a/modules/.submodules.json b/modules/.submodules.json index 3072eb05db5..59bae2013d1 100644 --- a/modules/.submodules.json +++ b/modules/.submodules.json @@ -69,8 +69,5 @@ "fpdModule": [ "enrichmentFpdModule", "validationFpdModule" - ], - "videoModule": [ - "jwplayerVideoProvider" ] } diff --git a/modules/jwplayerVideoProvider.js b/modules/jwplayerVideoProvider.js index c6932e2f670..d201e22fd84 100644 --- a/modules/jwplayerVideoProvider.js +++ b/modules/jwplayerVideoProvider.js @@ -2,7 +2,13 @@ import { PROTOCOLS, API_FRAMEWORKS, VIDEO_MIME_TYPE, PLAYBACK_METHODS, PLACEMENT, VPAID_MIME_TYPE } from './videoModule/constants/ortb.js'; import { PLAYBACK_MODE } from './videoModule/constants/enums.js'; -import stateFactory from './videoModule/shared/state.js'; +import { + SETUP_COMPLETE, SETUP_FAILED, DESTROYED, AD_REQUEST, AD_BREAK_START, AD_LOADED, AD_STARTED, AD_IMPRESSION, AD_PLAY, + AD_TIME, AD_PAUSE, AD_CLICK, AD_SKIPPED, AD_ERROR, AD_COMPLETE, AD_BREAK_END, PLAYLIST, PLAYBACK_REQUEST, + AUTOSTART_BLOCKED, PLAY_ATTEMPT_FAILED, CONTENT_LOADED, PLAY, PAUSE, BUFFER, TIME, SEEK_START, SEEK_END, MUTE, VOLUME, + RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST, PLAYBACK_MODE +} from './videoModule/constants/events.js'; +import stateFactory from '../src/shared/state.js'; import { JWPLAYER_VENDOR } from './videoModule/constants/vendorCodes.js'; import { submodule } from '../src/hook.js'; diff --git a/modules/testVideoProvider.js b/modules/testVideoProvider.js new file mode 100644 index 00000000000..177ef56bec4 --- /dev/null +++ b/modules/testVideoProvider.js @@ -0,0 +1,24 @@ +import { + PROTOCOLS, API_FRAMEWORKS, VIDEO_MIME_TYPE, PLAYBACK_METHODS, PLACEMENT, VPAID_MIME_TYPE +} from './videoModule/constants/ortb.js'; +import { + SETUP_COMPLETE, SETUP_FAILED, DESTROYED, AD_REQUEST, AD_BREAK_START, AD_LOADED, AD_STARTED, AD_IMPRESSION, AD_PLAY, + AD_TIME, AD_PAUSE, AD_CLICK, AD_SKIPPED, AD_ERROR, AD_COMPLETE, AD_BREAK_END, PLAYLIST, PLAYBACK_REQUEST, + AUTOSTART_BLOCKED, PLAY_ATTEMPT_FAILED, CONTENT_LOADED, PLAY, PAUSE, BUFFER, TIME, SEEK_START, SEEK_END, MUTE, VOLUME, + RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST, PLAYBACK_MODE +} from './videoModule/constants/events.js'; +import stateFactory from '../src/shared/state.js'; +import { VIDEO_JS_VENDOR } from './videoModule/constants/vendorCodes.js'; +import { submodule } from '../src/hook.js'; + +export function testProvider() { + const state = stateFactory(); + state.updateState(PROTOCOLS, API_FRAMEWORKS, VIDEO_MIME_TYPE, PLAYBACK_METHODS, PLACEMENT, VPAID_MIME_TYPE, SETUP_COMPLETE, SETUP_FAILED, DESTROYED, AD_REQUEST, AD_BREAK_START, AD_LOADED, AD_STARTED, AD_IMPRESSION, AD_PLAY, + AD_TIME, AD_PAUSE, AD_CLICK, AD_SKIPPED, AD_ERROR, AD_COMPLETE, AD_BREAK_END, PLAYLIST, PLAYBACK_REQUEST, + AUTOSTART_BLOCKED, PLAY_ATTEMPT_FAILED, CONTENT_LOADED, PLAY, PAUSE, BUFFER, TIME, SEEK_START, SEEK_END, MUTE, VOLUME, + RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST, PLAYBACK_MODE); +} + +testProvider.code = VIDEO_JS_VENDOR; + +submodule('videoModule', testProvider); diff --git a/modules/videoModule/videoImpressionVerifier.js b/modules/videoModule/videoImpressionVerifier.js index c5be3f6fe48..e5c8294e2a5 100644 --- a/modules/videoModule/videoImpressionVerifier.js +++ b/modules/videoModule/videoImpressionVerifier.js @@ -1,5 +1,5 @@ import { find } from '../../src/polyfill.js'; -import { vastXmlEditorFactory } from './shared/vastXmlEditor.js'; +import { vastXmlEditorFactory } from '../../src/shared/vastXmlEditor.js'; import { generateUUID } from '../../src/utils.js'; export const PB_PREFIX = 'pb_'; diff --git a/modules/videoModule/shared/parentModule.js b/src/shared/parentModule.js similarity index 100% rename from modules/videoModule/shared/parentModule.js rename to src/shared/parentModule.js diff --git a/modules/videoModule/shared/state.js b/src/shared/state.js similarity index 100% rename from modules/videoModule/shared/state.js rename to src/shared/state.js diff --git a/modules/videoModule/shared/vastXmlBuilder.js b/src/shared/vastXmlBuilder.js similarity index 96% rename from modules/videoModule/shared/vastXmlBuilder.js rename to src/shared/vastXmlBuilder.js index 35547acc479..8f71d8992c0 100644 --- a/modules/videoModule/shared/vastXmlBuilder.js +++ b/src/shared/vastXmlBuilder.js @@ -1,4 +1,4 @@ -import { getGlobal } from '../../../src/prebidGlobal.js'; +import { getGlobal } from '../prebidGlobal.js'; export function buildVastWrapper(adId, adTagUrl, impressionUrl, impressionId, errorUrl) { let wrapperBody = getAdSystemNode('Prebid org', getGlobal().version); diff --git a/modules/videoModule/shared/vastXmlEditor.js b/src/shared/vastXmlEditor.js similarity index 100% rename from modules/videoModule/shared/vastXmlEditor.js rename to src/shared/vastXmlEditor.js diff --git a/test/spec/modules/videoModule/shared/parentModule_spec.js b/test/spec/modules/videoModule/shared/parentModule_spec.js index c9f7e453689..dc83e1a5c84 100644 --- a/test/spec/modules/videoModule/shared/parentModule_spec.js +++ b/test/spec/modules/videoModule/shared/parentModule_spec.js @@ -1,4 +1,4 @@ -import { SubmoduleBuilder, ParentModule } from 'modules/videoModule/shared/parentModule.js'; +import { SubmoduleBuilder, ParentModule } from 'src/shared/parentModule.js'; import { expect } from 'chai'; describe('Parent Module', function() { diff --git a/test/spec/modules/videoModule/shared/state_spec.js b/test/spec/modules/videoModule/shared/state_spec.js index 6cce97ab0a0..1ccaf80566e 100644 --- a/test/spec/modules/videoModule/shared/state_spec.js +++ b/test/spec/modules/videoModule/shared/state_spec.js @@ -1,4 +1,4 @@ -import stateFactory from 'modules/videoModule/shared/state.js'; +import stateFactory from 'src/shared/state.js'; import { expect } from 'chai'; describe('State', function () { diff --git a/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js b/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js index 1007e3898c2..06781a15ce7 100644 --- a/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js +++ b/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js @@ -1,5 +1,5 @@ import { buildVastWrapper, getVastNode, getAdNode, getWrapperNode, getAdSystemNode, - getAdTagUriNode, getErrorNode, getImpressionNode } from 'modules/videoModule/shared/vastXmlBuilder.js'; + getAdTagUriNode, getErrorNode, getImpressionNode } from 'src/shared/vastXmlBuilder.js'; import { expect } from 'chai'; describe('buildVastWrapper', function () { diff --git a/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js b/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js index 087ac93d7bc..9ff25c4709e 100644 --- a/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js +++ b/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js @@ -1,4 +1,4 @@ -import { vastXmlEditorFactory } from 'modules/videoModule/shared/vastXmlEditor.js'; +import { vastXmlEditorFactory } from 'src/shared/vastXmlEditor.js'; import { expect } from 'chai'; describe('Vast XML Editor', function () { diff --git a/webpack.conf.js b/webpack.conf.js index 5269f5300f5..8df0de5e9e2 100644 --- a/webpack.conf.js +++ b/webpack.conf.js @@ -39,6 +39,7 @@ module.exports = { } } }); + console.log(entry); return entry; })(), output: { From 42b1f40027e4bb80c58f0358cfdb60459a9d9900 Mon Sep 17 00:00:00 2001 From: Karim Mourra Date: Fri, 13 May 2022 12:08:14 +0200 Subject: [PATCH 03/13] removes from submodule list --- modules/testVideoProvider.js | 3 +++ webpack.conf.js | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/testVideoProvider.js b/modules/testVideoProvider.js index 177ef56bec4..b9f28cb949e 100644 --- a/modules/testVideoProvider.js +++ b/modules/testVideoProvider.js @@ -10,6 +10,7 @@ import { import stateFactory from '../src/shared/state.js'; import { VIDEO_JS_VENDOR } from './videoModule/constants/vendorCodes.js'; import { submodule } from '../src/hook.js'; +import {registerBidder} from '../src/adapters/bidderFactory.js'; export function testProvider() { const state = stateFactory(); @@ -19,6 +20,8 @@ export function testProvider() { RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST, PLAYBACK_MODE); } +console.log(registerBidder); + testProvider.code = VIDEO_JS_VENDOR; submodule('videoModule', testProvider); diff --git a/webpack.conf.js b/webpack.conf.js index 8df0de5e9e2..4f4c12cb178 100644 --- a/webpack.conf.js +++ b/webpack.conf.js @@ -28,6 +28,9 @@ module.exports = { const entry = { 'prebid-core': { import: './src/prebid.js' + }, + 'video-module': { + import: './modules/videoModule/index.js' } }; const selectedModules = new Set(helpers.getArgModules()); @@ -35,7 +38,7 @@ module.exports = { if (selectedModules.size === 0 || selectedModules.has(mod)) { entry[mod] = { import: fn, - dependOn: 'prebid-core' + dependOn: ['prebid-core', 'video-module'] } } }); From 1deae301dc24ff0c4c47ee3336c085b18cf173ba Mon Sep 17 00:00:00 2001 From: Karim Mourra Date: Fri, 13 May 2022 16:56:18 +0200 Subject: [PATCH 04/13] imports constants --- modules/jwplayerVideoProvider.js | 39 ++++++++----------- modules/testVideoProvider.js | 4 +- .../videoModule}/shared/parentModule.js | 0 {src => modules/videoModule}/shared/state.js | 0 .../videoModule}/shared/vastXmlBuilder.js | 0 .../videoModule}/shared/vastXmlEditor.js | 0 6 files changed, 18 insertions(+), 25 deletions(-) rename {src => modules/videoModule}/shared/parentModule.js (100%) rename {src => modules/videoModule}/shared/state.js (100%) rename {src => modules/videoModule}/shared/vastXmlBuilder.js (100%) rename {src => modules/videoModule}/shared/vastXmlEditor.js (100%) diff --git a/modules/jwplayerVideoProvider.js b/modules/jwplayerVideoProvider.js index d201e22fd84..eca052557a8 100644 --- a/modules/jwplayerVideoProvider.js +++ b/modules/jwplayerVideoProvider.js @@ -6,9 +6,9 @@ import { SETUP_COMPLETE, SETUP_FAILED, DESTROYED, AD_REQUEST, AD_BREAK_START, AD_LOADED, AD_STARTED, AD_IMPRESSION, AD_PLAY, AD_TIME, AD_PAUSE, AD_CLICK, AD_SKIPPED, AD_ERROR, AD_COMPLETE, AD_BREAK_END, PLAYLIST, PLAYBACK_REQUEST, AUTOSTART_BLOCKED, PLAY_ATTEMPT_FAILED, CONTENT_LOADED, PLAY, PAUSE, BUFFER, TIME, SEEK_START, SEEK_END, MUTE, VOLUME, - RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST, PLAYBACK_MODE + RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST } from './videoModule/constants/events.js'; -import stateFactory from '../src/shared/state.js'; +import stateFactory from './videoModule/shared/state.js'; import { JWPLAYER_VENDOR } from './videoModule/constants/vendorCodes.js'; import { submodule } from '../src/hook.js'; @@ -36,13 +36,6 @@ export function JWPlayerProvider(config, jwplayer_, adState_, timeState_, callba let minimumSupportedPlayerVersion = '8.20.1'; let setupCompleteCallback = null; let setupFailedCallback = null; - const prebidVideoEvents = sharedUtils.videoEvents; - const { - SETUP_COMPLETE, SETUP_FAILED, DESTROYED, AD_REQUEST, AD_BREAK_START, AD_LOADED, AD_STARTED, AD_IMPRESSION, AD_PLAY, - AD_TIME, AD_PAUSE, AD_CLICK, AD_SKIPPED, AD_ERROR, AD_COMPLETE, AD_BREAK_END, PLAYLIST, PLAYBACK_REQUEST, - AUTOSTART_BLOCKED, PLAY_ATTEMPT_FAILED, CONTENT_LOADED, PLAY, PAUSE, BUFFER, TIME, SEEK_START, SEEK_END, MUTE, VOLUME, - RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST - } = prebidVideoEvents; const MEDIA_TYPES = [ VIDEO_MIME_TYPE.MP4, VIDEO_MIME_TYPE.OGG, @@ -726,42 +719,42 @@ export const utils = { return jwConfig; }, - getJwEvent: function(eventName, prebidVideoEvents) { + getJwEvent: function(eventName) { switch (eventName) { - case prebidVideoEvents.SETUP_COMPLETE: + case SETUP_COMPLETE: return 'ready'; - case prebidVideoEvents.SETUP_FAILED: + case SETUP_FAILED: return 'setupError'; - case prebidVideoEvents.DESTROYED: + case DESTROYED: return 'remove'; - case prebidVideoEvents.AD_STARTED: - return prebidVideoEvents.AD_IMPRESSION; + case AD_STARTED: + return AD_IMPRESSION; - case prebidVideoEvents.AD_IMPRESSION: + case AD_IMPRESSION: return 'adViewableImpression'; - case prebidVideoEvents.PLAYBACK_REQUEST: + case PLAYBACK_REQUEST: return 'playAttempt'; - case prebidVideoEvents.AUTOSTART_BLOCKED: + case AUTOSTART_BLOCKED: return 'autostartNotAllowed'; - case prebidVideoEvents.CONTENT_LOADED: + case CONTENT_LOADED: return 'playlistItem'; - case prebidVideoEvents.SEEK_START: + case SEEK_START: return 'seek'; - case prebidVideoEvents.SEEK_END: + case SEEK_END: return 'seeked'; - case prebidVideoEvents.RENDITION_UPDATE: + case RENDITION_UPDATE: return 'visualQuality'; - case prebidVideoEvents.PLAYER_RESIZE: + case PLAYER_RESIZE: return 'resize'; default: diff --git a/modules/testVideoProvider.js b/modules/testVideoProvider.js index b9f28cb949e..13968bc9398 100644 --- a/modules/testVideoProvider.js +++ b/modules/testVideoProvider.js @@ -7,7 +7,7 @@ import { AUTOSTART_BLOCKED, PLAY_ATTEMPT_FAILED, CONTENT_LOADED, PLAY, PAUSE, BUFFER, TIME, SEEK_START, SEEK_END, MUTE, VOLUME, RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST, PLAYBACK_MODE } from './videoModule/constants/events.js'; -import stateFactory from '../src/shared/state.js'; +import stateFactory from './videoModule/shared/state.js'; import { VIDEO_JS_VENDOR } from './videoModule/constants/vendorCodes.js'; import { submodule } from '../src/hook.js'; import {registerBidder} from '../src/adapters/bidderFactory.js'; @@ -17,7 +17,7 @@ export function testProvider() { state.updateState(PROTOCOLS, API_FRAMEWORKS, VIDEO_MIME_TYPE, PLAYBACK_METHODS, PLACEMENT, VPAID_MIME_TYPE, SETUP_COMPLETE, SETUP_FAILED, DESTROYED, AD_REQUEST, AD_BREAK_START, AD_LOADED, AD_STARTED, AD_IMPRESSION, AD_PLAY, AD_TIME, AD_PAUSE, AD_CLICK, AD_SKIPPED, AD_ERROR, AD_COMPLETE, AD_BREAK_END, PLAYLIST, PLAYBACK_REQUEST, AUTOSTART_BLOCKED, PLAY_ATTEMPT_FAILED, CONTENT_LOADED, PLAY, PAUSE, BUFFER, TIME, SEEK_START, SEEK_END, MUTE, VOLUME, - RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST, PLAYBACK_MODE); + RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST); } console.log(registerBidder); diff --git a/src/shared/parentModule.js b/modules/videoModule/shared/parentModule.js similarity index 100% rename from src/shared/parentModule.js rename to modules/videoModule/shared/parentModule.js diff --git a/src/shared/state.js b/modules/videoModule/shared/state.js similarity index 100% rename from src/shared/state.js rename to modules/videoModule/shared/state.js diff --git a/src/shared/vastXmlBuilder.js b/modules/videoModule/shared/vastXmlBuilder.js similarity index 100% rename from src/shared/vastXmlBuilder.js rename to modules/videoModule/shared/vastXmlBuilder.js diff --git a/src/shared/vastXmlEditor.js b/modules/videoModule/shared/vastXmlEditor.js similarity index 100% rename from src/shared/vastXmlEditor.js rename to modules/videoModule/shared/vastXmlEditor.js From 668fa78748dc47ead45994e2108fb63d58eecd98 Mon Sep 17 00:00:00 2001 From: Karim Mourra Date: Fri, 13 May 2022 16:59:31 +0200 Subject: [PATCH 05/13] moves shared out of src --- modules/videoModule/shared/vastXmlBuilder.js | 2 +- modules/videoModule/videoImpressionVerifier.js | 2 +- test/spec/modules/videoModule/shared/parentModule_spec.js | 2 +- test/spec/modules/videoModule/shared/state_spec.js | 2 +- test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js | 2 +- test/spec/modules/videoModule/shared/vastXmlEditor_spec.js | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/videoModule/shared/vastXmlBuilder.js b/modules/videoModule/shared/vastXmlBuilder.js index 8f71d8992c0..35547acc479 100644 --- a/modules/videoModule/shared/vastXmlBuilder.js +++ b/modules/videoModule/shared/vastXmlBuilder.js @@ -1,4 +1,4 @@ -import { getGlobal } from '../prebidGlobal.js'; +import { getGlobal } from '../../../src/prebidGlobal.js'; export function buildVastWrapper(adId, adTagUrl, impressionUrl, impressionId, errorUrl) { let wrapperBody = getAdSystemNode('Prebid org', getGlobal().version); diff --git a/modules/videoModule/videoImpressionVerifier.js b/modules/videoModule/videoImpressionVerifier.js index e5c8294e2a5..c5be3f6fe48 100644 --- a/modules/videoModule/videoImpressionVerifier.js +++ b/modules/videoModule/videoImpressionVerifier.js @@ -1,5 +1,5 @@ import { find } from '../../src/polyfill.js'; -import { vastXmlEditorFactory } from '../../src/shared/vastXmlEditor.js'; +import { vastXmlEditorFactory } from './shared/vastXmlEditor.js'; import { generateUUID } from '../../src/utils.js'; export const PB_PREFIX = 'pb_'; diff --git a/test/spec/modules/videoModule/shared/parentModule_spec.js b/test/spec/modules/videoModule/shared/parentModule_spec.js index dc83e1a5c84..c9f7e453689 100644 --- a/test/spec/modules/videoModule/shared/parentModule_spec.js +++ b/test/spec/modules/videoModule/shared/parentModule_spec.js @@ -1,4 +1,4 @@ -import { SubmoduleBuilder, ParentModule } from 'src/shared/parentModule.js'; +import { SubmoduleBuilder, ParentModule } from 'modules/videoModule/shared/parentModule.js'; import { expect } from 'chai'; describe('Parent Module', function() { diff --git a/test/spec/modules/videoModule/shared/state_spec.js b/test/spec/modules/videoModule/shared/state_spec.js index 1ccaf80566e..6cce97ab0a0 100644 --- a/test/spec/modules/videoModule/shared/state_spec.js +++ b/test/spec/modules/videoModule/shared/state_spec.js @@ -1,4 +1,4 @@ -import stateFactory from 'src/shared/state.js'; +import stateFactory from 'modules/videoModule/shared/state.js'; import { expect } from 'chai'; describe('State', function () { diff --git a/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js b/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js index 06781a15ce7..1007e3898c2 100644 --- a/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js +++ b/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js @@ -1,5 +1,5 @@ import { buildVastWrapper, getVastNode, getAdNode, getWrapperNode, getAdSystemNode, - getAdTagUriNode, getErrorNode, getImpressionNode } from 'src/shared/vastXmlBuilder.js'; + getAdTagUriNode, getErrorNode, getImpressionNode } from 'modules/videoModule/shared/vastXmlBuilder.js'; import { expect } from 'chai'; describe('buildVastWrapper', function () { diff --git a/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js b/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js index 9ff25c4709e..087ac93d7bc 100644 --- a/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js +++ b/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js @@ -1,4 +1,4 @@ -import { vastXmlEditorFactory } from 'src/shared/vastXmlEditor.js'; +import { vastXmlEditorFactory } from 'modules/videoModule/shared/vastXmlEditor.js'; import { expect } from 'chai'; describe('Vast XML Editor', function () { From ddfc32bfd6e6c1782774048f9532f8f1c0e24731 Mon Sep 17 00:00:00 2001 From: Karim Mourra Date: Fri, 13 May 2022 16:59:44 +0200 Subject: [PATCH 06/13] depends on core --- webpack.conf.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/webpack.conf.js b/webpack.conf.js index 4f4c12cb178..06c61224708 100644 --- a/webpack.conf.js +++ b/webpack.conf.js @@ -30,7 +30,8 @@ module.exports = { import: './src/prebid.js' }, 'video-module': { - import: './modules/videoModule/index.js' + import: ['./modules/videoModule/index.js', './modules/videoModule/constants/ortb.js', './modules/videoModule/constants/enums.js'], + dependOn: 'prebid-core' } }; const selectedModules = new Set(helpers.getArgModules()); From 8e43851901f223be3c2ee5fd041411bef59a001a Mon Sep 17 00:00:00 2001 From: Karim Mourra Date: Fri, 13 May 2022 18:33:14 +0200 Subject: [PATCH 07/13] adds dependency support --- gulpHelpers.js | 4 ++++ modules/.dependencies.json | 8 ++++++++ webpack.conf.js | 8 +++++++- 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 modules/.dependencies.json diff --git a/gulpHelpers.js b/gulpHelpers.js index c0946edf93d..c4b2ad0a85e 100644 --- a/gulpHelpers.js +++ b/gulpHelpers.js @@ -7,6 +7,7 @@ const through = require('through2'); const _ = require('lodash'); const gutil = require('gulp-util'); const submodules = require('./modules/.submodules.json'); +const dependencies = require('./modules/.dependencies.json'); const MODULE_PATH = './modules'; const BUILD_PATH = './build/dist'; @@ -70,6 +71,9 @@ module.exports = { return modules; }, + getDependencies(moduleName) { + return dependencies[moduleName]; + }, getModules: _.memoize(function(externalModules) { externalModules = externalModules || []; var internalModules; diff --git a/modules/.dependencies.json b/modules/.dependencies.json new file mode 100644 index 00000000000..44643281836 --- /dev/null +++ b/modules/.dependencies.json @@ -0,0 +1,8 @@ +{ + "jwplayerVideoProvider": [ + "video-module" + ], + "testVideoProvider": [ + "video-module" + ] +} diff --git a/webpack.conf.js b/webpack.conf.js index 06c61224708..6b81173cf4d 100644 --- a/webpack.conf.js +++ b/webpack.conf.js @@ -35,11 +35,17 @@ module.exports = { } }; const selectedModules = new Set(helpers.getArgModules()); + Object.entries(helpers.getModules()).forEach(([fn, mod]) => { if (selectedModules.size === 0 || selectedModules.has(mod)) { entry[mod] = { import: fn, - dependOn: ['prebid-core', 'video-module'] + dependOn: 'prebid-core' + }; + + const extraDependencies = helpers.getDependencies(mod); + if (extraDependencies) { + entry[mod].dependOn = ['prebid-core'].concat(extraDependencies); } } }); From 3ccc5e2dba432ef728a72b0ff8f7c8440b003508 Mon Sep 17 00:00:00 2001 From: Karim Mourra Date: Fri, 13 May 2022 18:38:41 +0200 Subject: [PATCH 08/13] removes logs --- modules/jwplayerVideoProvider.js | 2 +- modules/testVideoProvider.js | 7 +++---- webpack.conf.js | 1 - 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/modules/jwplayerVideoProvider.js b/modules/jwplayerVideoProvider.js index eca052557a8..42a6dfaaa4d 100644 --- a/modules/jwplayerVideoProvider.js +++ b/modules/jwplayerVideoProvider.js @@ -193,7 +193,7 @@ export function JWPlayerProvider(config, jwplayer_, adState_, timeState_, callba function offEvents(events, callback) { events.forEach(event => { - const jwEvent = utils.getJwEvent(event, prebidVideoEvents); + const jwEvent = utils.getJwEvent(event); if (!callback) { player.off(jwEvent); return; diff --git a/modules/testVideoProvider.js b/modules/testVideoProvider.js index 13968bc9398..054a4c525a9 100644 --- a/modules/testVideoProvider.js +++ b/modules/testVideoProvider.js @@ -1,11 +1,12 @@ import { PROTOCOLS, API_FRAMEWORKS, VIDEO_MIME_TYPE, PLAYBACK_METHODS, PLACEMENT, VPAID_MIME_TYPE } from './videoModule/constants/ortb.js'; +import { PLAYBACK_MODE } from './videoModule/constants/enums.js'; import { SETUP_COMPLETE, SETUP_FAILED, DESTROYED, AD_REQUEST, AD_BREAK_START, AD_LOADED, AD_STARTED, AD_IMPRESSION, AD_PLAY, AD_TIME, AD_PAUSE, AD_CLICK, AD_SKIPPED, AD_ERROR, AD_COMPLETE, AD_BREAK_END, PLAYLIST, PLAYBACK_REQUEST, AUTOSTART_BLOCKED, PLAY_ATTEMPT_FAILED, CONTENT_LOADED, PLAY, PAUSE, BUFFER, TIME, SEEK_START, SEEK_END, MUTE, VOLUME, - RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST, PLAYBACK_MODE + RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST } from './videoModule/constants/events.js'; import stateFactory from './videoModule/shared/state.js'; import { VIDEO_JS_VENDOR } from './videoModule/constants/vendorCodes.js'; @@ -17,11 +18,9 @@ export function testProvider() { state.updateState(PROTOCOLS, API_FRAMEWORKS, VIDEO_MIME_TYPE, PLAYBACK_METHODS, PLACEMENT, VPAID_MIME_TYPE, SETUP_COMPLETE, SETUP_FAILED, DESTROYED, AD_REQUEST, AD_BREAK_START, AD_LOADED, AD_STARTED, AD_IMPRESSION, AD_PLAY, AD_TIME, AD_PAUSE, AD_CLICK, AD_SKIPPED, AD_ERROR, AD_COMPLETE, AD_BREAK_END, PLAYLIST, PLAYBACK_REQUEST, AUTOSTART_BLOCKED, PLAY_ATTEMPT_FAILED, CONTENT_LOADED, PLAY, PAUSE, BUFFER, TIME, SEEK_START, SEEK_END, MUTE, VOLUME, - RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST); + RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST, registerBidder, PLAYBACK_MODE); } -console.log(registerBidder); - testProvider.code = VIDEO_JS_VENDOR; submodule('videoModule', testProvider); diff --git a/webpack.conf.js b/webpack.conf.js index 6b81173cf4d..fecddc29c66 100644 --- a/webpack.conf.js +++ b/webpack.conf.js @@ -49,7 +49,6 @@ module.exports = { } } }); - console.log(entry); return entry; })(), output: { From 0c88b4b5dde7bd677d6d11527a2209dc67abaee0 Mon Sep 17 00:00:00 2001 From: Karim Mourra Date: Fri, 13 May 2022 19:06:06 +0200 Subject: [PATCH 09/13] adds dependency entries --- gulpHelpers.js | 4 ++++ modules/.dependencyEntries.json | 6 ++++++ webpack.conf.js | 18 ++++++++++++++---- 3 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 modules/.dependencyEntries.json diff --git a/gulpHelpers.js b/gulpHelpers.js index c4b2ad0a85e..5f3325b6991 100644 --- a/gulpHelpers.js +++ b/gulpHelpers.js @@ -8,6 +8,7 @@ const _ = require('lodash'); const gutil = require('gulp-util'); const submodules = require('./modules/.submodules.json'); const dependencies = require('./modules/.dependencies.json'); +const dependencyEntries = require('./modules/.dependencyEntries.json'); const MODULE_PATH = './modules'; const BUILD_PATH = './build/dist'; @@ -74,6 +75,9 @@ module.exports = { getDependencies(moduleName) { return dependencies[moduleName]; }, + getDependencyEntry(dependencyName) { + return dependencyEntries[dependencyName]; + }, getModules: _.memoize(function(externalModules) { externalModules = externalModules || []; var internalModules; diff --git a/modules/.dependencyEntries.json b/modules/.dependencyEntries.json new file mode 100644 index 00000000000..f53438da836 --- /dev/null +++ b/modules/.dependencyEntries.json @@ -0,0 +1,6 @@ +{ + "video-module": { + "import": ["./modules/videoModule/index.js", "./modules/videoModule/constants/ortb.js", "./modules/videoModule/constants/enums.js"], + "dependOn": "prebid-core" + } +} diff --git a/webpack.conf.js b/webpack.conf.js index fecddc29c66..65f82075d10 100644 --- a/webpack.conf.js +++ b/webpack.conf.js @@ -28,14 +28,23 @@ module.exports = { const entry = { 'prebid-core': { import: './src/prebid.js' - }, - 'video-module': { - import: ['./modules/videoModule/index.js', './modules/videoModule/constants/ortb.js', './modules/videoModule/constants/enums.js'], - dependOn: 'prebid-core' } }; const selectedModules = new Set(helpers.getArgModules()); + function setDependency(dependencyName) { + if (entry[dependencyName]) { + return; + } + + const dependencyEntry = helpers.getDependencyEntry(dependencyName); + if (!dependencyEntry) { + return; + } + + entry[dependencyName] = dependencyEntry; + } + Object.entries(helpers.getModules()).forEach(([fn, mod]) => { if (selectedModules.size === 0 || selectedModules.has(mod)) { entry[mod] = { @@ -45,6 +54,7 @@ module.exports = { const extraDependencies = helpers.getDependencies(mod); if (extraDependencies) { + extraDependencies.forEach(dependency => setDependency(dependency)); entry[mod].dependOn = ['prebid-core'].concat(extraDependencies); } } From 56be36d8637bd8e5ab7348064e62054caa6ec11b Mon Sep 17 00:00:00 2001 From: Karim Mourra Date: Thu, 19 May 2022 12:58:12 +0200 Subject: [PATCH 10/13] moves video module to libraries --- .../videoModule/constants/enums.js | 0 .../videoModule/constants/events.js | 0 .../videoModule/constants/ortb.js | 0 .../videoModule/constants/vendorCodes.js | 0 {modules => libraries}/videoModule/coreVideo.js | 0 .../videoModule/gamAdServerSubmodule.js | 0 {modules => libraries}/videoModule/index.js | 0 .../videoModule/shared/parentModule.js | 0 {modules => libraries}/videoModule/shared/state.js | 0 .../videoModule/shared/vastXmlBuilder.js | 0 .../videoModule/shared/vastXmlEditor.js | 0 .../videoModule/videoImpressionVerifier.js | 0 modules/.submodules.json | 14 +++++++++++++- modules/jwplayerVideoProvider.js | 10 +++++----- modules/testVideoProvider.js | 10 +++++----- test/spec/modules/videoModule/coreVideo_spec.js | 2 +- test/spec/modules/videoModule/pbVideo_spec.js | 4 ++-- .../videoModule/shared/parentModule_spec.js | 2 +- test/spec/modules/videoModule/shared/state_spec.js | 2 +- .../videoModule/shared/vastXmlBuilder_spec.js | 2 +- .../videoModule/shared/vastXmlEditor_spec.js | 2 +- .../submodules/jwplayerVideoProvider_spec.js | 6 +++--- .../videoModule/videoImpressionVerifier_spec.js | 2 +- 23 files changed, 34 insertions(+), 22 deletions(-) rename {modules => libraries}/videoModule/constants/enums.js (100%) rename {modules => libraries}/videoModule/constants/events.js (100%) rename {modules => libraries}/videoModule/constants/ortb.js (100%) rename {modules => libraries}/videoModule/constants/vendorCodes.js (100%) rename {modules => libraries}/videoModule/coreVideo.js (100%) rename {modules => libraries}/videoModule/gamAdServerSubmodule.js (100%) rename {modules => libraries}/videoModule/index.js (100%) rename {modules => libraries}/videoModule/shared/parentModule.js (100%) rename {modules => libraries}/videoModule/shared/state.js (100%) rename {modules => libraries}/videoModule/shared/vastXmlBuilder.js (100%) rename {modules => libraries}/videoModule/shared/vastXmlEditor.js (100%) rename {modules => libraries}/videoModule/videoImpressionVerifier.js (100%) diff --git a/modules/videoModule/constants/enums.js b/libraries/videoModule/constants/enums.js similarity index 100% rename from modules/videoModule/constants/enums.js rename to libraries/videoModule/constants/enums.js diff --git a/modules/videoModule/constants/events.js b/libraries/videoModule/constants/events.js similarity index 100% rename from modules/videoModule/constants/events.js rename to libraries/videoModule/constants/events.js diff --git a/modules/videoModule/constants/ortb.js b/libraries/videoModule/constants/ortb.js similarity index 100% rename from modules/videoModule/constants/ortb.js rename to libraries/videoModule/constants/ortb.js diff --git a/modules/videoModule/constants/vendorCodes.js b/libraries/videoModule/constants/vendorCodes.js similarity index 100% rename from modules/videoModule/constants/vendorCodes.js rename to libraries/videoModule/constants/vendorCodes.js diff --git a/modules/videoModule/coreVideo.js b/libraries/videoModule/coreVideo.js similarity index 100% rename from modules/videoModule/coreVideo.js rename to libraries/videoModule/coreVideo.js diff --git a/modules/videoModule/gamAdServerSubmodule.js b/libraries/videoModule/gamAdServerSubmodule.js similarity index 100% rename from modules/videoModule/gamAdServerSubmodule.js rename to libraries/videoModule/gamAdServerSubmodule.js diff --git a/modules/videoModule/index.js b/libraries/videoModule/index.js similarity index 100% rename from modules/videoModule/index.js rename to libraries/videoModule/index.js diff --git a/modules/videoModule/shared/parentModule.js b/libraries/videoModule/shared/parentModule.js similarity index 100% rename from modules/videoModule/shared/parentModule.js rename to libraries/videoModule/shared/parentModule.js diff --git a/modules/videoModule/shared/state.js b/libraries/videoModule/shared/state.js similarity index 100% rename from modules/videoModule/shared/state.js rename to libraries/videoModule/shared/state.js diff --git a/modules/videoModule/shared/vastXmlBuilder.js b/libraries/videoModule/shared/vastXmlBuilder.js similarity index 100% rename from modules/videoModule/shared/vastXmlBuilder.js rename to libraries/videoModule/shared/vastXmlBuilder.js diff --git a/modules/videoModule/shared/vastXmlEditor.js b/libraries/videoModule/shared/vastXmlEditor.js similarity index 100% rename from modules/videoModule/shared/vastXmlEditor.js rename to libraries/videoModule/shared/vastXmlEditor.js diff --git a/modules/videoModule/videoImpressionVerifier.js b/libraries/videoModule/videoImpressionVerifier.js similarity index 100% rename from modules/videoModule/videoImpressionVerifier.js rename to libraries/videoModule/videoImpressionVerifier.js diff --git a/modules/.submodules.json b/modules/.submodules.json index 59bae2013d1..7d9f164be7f 100644 --- a/modules/.submodules.json +++ b/modules/.submodules.json @@ -69,5 +69,17 @@ "fpdModule": [ "enrichmentFpdModule", "validationFpdModule" - ] + ], + "libraries": { + "video": { + "files": [ + "./libraries/videoModule/index.js", "./libraries/videoModule/constants/ortb.js", "./libraries/videoModule/constants/enums.js" + ], + "dependants": [ + "jwplayerVideoProvider", + "testVideoProvider" + ] + + } + } } diff --git a/modules/jwplayerVideoProvider.js b/modules/jwplayerVideoProvider.js index 42a6dfaaa4d..f614356b59a 100644 --- a/modules/jwplayerVideoProvider.js +++ b/modules/jwplayerVideoProvider.js @@ -1,15 +1,15 @@ import { PROTOCOLS, API_FRAMEWORKS, VIDEO_MIME_TYPE, PLAYBACK_METHODS, PLACEMENT, VPAID_MIME_TYPE -} from './videoModule/constants/ortb.js'; -import { PLAYBACK_MODE } from './videoModule/constants/enums.js'; +} from '../libraries/videoModule/constants/ortb.js'; +import { PLAYBACK_MODE } from '../libraries/videoModule/constants/enums.js'; import { SETUP_COMPLETE, SETUP_FAILED, DESTROYED, AD_REQUEST, AD_BREAK_START, AD_LOADED, AD_STARTED, AD_IMPRESSION, AD_PLAY, AD_TIME, AD_PAUSE, AD_CLICK, AD_SKIPPED, AD_ERROR, AD_COMPLETE, AD_BREAK_END, PLAYLIST, PLAYBACK_REQUEST, AUTOSTART_BLOCKED, PLAY_ATTEMPT_FAILED, CONTENT_LOADED, PLAY, PAUSE, BUFFER, TIME, SEEK_START, SEEK_END, MUTE, VOLUME, RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST -} from './videoModule/constants/events.js'; -import stateFactory from './videoModule/shared/state.js'; -import { JWPLAYER_VENDOR } from './videoModule/constants/vendorCodes.js'; +} from '../libraries/videoModule/constants/events.js'; +import stateFactory from '../libraries/videoModule/shared/state.js'; +import { JWPLAYER_VENDOR } from '../libraries/videoModule/constants/vendorCodes.js'; import { submodule } from '../src/hook.js'; /** diff --git a/modules/testVideoProvider.js b/modules/testVideoProvider.js index 054a4c525a9..815f701c673 100644 --- a/modules/testVideoProvider.js +++ b/modules/testVideoProvider.js @@ -1,15 +1,15 @@ import { PROTOCOLS, API_FRAMEWORKS, VIDEO_MIME_TYPE, PLAYBACK_METHODS, PLACEMENT, VPAID_MIME_TYPE -} from './videoModule/constants/ortb.js'; -import { PLAYBACK_MODE } from './videoModule/constants/enums.js'; +} from '../libraries/videoModule/constants/ortb.js'; +import { PLAYBACK_MODE } from '../libraries/videoModule/constants/enums.js'; import { SETUP_COMPLETE, SETUP_FAILED, DESTROYED, AD_REQUEST, AD_BREAK_START, AD_LOADED, AD_STARTED, AD_IMPRESSION, AD_PLAY, AD_TIME, AD_PAUSE, AD_CLICK, AD_SKIPPED, AD_ERROR, AD_COMPLETE, AD_BREAK_END, PLAYLIST, PLAYBACK_REQUEST, AUTOSTART_BLOCKED, PLAY_ATTEMPT_FAILED, CONTENT_LOADED, PLAY, PAUSE, BUFFER, TIME, SEEK_START, SEEK_END, MUTE, VOLUME, RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST -} from './videoModule/constants/events.js'; -import stateFactory from './videoModule/shared/state.js'; -import { VIDEO_JS_VENDOR } from './videoModule/constants/vendorCodes.js'; +} from '../libraries/videoModule/constants/events.js'; +import stateFactory from '../libraries/videoModule/shared/state.js'; +import { VIDEO_JS_VENDOR } from '../libraries/videoModule/constants/vendorCodes.js'; import { submodule } from '../src/hook.js'; import {registerBidder} from '../src/adapters/bidderFactory.js'; diff --git a/test/spec/modules/videoModule/coreVideo_spec.js b/test/spec/modules/videoModule/coreVideo_spec.js index 40e424caf99..1832da0ca0c 100644 --- a/test/spec/modules/videoModule/coreVideo_spec.js +++ b/test/spec/modules/videoModule/coreVideo_spec.js @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { VideoCore } from 'modules/videoModule/coreVideo.js'; +import { VideoCore } from 'libraries/videoModule/coreVideo.js'; describe('Video Core', function () { const mockSubmodule = { diff --git a/test/spec/modules/videoModule/pbVideo_spec.js b/test/spec/modules/videoModule/pbVideo_spec.js index e0ffba2494b..2bfff31f79c 100644 --- a/test/spec/modules/videoModule/pbVideo_spec.js +++ b/test/spec/modules/videoModule/pbVideo_spec.js @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { PbVideo } from 'modules/videoModule/index.js'; +import { PbVideo } from 'libraries/videoModule/index.js'; import CONSTANTS from 'src/constants.json'; -import { AD_IMPRESSION, AD_ERROR, BID_IMPRESSION, BID_ERROR } from 'modules/videoModule/constants/events.js'; +import { AD_IMPRESSION, AD_ERROR, BID_IMPRESSION, BID_ERROR } from 'libraries/videoModule/constants/events.js'; let ortbParamsMock; let videoCoreMock; diff --git a/test/spec/modules/videoModule/shared/parentModule_spec.js b/test/spec/modules/videoModule/shared/parentModule_spec.js index c9f7e453689..d37f717d727 100644 --- a/test/spec/modules/videoModule/shared/parentModule_spec.js +++ b/test/spec/modules/videoModule/shared/parentModule_spec.js @@ -1,4 +1,4 @@ -import { SubmoduleBuilder, ParentModule } from 'modules/videoModule/shared/parentModule.js'; +import { SubmoduleBuilder, ParentModule } from 'libraries/videoModule/shared/parentModule.js'; import { expect } from 'chai'; describe('Parent Module', function() { diff --git a/test/spec/modules/videoModule/shared/state_spec.js b/test/spec/modules/videoModule/shared/state_spec.js index 6cce97ab0a0..f93878724c4 100644 --- a/test/spec/modules/videoModule/shared/state_spec.js +++ b/test/spec/modules/videoModule/shared/state_spec.js @@ -1,4 +1,4 @@ -import stateFactory from 'modules/videoModule/shared/state.js'; +import stateFactory from 'libraries/videoModule/shared/state.js'; import { expect } from 'chai'; describe('State', function () { diff --git a/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js b/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js index 1007e3898c2..fee4def5a1a 100644 --- a/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js +++ b/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js @@ -1,5 +1,5 @@ import { buildVastWrapper, getVastNode, getAdNode, getWrapperNode, getAdSystemNode, - getAdTagUriNode, getErrorNode, getImpressionNode } from 'modules/videoModule/shared/vastXmlBuilder.js'; + getAdTagUriNode, getErrorNode, getImpressionNode } from 'libraries/videoModule/shared/vastXmlBuilder.js'; import { expect } from 'chai'; describe('buildVastWrapper', function () { diff --git a/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js b/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js index 087ac93d7bc..e03644d4360 100644 --- a/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js +++ b/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js @@ -1,4 +1,4 @@ -import { vastXmlEditorFactory } from 'modules/videoModule/shared/vastXmlEditor.js'; +import { vastXmlEditorFactory } from 'libraries/videoModule/shared/vastXmlEditor.js'; import { expect } from 'chai'; describe('Vast XML Editor', function () { diff --git a/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js b/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js index bfaa7f398b8..2b6b7700ace 100644 --- a/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +++ b/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js @@ -8,13 +8,13 @@ import { import { PROTOCOLS, API_FRAMEWORKS, VIDEO_MIME_TYPE, PLAYBACK_METHODS, PLACEMENT, VPAID_MIME_TYPE -} from 'modules/videoModule/constants/ortb.js'; +} from 'libraries/videoModule/constants/ortb.js'; import { SETUP_COMPLETE, SETUP_FAILED, PLAY, AD_IMPRESSION, videoEvents -} from 'modules/videoModule/constants/events.js'; +} from 'libraries/videoModule/constants/events.js'; -import { PLAYBACK_MODE } from 'modules/videoModule/constants/enums.js'; +import { PLAYBACK_MODE } from 'libraries/videoModule/constants/enums.js'; function getPlayerMock() { return makePlayerFactoryMock({ diff --git a/test/spec/modules/videoModule/videoImpressionVerifier_spec.js b/test/spec/modules/videoModule/videoImpressionVerifier_spec.js index 58109219a37..40135ad2ab3 100644 --- a/test/spec/modules/videoModule/videoImpressionVerifier_spec.js +++ b/test/spec/modules/videoModule/videoImpressionVerifier_spec.js @@ -1,4 +1,4 @@ -import { baseImpressionVerifier, PB_PREFIX } from 'modules/videoModule/videoImpressionVerifier.js'; +import { baseImpressionVerifier, PB_PREFIX } from 'libraries/videoModule/videoImpressionVerifier.js'; let trackerMock; trackerMock = { From 72a19e4826b499ef495341a2402c28ae360811f1 Mon Sep 17 00:00:00 2001 From: Karim Mourra Date: Thu, 19 May 2022 16:45:20 +0200 Subject: [PATCH 11/13] makes video a library --- gulpHelpers.js | 23 ++- .../{videoModule => video}/constants/enums.js | 0 .../constants/events.js | 0 .../{videoModule => video}/constants/ortb.js | 0 .../constants/vendorCodes.js | 0 libraries/{videoModule => video}/coreVideo.js | 0 .../gamAdServerSubmodule.js | 0 libraries/{videoModule => video}/index.js | 0 .../shared/parentModule.js | 0 .../{videoModule => video}/shared/state.js | 0 .../shared/vastXmlBuilder.js | 0 .../shared/vastXmlEditor.js | 0 .../videoImpressionVerifier.js | 0 modules/.dependencies.json | 8 - modules/.dependencyEntries.json | 6 - modules/.submodules.json | 147 +++++++++--------- modules/jwplayerVideoProvider.js | 10 +- modules/testVideoProvider.js | 10 +- .../modules/videoModule/coreVideo_spec.js | 2 +- test/spec/modules/videoModule/pbVideo_spec.js | 4 +- .../videoModule/shared/parentModule_spec.js | 2 +- .../modules/videoModule/shared/state_spec.js | 2 +- .../videoModule/shared/vastXmlBuilder_spec.js | 2 +- .../videoModule/shared/vastXmlEditor_spec.js | 2 +- .../submodules/jwplayerVideoProvider_spec.js | 6 +- .../videoImpressionVerifier_spec.js | 2 +- webpack.conf.js | 23 +-- 27 files changed, 125 insertions(+), 124 deletions(-) rename libraries/{videoModule => video}/constants/enums.js (100%) rename libraries/{videoModule => video}/constants/events.js (100%) rename libraries/{videoModule => video}/constants/ortb.js (100%) rename libraries/{videoModule => video}/constants/vendorCodes.js (100%) rename libraries/{videoModule => video}/coreVideo.js (100%) rename libraries/{videoModule => video}/gamAdServerSubmodule.js (100%) rename libraries/{videoModule => video}/index.js (100%) rename libraries/{videoModule => video}/shared/parentModule.js (100%) rename libraries/{videoModule => video}/shared/state.js (100%) rename libraries/{videoModule => video}/shared/vastXmlBuilder.js (100%) rename libraries/{videoModule => video}/shared/vastXmlEditor.js (100%) rename libraries/{videoModule => video}/videoImpressionVerifier.js (100%) delete mode 100644 modules/.dependencies.json delete mode 100644 modules/.dependencyEntries.json diff --git a/gulpHelpers.js b/gulpHelpers.js index 5f3325b6991..964b24d5b04 100644 --- a/gulpHelpers.js +++ b/gulpHelpers.js @@ -6,9 +6,9 @@ const MANIFEST = 'package.json'; const through = require('through2'); const _ = require('lodash'); const gutil = require('gulp-util'); -const submodules = require('./modules/.submodules.json'); -const dependencies = require('./modules/.dependencies.json'); -const dependencyEntries = require('./modules/.dependencyEntries.json'); +const dependencyMap = require('./modules/.submodules.json'); +const submodules = dependencyMap.parentModules; +const libraries = dependencyMap.libraries; const MODULE_PATH = './modules'; const BUILD_PATH = './build/dist'; @@ -72,11 +72,20 @@ module.exports = { return modules; }, - getDependencies(moduleName) { - return dependencies[moduleName]; + getParentLibraries(moduleName) { + const libraryNames = []; + Object.keys(libraries).forEach(libraryName => { + const library = libraries[libraryName]; + if (library.dependants.includes(moduleName)) { + libraryNames.push(libraryName); + } + }); + return libraryNames; }, - getDependencyEntry(dependencyName) { - return dependencyEntries[dependencyName]; + getLibraryFiles(name) { + const library = libraries[name]; + const files = library.files.map(file => require.resolve(file, {paths: ['./libraries/' + name + '/']})); + return files; }, getModules: _.memoize(function(externalModules) { externalModules = externalModules || []; diff --git a/libraries/videoModule/constants/enums.js b/libraries/video/constants/enums.js similarity index 100% rename from libraries/videoModule/constants/enums.js rename to libraries/video/constants/enums.js diff --git a/libraries/videoModule/constants/events.js b/libraries/video/constants/events.js similarity index 100% rename from libraries/videoModule/constants/events.js rename to libraries/video/constants/events.js diff --git a/libraries/videoModule/constants/ortb.js b/libraries/video/constants/ortb.js similarity index 100% rename from libraries/videoModule/constants/ortb.js rename to libraries/video/constants/ortb.js diff --git a/libraries/videoModule/constants/vendorCodes.js b/libraries/video/constants/vendorCodes.js similarity index 100% rename from libraries/videoModule/constants/vendorCodes.js rename to libraries/video/constants/vendorCodes.js diff --git a/libraries/videoModule/coreVideo.js b/libraries/video/coreVideo.js similarity index 100% rename from libraries/videoModule/coreVideo.js rename to libraries/video/coreVideo.js diff --git a/libraries/videoModule/gamAdServerSubmodule.js b/libraries/video/gamAdServerSubmodule.js similarity index 100% rename from libraries/videoModule/gamAdServerSubmodule.js rename to libraries/video/gamAdServerSubmodule.js diff --git a/libraries/videoModule/index.js b/libraries/video/index.js similarity index 100% rename from libraries/videoModule/index.js rename to libraries/video/index.js diff --git a/libraries/videoModule/shared/parentModule.js b/libraries/video/shared/parentModule.js similarity index 100% rename from libraries/videoModule/shared/parentModule.js rename to libraries/video/shared/parentModule.js diff --git a/libraries/videoModule/shared/state.js b/libraries/video/shared/state.js similarity index 100% rename from libraries/videoModule/shared/state.js rename to libraries/video/shared/state.js diff --git a/libraries/videoModule/shared/vastXmlBuilder.js b/libraries/video/shared/vastXmlBuilder.js similarity index 100% rename from libraries/videoModule/shared/vastXmlBuilder.js rename to libraries/video/shared/vastXmlBuilder.js diff --git a/libraries/videoModule/shared/vastXmlEditor.js b/libraries/video/shared/vastXmlEditor.js similarity index 100% rename from libraries/videoModule/shared/vastXmlEditor.js rename to libraries/video/shared/vastXmlEditor.js diff --git a/libraries/videoModule/videoImpressionVerifier.js b/libraries/video/videoImpressionVerifier.js similarity index 100% rename from libraries/videoModule/videoImpressionVerifier.js rename to libraries/video/videoImpressionVerifier.js diff --git a/modules/.dependencies.json b/modules/.dependencies.json deleted file mode 100644 index 44643281836..00000000000 --- a/modules/.dependencies.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "jwplayerVideoProvider": [ - "video-module" - ], - "testVideoProvider": [ - "video-module" - ] -} diff --git a/modules/.dependencyEntries.json b/modules/.dependencyEntries.json deleted file mode 100644 index f53438da836..00000000000 --- a/modules/.dependencyEntries.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "video-module": { - "import": ["./modules/videoModule/index.js", "./modules/videoModule/constants/ortb.js", "./modules/videoModule/constants/enums.js"], - "dependOn": "prebid-core" - } -} diff --git a/modules/.submodules.json b/modules/.submodules.json index 7d9f164be7f..ddf46fa01df 100644 --- a/modules/.submodules.json +++ b/modules/.submodules.json @@ -1,85 +1,86 @@ { - "userId": [ - "33acrossIdSystem", - "admixerIdSystem", - "adtelligentIdSystem", - "akamaiDAPIdSystem", - "amxIdSystem", - "britepoolIdSystem", - "connectIdSystem", - "cpexIdSystem", - "criteoIdSystem", - "dacIdSystem", - "deepintentDpesIdSystem", - "dmdIdSystem", - "fabrickIdSystem", - "flocIdSystem", - "hadronIdSystem", - "haloIdSystem", - "id5IdSystem", - "ftrackIdSystem", - "identityLinkIdSystem", - "idxIdSystem", - "imuIdSystem", - "intentIqIdSystem", - "justIdSystem", - "kinessoIdSystem", - "liveIntentIdSystem", - "lotamePanoramaIdSystem", - "merkleIdSystem", - "mwOpenLinkIdSystem", - "naveggIdSystem", - "netIdSystem", - "nextrollIdSystem", - "novatiqIdSystem", - "parrableIdSystem", - "pubProvidedIdSystem", - "publinkIdSystem", - "quantcastIdSystem", - "sharedIdSystem", - "tapadIdSystem", - "trustpidSystem", - "uid2IdSystem", - "unifiedIdSystem", - "verizonMediaIdSystem", - "zeotapIdPlusIdSystem", - "adqueryIdSystem" - ], - "adpod": [ - "freeWheelAdserverVideo", - "dfpAdServerVideo" - ], - "rtdModule": [ - "airgridRtdProvider", - "browsiRtdProvider", - "dgkeywordRtdProvider", - "geoedgeRtdProvider", - "hadronRtdProvider", - "haloRtdProvider", - "iasRtdProvider", - "jwplayerRtdProvider", - "medianetRtdProvider", - "optimeraRtdProvider", - "permutiveRtdProvider", - "reconciliationRtdProvider", - "sirdataRtdProvider", - "timeoutRtdProvider", - "weboramaRtdProvider" - ], - "fpdModule": [ - "enrichmentFpdModule", - "validationFpdModule" - ], + "parentModules": { + "userId": [ + "33acrossIdSystem", + "admixerIdSystem", + "adtelligentIdSystem", + "akamaiDAPIdSystem", + "amxIdSystem", + "britepoolIdSystem", + "connectIdSystem", + "cpexIdSystem", + "criteoIdSystem", + "dacIdSystem", + "deepintentDpesIdSystem", + "dmdIdSystem", + "fabrickIdSystem", + "flocIdSystem", + "hadronIdSystem", + "haloIdSystem", + "id5IdSystem", + "ftrackIdSystem", + "identityLinkIdSystem", + "idxIdSystem", + "imuIdSystem", + "intentIqIdSystem", + "justIdSystem", + "kinessoIdSystem", + "liveIntentIdSystem", + "lotamePanoramaIdSystem", + "merkleIdSystem", + "mwOpenLinkIdSystem", + "naveggIdSystem", + "netIdSystem", + "nextrollIdSystem", + "novatiqIdSystem", + "parrableIdSystem", + "pubProvidedIdSystem", + "publinkIdSystem", + "quantcastIdSystem", + "sharedIdSystem", + "tapadIdSystem", + "trustpidSystem", + "uid2IdSystem", + "unifiedIdSystem", + "verizonMediaIdSystem", + "zeotapIdPlusIdSystem", + "adqueryIdSystem" + ], + "adpod": [ + "freeWheelAdserverVideo", + "dfpAdServerVideo" + ], + "rtdModule": [ + "airgridRtdProvider", + "browsiRtdProvider", + "dgkeywordRtdProvider", + "geoedgeRtdProvider", + "hadronRtdProvider", + "haloRtdProvider", + "iasRtdProvider", + "jwplayerRtdProvider", + "medianetRtdProvider", + "optimeraRtdProvider", + "permutiveRtdProvider", + "reconciliationRtdProvider", + "sirdataRtdProvider", + "timeoutRtdProvider", + "weboramaRtdProvider" + ], + "fpdModule": [ + "enrichmentFpdModule", + "validationFpdModule" + ] + }, "libraries": { "video": { "files": [ - "./libraries/videoModule/index.js", "./libraries/videoModule/constants/ortb.js", "./libraries/videoModule/constants/enums.js" + "./index.js", "./constants/ortb.js", "./constants/enums.js" ], "dependants": [ "jwplayerVideoProvider", "testVideoProvider" ] - } } } diff --git a/modules/jwplayerVideoProvider.js b/modules/jwplayerVideoProvider.js index f614356b59a..c51b4a0d8ba 100644 --- a/modules/jwplayerVideoProvider.js +++ b/modules/jwplayerVideoProvider.js @@ -1,15 +1,15 @@ import { PROTOCOLS, API_FRAMEWORKS, VIDEO_MIME_TYPE, PLAYBACK_METHODS, PLACEMENT, VPAID_MIME_TYPE -} from '../libraries/videoModule/constants/ortb.js'; -import { PLAYBACK_MODE } from '../libraries/videoModule/constants/enums.js'; +} from '../libraries/video/constants/ortb.js'; +import { PLAYBACK_MODE } from '../libraries/video/constants/enums.js'; import { SETUP_COMPLETE, SETUP_FAILED, DESTROYED, AD_REQUEST, AD_BREAK_START, AD_LOADED, AD_STARTED, AD_IMPRESSION, AD_PLAY, AD_TIME, AD_PAUSE, AD_CLICK, AD_SKIPPED, AD_ERROR, AD_COMPLETE, AD_BREAK_END, PLAYLIST, PLAYBACK_REQUEST, AUTOSTART_BLOCKED, PLAY_ATTEMPT_FAILED, CONTENT_LOADED, PLAY, PAUSE, BUFFER, TIME, SEEK_START, SEEK_END, MUTE, VOLUME, RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST -} from '../libraries/videoModule/constants/events.js'; -import stateFactory from '../libraries/videoModule/shared/state.js'; -import { JWPLAYER_VENDOR } from '../libraries/videoModule/constants/vendorCodes.js'; +} from '../libraries/video/constants/events.js'; +import stateFactory from '../libraries/video/shared/state.js'; +import { JWPLAYER_VENDOR } from '../libraries/video/constants/vendorCodes.js'; import { submodule } from '../src/hook.js'; /** diff --git a/modules/testVideoProvider.js b/modules/testVideoProvider.js index 815f701c673..3b3166ac8f9 100644 --- a/modules/testVideoProvider.js +++ b/modules/testVideoProvider.js @@ -1,15 +1,15 @@ import { PROTOCOLS, API_FRAMEWORKS, VIDEO_MIME_TYPE, PLAYBACK_METHODS, PLACEMENT, VPAID_MIME_TYPE -} from '../libraries/videoModule/constants/ortb.js'; -import { PLAYBACK_MODE } from '../libraries/videoModule/constants/enums.js'; +} from '../libraries/video/constants/ortb.js'; +import { PLAYBACK_MODE } from '../libraries/video/constants/enums.js'; import { SETUP_COMPLETE, SETUP_FAILED, DESTROYED, AD_REQUEST, AD_BREAK_START, AD_LOADED, AD_STARTED, AD_IMPRESSION, AD_PLAY, AD_TIME, AD_PAUSE, AD_CLICK, AD_SKIPPED, AD_ERROR, AD_COMPLETE, AD_BREAK_END, PLAYLIST, PLAYBACK_REQUEST, AUTOSTART_BLOCKED, PLAY_ATTEMPT_FAILED, CONTENT_LOADED, PLAY, PAUSE, BUFFER, TIME, SEEK_START, SEEK_END, MUTE, VOLUME, RENDITION_UPDATE, ERROR, COMPLETE, PLAYLIST_COMPLETE, FULLSCREEN, PLAYER_RESIZE, VIEWABLE, CAST -} from '../libraries/videoModule/constants/events.js'; -import stateFactory from '../libraries/videoModule/shared/state.js'; -import { VIDEO_JS_VENDOR } from '../libraries/videoModule/constants/vendorCodes.js'; +} from '../libraries/video/constants/events.js'; +import stateFactory from '../libraries/video/shared/state.js'; +import { VIDEO_JS_VENDOR } from '../libraries/video/constants/vendorCodes.js'; import { submodule } from '../src/hook.js'; import {registerBidder} from '../src/adapters/bidderFactory.js'; diff --git a/test/spec/modules/videoModule/coreVideo_spec.js b/test/spec/modules/videoModule/coreVideo_spec.js index 1832da0ca0c..4926c165af1 100644 --- a/test/spec/modules/videoModule/coreVideo_spec.js +++ b/test/spec/modules/videoModule/coreVideo_spec.js @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { VideoCore } from 'libraries/videoModule/coreVideo.js'; +import { VideoCore } from 'libraries/video/coreVideo.js'; describe('Video Core', function () { const mockSubmodule = { diff --git a/test/spec/modules/videoModule/pbVideo_spec.js b/test/spec/modules/videoModule/pbVideo_spec.js index 2bfff31f79c..da925c55c93 100644 --- a/test/spec/modules/videoModule/pbVideo_spec.js +++ b/test/spec/modules/videoModule/pbVideo_spec.js @@ -1,7 +1,7 @@ import { expect } from 'chai'; -import { PbVideo } from 'libraries/videoModule/index.js'; +import { PbVideo } from 'libraries/video/index.js'; import CONSTANTS from 'src/constants.json'; -import { AD_IMPRESSION, AD_ERROR, BID_IMPRESSION, BID_ERROR } from 'libraries/videoModule/constants/events.js'; +import { AD_IMPRESSION, AD_ERROR, BID_IMPRESSION, BID_ERROR } from 'libraries/video/constants/events.js'; let ortbParamsMock; let videoCoreMock; diff --git a/test/spec/modules/videoModule/shared/parentModule_spec.js b/test/spec/modules/videoModule/shared/parentModule_spec.js index d37f717d727..1e8e7fda380 100644 --- a/test/spec/modules/videoModule/shared/parentModule_spec.js +++ b/test/spec/modules/videoModule/shared/parentModule_spec.js @@ -1,4 +1,4 @@ -import { SubmoduleBuilder, ParentModule } from 'libraries/videoModule/shared/parentModule.js'; +import { SubmoduleBuilder, ParentModule } from 'libraries/video/shared/parentModule.js'; import { expect } from 'chai'; describe('Parent Module', function() { diff --git a/test/spec/modules/videoModule/shared/state_spec.js b/test/spec/modules/videoModule/shared/state_spec.js index f93878724c4..bbd0a35b57e 100644 --- a/test/spec/modules/videoModule/shared/state_spec.js +++ b/test/spec/modules/videoModule/shared/state_spec.js @@ -1,4 +1,4 @@ -import stateFactory from 'libraries/videoModule/shared/state.js'; +import stateFactory from 'libraries/video/shared/state.js'; import { expect } from 'chai'; describe('State', function () { diff --git a/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js b/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js index fee4def5a1a..2c67b898a53 100644 --- a/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js +++ b/test/spec/modules/videoModule/shared/vastXmlBuilder_spec.js @@ -1,5 +1,5 @@ import { buildVastWrapper, getVastNode, getAdNode, getWrapperNode, getAdSystemNode, - getAdTagUriNode, getErrorNode, getImpressionNode } from 'libraries/videoModule/shared/vastXmlBuilder.js'; + getAdTagUriNode, getErrorNode, getImpressionNode } from 'libraries/video/shared/vastXmlBuilder.js'; import { expect } from 'chai'; describe('buildVastWrapper', function () { diff --git a/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js b/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js index e03644d4360..2304b2f2833 100644 --- a/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js +++ b/test/spec/modules/videoModule/shared/vastXmlEditor_spec.js @@ -1,4 +1,4 @@ -import { vastXmlEditorFactory } from 'libraries/videoModule/shared/vastXmlEditor.js'; +import { vastXmlEditorFactory } from 'libraries/video/shared/vastXmlEditor.js'; import { expect } from 'chai'; describe('Vast XML Editor', function () { diff --git a/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js b/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js index 2b6b7700ace..0a1d34679da 100644 --- a/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +++ b/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js @@ -8,13 +8,13 @@ import { import { PROTOCOLS, API_FRAMEWORKS, VIDEO_MIME_TYPE, PLAYBACK_METHODS, PLACEMENT, VPAID_MIME_TYPE -} from 'libraries/videoModule/constants/ortb.js'; +} from 'libraries/video/constants/ortb.js'; import { SETUP_COMPLETE, SETUP_FAILED, PLAY, AD_IMPRESSION, videoEvents -} from 'libraries/videoModule/constants/events.js'; +} from 'libraries/video/constants/events.js'; -import { PLAYBACK_MODE } from 'libraries/videoModule/constants/enums.js'; +import { PLAYBACK_MODE } from 'libraries/video/constants/enums.js'; function getPlayerMock() { return makePlayerFactoryMock({ diff --git a/test/spec/modules/videoModule/videoImpressionVerifier_spec.js b/test/spec/modules/videoModule/videoImpressionVerifier_spec.js index 40135ad2ab3..cfce7933895 100644 --- a/test/spec/modules/videoModule/videoImpressionVerifier_spec.js +++ b/test/spec/modules/videoModule/videoImpressionVerifier_spec.js @@ -1,4 +1,4 @@ -import { baseImpressionVerifier, PB_PREFIX } from 'libraries/videoModule/videoImpressionVerifier.js'; +import { baseImpressionVerifier, PB_PREFIX } from 'libraries/video/videoImpressionVerifier.js'; let trackerMock; trackerMock = { diff --git a/webpack.conf.js b/webpack.conf.js index 65f82075d10..458c87fd53b 100644 --- a/webpack.conf.js +++ b/webpack.conf.js @@ -32,17 +32,22 @@ module.exports = { }; const selectedModules = new Set(helpers.getArgModules()); - function setDependency(dependencyName) { - if (entry[dependencyName]) { + function setLibraryDependency(libraryName) { + if (entry[libraryName]) { return; } - const dependencyEntry = helpers.getDependencyEntry(dependencyName); - if (!dependencyEntry) { + const libraryFiles = helpers.getLibraryFiles(libraryName); + if (!libraryFiles) { return; } - entry[dependencyName] = dependencyEntry; + const libraryEntry = { + import: libraryFiles, + dependOn: 'prebid-core' + }; + + entry[libraryName] = libraryEntry; } Object.entries(helpers.getModules()).forEach(([fn, mod]) => { @@ -52,10 +57,10 @@ module.exports = { dependOn: 'prebid-core' }; - const extraDependencies = helpers.getDependencies(mod); - if (extraDependencies) { - extraDependencies.forEach(dependency => setDependency(dependency)); - entry[mod].dependOn = ['prebid-core'].concat(extraDependencies); + const libraries = helpers.getParentLibraries(mod); + if (libraries.length) { + libraries.forEach(libraryName => setLibraryDependency(libraryName)); + entry[mod].dependOn = ['prebid-core'].concat(libraries); } } }); From a352a28ba80b647f999611bb54ebcb37574261f5 Mon Sep 17 00:00:00 2001 From: Karim Mourra Date: Thu, 26 May 2022 16:22:10 -0400 Subject: [PATCH 12/13] supports bundling --- gulpHelpers.js | 48 +++++++++++++++++++++++++++++++++--------------- gulpfile.js | 1 + 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/gulpHelpers.js b/gulpHelpers.js index 964b24d5b04..f33f1450fa0 100644 --- a/gulpHelpers.js +++ b/gulpHelpers.js @@ -11,6 +11,7 @@ const submodules = dependencyMap.parentModules; const libraries = dependencyMap.libraries; const MODULE_PATH = './modules'; +const LIBRARY_PATH = './libraries'; const BUILD_PATH = './build/dist'; const DEV_PATH = './build/dev'; const ANALYTICS_PATH = '../analytics'; @@ -70,6 +71,12 @@ module.exports = { } }); + Object.keys(libraries).forEach(library => { + if (!modules.includes(library) && modules.some(module => libraries[library].dependants.includes(module))) { + modules.unshift(library); + } + }); + return modules; }, getParentLibraries(moduleName) { @@ -91,33 +98,44 @@ module.exports = { externalModules = externalModules || []; var internalModules; try { + var getInternalModules = function(absolutePath) { + return fs.readdirSync(absolutePath) + .filter(file => (/^[^\.]+(\.js)?$/).test(file)) + .reduce((memo, file) => { + var moduleName = file.split(new RegExp('[.\\' + path.sep + ']'))[0]; + var modulePath = path.join(absolutePath, file); + if (fs.lstatSync(modulePath).isDirectory()) { + modulePath = path.join(modulePath, 'index.js') + } + if (fs.existsSync(modulePath)) { + memo[modulePath] = moduleName; + } + return memo; + }, {}); + }; + var absoluteModulePath = path.join(__dirname, MODULE_PATH); - internalModules = fs.readdirSync(absoluteModulePath) - .filter(file => (/^[^\.]+(\.js)?$/).test(file)) - .reduce((memo, file) => { - var moduleName = file.split(new RegExp('[.\\' + path.sep + ']'))[0]; - var modulePath = path.join(absoluteModulePath, file); - if (fs.lstatSync(modulePath).isDirectory()) { - modulePath = path.join(modulePath, 'index.js') - } - if (fs.existsSync(modulePath)) { - memo[modulePath] = moduleName; - } - return memo; - }, {}); + var absoluteLibraryPath = path.join(__dirname, LIBRARY_PATH); + + internalModules = getInternalModules(absoluteModulePath); + var internalLibraries = getInternalModules(absoluteLibraryPath); + Object.assign(internalModules, internalLibraries); } catch (err) { internalModules = {}; } return Object.assign(externalModules.reduce((memo, module) => { try { // prefer internal project modules before looking at project dependencies - var modulePath = require.resolve(module, {paths: ['./modules']}); - if (modulePath === '') modulePath = require.resolve(module); + var modulePath = require.resolve(module, {paths: [MODULE_PATH, LIBRARY_PATH]}); + if (modulePath === '') { + modulePath = require.resolve(module); + } memo[modulePath] = module; } catch (err) { // do something } + return memo; }, internalModules)); }), diff --git a/gulpfile.js b/gulpfile.js index ff49436384b..6abc40f11f5 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -73,6 +73,7 @@ function lint(done) { return gulp.src([ 'src/**/*.js', 'modules/**/*.js', + 'libraries/**/*.js', 'test/**/*.js', 'plugins/**/*.js', '!plugins/**/node_modules/**', From 019fd2d5060fceccfda993226b04c68d94217366 Mon Sep 17 00:00:00 2001 From: Karim Mourra Date: Thu, 26 May 2022 16:41:09 -0400 Subject: [PATCH 13/13] removes redundant code --- gulpHelpers.js | 3 +++ webpack.conf.js | 30 +++++++++--------------------- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/gulpHelpers.js b/gulpHelpers.js index f33f1450fa0..0e44875434f 100644 --- a/gulpHelpers.js +++ b/gulpHelpers.js @@ -94,6 +94,9 @@ module.exports = { const files = library.files.map(file => require.resolve(file, {paths: ['./libraries/' + name + '/']})); return files; }, + isLibrary(name) { + return !!libraries[name]; + }, getModules: _.memoize(function(externalModules) { externalModules = externalModules || []; var internalModules; diff --git a/webpack.conf.js b/webpack.conf.js index 458c87fd53b..f849f71a0fb 100644 --- a/webpack.conf.js +++ b/webpack.conf.js @@ -32,36 +32,24 @@ module.exports = { }; const selectedModules = new Set(helpers.getArgModules()); - function setLibraryDependency(libraryName) { - if (entry[libraryName]) { - return; - } - - const libraryFiles = helpers.getLibraryFiles(libraryName); - if (!libraryFiles) { - return; - } - - const libraryEntry = { - import: libraryFiles, - dependOn: 'prebid-core' - }; - - entry[libraryName] = libraryEntry; - } - Object.entries(helpers.getModules()).forEach(([fn, mod]) => { if (selectedModules.size === 0 || selectedModules.has(mod)) { - entry[mod] = { + const moduleEntry = { import: fn, dependOn: 'prebid-core' }; + if (helpers.isLibrary(mod)) { + const libraryFiles = helpers.getLibraryFiles(mod); + moduleEntry.import = libraryFiles || moduleEntry.import; + } + const libraries = helpers.getParentLibraries(mod); if (libraries.length) { - libraries.forEach(libraryName => setLibraryDependency(libraryName)); - entry[mod].dependOn = ['prebid-core'].concat(libraries); + moduleEntry.dependOn = ['prebid-core'].concat(libraries); } + + entry[mod] = moduleEntry; } }); return entry;