Skip to content

Commit 4f45f15

Browse files
authored
Multiple modules: decouple GVL IDs from storage access control (#9736)
* Core: allow restriction of cookies / localStorage through `bidderSettings.*.storageAllowed` * Add test cases * Remove gvlid param from storage manager logic * Refactor every invocation of `getStorageManager` * GVL ID registry * Refactor gdprEnforcement gvlid lookup * fix lint * Remove empty file * Undo #9728 for realVu * Fix typo
1 parent 7ea38f1 commit 4f45f15

File tree

108 files changed

+685
-488
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

108 files changed

+685
-488
lines changed

modules/adagioBidAdapter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ const SUPPORTED_MEDIA_TYPES = [BANNER, NATIVE, VIDEO];
4343
const ADAGIO_TAG_URL = 'https://script.4dex.io/localstore.js';
4444
const ADAGIO_LOCALSTORAGE_KEY = 'adagioScript';
4545
const GVLID = 617;
46-
export const storage = getStorageManager({gvlid: GVLID, bidderCode: BIDDER_CODE});
46+
export const storage = getStorageManager({bidderCode: BIDDER_CODE});
4747
export const RENDERER_URL = 'https://script.4dex.io/outstream-player.js';
4848
const MAX_SESS_DURATION = 30 * 60 * 1000;
4949
const ADAGIO_PUBKEY = 'AL16XT44Sfp+8SHVF1UdC7hydPSMVLMhsYknKDdwqq+0ToDSJrP0+Qh0ki9JJI2uYm/6VEYo8TJED9WfMkiJ4vf02CW3RvSWwc35bif2SK1L8Nn/GfFYr/2/GG/Rm0vUsv+vBHky6nuuYls20Og0HDhMgaOlXoQ/cxMuiy5QSktp';

modules/adkernelAdnAnalyticsAdapter.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ import { logError, parseUrl, _each } from '../src/utils.js';
55
import {ajax} from '../src/ajax.js';
66
import {getStorageManager} from '../src/storageManager.js';
77
import {config} from '../src/config.js';
8+
import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
89

10+
const MODULE_CODE = 'adkernelAdn';
911
const GVLID = 14;
1012
const ANALYTICS_VERSION = '1.0.2';
1113
const DEFAULT_QUEUE_TIMEOUT = 4000;
1214
const DEFAULT_HOST = 'tag.adkernel.com';
13-
const storageObj = getStorageManager({gvlid: GVLID});
15+
const storageObj = getStorageManager({moduleType: MODULE_TYPE_ANALYTICS, moduleName: MODULE_CODE});
1416

1517
const ADK_HB_EVENTS = {
1618
AUCTION_INIT: 'auctionInit',
@@ -104,7 +106,7 @@ analyticsAdapter.enableAnalytics = (config) => {
104106

105107
adapterManager.registerAnalyticsAdapter({
106108
adapter: analyticsAdapter,
107-
code: 'adkernelAdn',
109+
code: MODULE_CODE,
108110
gvlid: GVLID
109111
});
110112

modules/admixerIdSystem.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,18 @@ import { logError, logInfo } from '../src/utils.js'
99
import { ajax } from '../src/ajax.js';
1010
import { submodule } from '../src/hook.js';
1111
import {getStorageManager} from '../src/storageManager.js';
12+
import {MODULE_TYPE_UID} from '../src/activities/modules.js';
1213

13-
export const storage = getStorageManager();
14+
const NAME = 'admixerId';
15+
export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: NAME});
1416

1517
/** @type {Submodule} */
1618
export const admixerIdSubmodule = {
1719
/**
1820
* used to link submodule with config
1921
* @type {string}
2022
*/
21-
name: 'admixerId',
23+
name: NAME,
2224
/**
2325
* used to specify vendor id
2426
* @type {number}

modules/adnuntiusBidAdapter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ const getSegmentsFromOrtb = function (ortb2) {
5555
// }
5656

5757
const handleMeta = function () {
58-
const storage = getStorageManager({ gvlid: GVLID, bidderCode: BIDDER_CODE })
58+
const storage = getStorageManager({ bidderCode: BIDDER_CODE })
5959
let adnMeta = null
6060
if (storage.localStorageIsEnabled()) {
6161
adnMeta = JSON.parse(storage.getDataFromLocalStorage('adn.metaData'))

modules/adqueryBidAdapter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const ADQUERY_USER_SYNC_DOMAIN = ADQUERY_BIDDER_DOMAIN_PROTOCOL + '://' + ADQUER
1111
const ADQUERY_DEFAULT_CURRENCY = 'PLN';
1212
const ADQUERY_NET_REVENUE = true;
1313
const ADQUERY_TTL = 360;
14-
const storage = getStorageManager({gvlid: ADQUERY_GVLID, bidderCode: ADQUERY_BIDDER_CODE});
14+
const storage = getStorageManager({bidderCode: ADQUERY_BIDDER_CODE});
1515

1616
/** @type {BidderSpec} */
1717
export const spec = {

modules/adqueryIdSystem.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ import {ajax} from '../src/ajax.js';
99
import {getStorageManager} from '../src/storageManager.js';
1010
import {submodule} from '../src/hook.js';
1111
import { isFn, isStr, isPlainObject, logError } from '../src/utils.js';
12+
import {MODULE_TYPE_UID} from '../src/activities/modules.js';
1213

1314
const MODULE_NAME = 'qid';
1415
const AU_GVLID = 902;
1516

16-
export const storage = getStorageManager({gvlid: AU_GVLID, moduleName: 'qid'});
17+
export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: 'qid'});
1718

1819
/**
1920
* Param or default.

modules/adriverIdSystem.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88
import { logError, isPlainObject } from '../src/utils.js'
99
import { ajax } from '../src/ajax.js';
1010
import { submodule } from '../src/hook.js';
11-
import { getStorageManager } from '../src/storageManager.js';
11+
import {getStorageManager} from '../src/storageManager.js';
12+
import {MODULE_TYPE_UID} from '../src/activities/modules.js';
1213

1314
const MODULE_NAME = 'adriverId';
1415

15-
export const storage = getStorageManager();
16+
export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME});
1617

1718
/** @type {Submodule} */
1819
export const adriverIdSubmodule = {

modules/airgridRtdProvider.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,16 @@ import {
1212
deepAccess,
1313
} from '../src/utils.js';
1414
import { getGlobal } from '../src/prebidGlobal.js';
15-
import { getStorageManager } from '../src/storageManager.js';
15+
import {getStorageManager} from '../src/storageManager.js';
16+
import {MODULE_TYPE_RTD} from '../src/activities/modules.js';
1617

1718
const MODULE_NAME = 'realTimeData';
1819
const SUBMODULE_NAME = 'airgrid';
1920
const AG_TCF_ID = 782;
2021
export const AG_AUDIENCE_IDS_KEY = 'edkt_matched_audience_ids';
2122

2223
export const storage = getStorageManager({
23-
gvlid: AG_TCF_ID,
24+
moduleType: MODULE_TYPE_RTD,
2425
moduleName: SUBMODULE_NAME,
2526
});
2627

@@ -154,6 +155,7 @@ export const airgridSubmodule = {
154155
name: SUBMODULE_NAME,
155156
init: init,
156157
getBidRequestData: passAudiencesToBidders,
158+
gvlid: AG_TCF_ID
157159
};
158160

159161
submodule(MODULE_NAME, airgridSubmodule);

modules/akamaiDapRtdProvider.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {getStorageManager} from '../src/storageManager.js';
1010
import {submodule} from '../src/hook.js';
1111
import {isPlainObject, mergeDeep, logMessage, logInfo, logError} from '../src/utils.js';
1212
import { loadExternalScript } from '../src/adloader.js';
13+
import {MODULE_TYPE_RTD} from '../src/activities/modules.js';
1314

1415
const MODULE_NAME = 'realTimeData';
1516
const SUBMODULE_NAME = 'dap';
@@ -23,7 +24,7 @@ export const DAP_DEFAULT_TOKEN_TTL = 3600; // in seconds
2324
export const DAP_MAX_RETRY_TOKENIZE = 1;
2425
export const DAP_CLIENT_ENTROPY = 'dap_client_entropy'
2526

26-
export const storage = getStorageManager({gvlid: null, moduleName: SUBMODULE_NAME});
27+
export const storage = getStorageManager({moduleType: MODULE_TYPE_RTD, moduleName: SUBMODULE_NAME});
2728
let dapRetryTokenize = 0;
2829

2930
/**

modules/amxBidAdapter.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
import { registerBidder } from '../src/adapters/bidderFactory.js';
2-
import { BANNER, VIDEO } from '../src/mediaTypes.js';
1+
import {registerBidder} from '../src/adapters/bidderFactory.js';
2+
import {BANNER, VIDEO} from '../src/mediaTypes.js';
33
import {
4-
parseUrl,
5-
deepAccess,
64
_each,
5+
deepAccess,
76
formatQS,
87
getUniqueIdentifierStr,
9-
triggerPixel,
8+
isArray,
109
isFn,
1110
logError,
12-
isArray,
11+
parseUrl,
12+
triggerPixel,
1313
} from '../src/utils.js';
14-
import { config } from '../src/config.js';
15-
import { getStorageManager } from '../src/storageManager.js';
14+
import {config} from '../src/config.js';
15+
import {getStorageManager} from '../src/storageManager.js';
1616

1717
const BIDDER_CODE = 'amx';
18-
const storage = getStorageManager({ gvlid: 737, bidderCode: BIDDER_CODE });
18+
const storage = getStorageManager({ bidderCode: BIDDER_CODE });
1919
const SIMPLE_TLD_TEST = /\.com?\.\w{2,4}$/;
2020
const DEFAULT_ENDPOINT = 'https://prebid.a-mo.net/a/c';
2121
const VERSION = 'pba1.3.2';

modules/appnexusBidAdapter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ const SCRIPT_TAG_START = '<script';
9494
const VIEWABILITY_URL_START = /\/\/cdn\.adnxs\.com\/v|\/\/cdn\.adnxs\-simple\.com\/v/;
9595
const VIEWABILITY_FILE_NAME = 'trk.js';
9696
const GVLID = 32;
97-
const storage = getStorageManager({gvlid: GVLID, bidderCode: BIDDER_CODE});
97+
const storage = getStorageManager({bidderCode: BIDDER_CODE});
9898

9999
export const spec = {
100100
code: BIDDER_CODE,

modules/apstreamBidAdapter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const CONSTANTS = {
99
BIDDER_CODE: 'apstream',
1010
GVLID: 394
1111
};
12-
const storage = getStorageManager({gvlid: CONSTANTS.GVLID, bidderCode: CONSTANTS.BIDDER_CODE});
12+
const storage = getStorageManager({bidderCode: CONSTANTS.BIDDER_CODE});
1313

1414
var dsuModule = (function() {
1515
'use strict';

modules/atsAnalyticsAdapter.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import {ajax} from '../src/ajax.js';
66
import {getStorageManager} from '../src/storageManager.js';
77
import {getGlobal} from '../src/prebidGlobal.js';
88

9-
export const storage = getStorageManager();
9+
import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
10+
const MODULE_CODE = 'atsAnalytics';
11+
export const storage = getStorageManager({moduleType: MODULE_TYPE_ANALYTICS, moduleName: MODULE_CODE});
1012

1113
/**
1214
* Analytics adapter for - https://liveramp.com
@@ -399,7 +401,7 @@ atsAnalyticsAdapter.callHandler = function (evtype, args) {
399401

400402
adaptermanager.registerAnalyticsAdapter({
401403
adapter: atsAnalyticsAdapter,
402-
code: 'atsAnalytics',
404+
code: MODULE_CODE,
403405
gvlid: 97
404406
});
405407

modules/blueconicRtdProvider.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@
99
import {getStorageManager} from '../src/storageManager.js';
1010
import {submodule} from '../src/hook.js';
1111
import {mergeDeep, isPlainObject, logMessage, logError} from '../src/utils.js';
12+
import {MODULE_TYPE_RTD} from '../src/activities/modules.js';
1213

1314
const MODULE_NAME = 'realTimeData';
1415
const SUBMODULE_NAME = 'blueconic';
1516

1617
export const RTD_LOCAL_NAME = 'bcPrebidData';
1718

18-
export const storage = getStorageManager({moduleName: SUBMODULE_NAME});
19+
export const storage = getStorageManager({moduleType: MODULE_TYPE_RTD, moduleName: SUBMODULE_NAME});
1920

2021
/**
2122
* Try parsing stringified array of data.

modules/browsiRtdProvider.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ import {find, includes} from '../src/polyfill.js';
2424
import {getGlobal} from '../src/prebidGlobal.js';
2525
import * as events from '../src/events.js';
2626
import CONSTANTS from '../src/constants.json';
27+
import {MODULE_TYPE_RTD} from '../src/activities/modules.js';
28+
const MODULE_NAME = 'browsi';
2729

28-
const storage = getStorageManager();
30+
const storage = getStorageManager({moduleType: MODULE_TYPE_RTD, moduleName: MODULE_NAME});
2931

3032
/** @type {ModuleParams} */
3133
let _moduleParams = {};
@@ -336,7 +338,7 @@ export const browsiSubmodule = {
336338
* used to link submodule with realTimeData
337339
* @type {string}
338340
*/
339-
name: 'browsi',
341+
name: MODULE_NAME,
340342
/**
341343
* get data and send back to realTimeData module
342344
* @function

modules/byDataAnalyticsAdapter.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ import enc from 'crypto-js/enc-utf8';
55
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
66
import CONSTANTS from '../src/constants.json';
77
import adapterManager from '../src/adapterManager.js';
8-
import { getStorageManager } from '../src/storageManager.js';
8+
import {getStorageManager} from '../src/storageManager.js';
99
import { auctionManager } from '../src/auctionManager.js';
1010
import { ajax } from '../src/ajax.js';
11+
import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
1112

1213
const versionCode = '4.4.1'
1314
const secretKey = 'bydata@123456'
@@ -16,7 +17,9 @@ const DEFAULT_EVENT_URL = 'https://pbjs-stream.bydata.com/topics/prebid'
1617
const analyticsType = 'endpoint'
1718
const isBydata = isKeyInUrl('bydata_debug')
1819
const adunitsMap = {}
19-
const storage = getStorageManager();
20+
const MODULE_CODE = 'bydata';
21+
const storage = getStorageManager({moduleType: MODULE_TYPE_ANALYTICS, moduleName: MODULE_CODE});
22+
2023
let initOptions = {}
2124
var payload = {}
2225
var winPayload = {}
@@ -391,7 +394,7 @@ function sendDataOnKf(dataObj) {
391394

392395
adapterManager.registerAnalyticsAdapter({
393396
adapter: ascAdapter,
394-
code: 'bydata'
397+
code: MODULE_CODE,
395398
});
396399

397400
function _logInfo(message, meta) {

modules/criteoBidAdapter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const BIDDER_CODE = 'criteo';
1616
const CDB_ENDPOINT = 'https://bidder.criteo.com/cdb';
1717
const PROFILE_ID_INLINE = 207;
1818
export const PROFILE_ID_PUBLISHERTAG = 185;
19-
export const storage = getStorageManager({ gvlid: GVLID, bidderCode: BIDDER_CODE });
19+
export const storage = getStorageManager({ bidderCode: BIDDER_CODE });
2020
const LOG_PREFIX = 'Criteo: ';
2121

2222
/*

modules/criteoIdSystem.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ import { timestamp, parseUrl, triggerPixel, logError } from '../src/utils.js';
99
import { ajax } from '../src/ajax.js';
1010
import { getRefererInfo } from '../src/refererDetection.js';
1111
import { submodule } from '../src/hook.js';
12-
import { getStorageManager } from '../src/storageManager.js';
12+
import {getStorageManager} from '../src/storageManager.js';
13+
import {MODULE_TYPE_UID} from '../src/activities/modules.js';
1314

1415
const gvlid = 91;
1516
const bidderCode = 'criteo';
16-
export const storage = getStorageManager({ gvlid: gvlid, moduleName: bidderCode });
17+
export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: bidderCode});
1718

1819
const bididStorageKey = 'cto_bidid';
1920
const bundleStorageKey = 'cto_bundle';

modules/czechAdIdSystem.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66
*/
77

88
import { submodule } from '../src/hook.js'
9-
import { getStorageManager } from '../src/storageManager.js'
9+
import {getStorageManager} from '../src/storageManager.js';
10+
import {MODULE_TYPE_UID} from '../src/activities/modules.js';
1011

1112
// Returns StorageManager
12-
export const storage = getStorageManager({ gvlid: 570, moduleName: 'czechAdId' })
13+
export const storage = getStorageManager({ moduleType: MODULE_TYPE_UID, moduleName: 'czechAdId' })
1314

1415
// Returns the id string from either cookie or localstorage
1516
const readId = () => { return storage.getCookie('czaid') || storage.getDataFromLocalStorage('czaid') }

modules/dacIdSystem.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ import {
1919
import {
2020
getStorageManager
2121
} from '../src/storageManager.js';
22-
23-
export const storage = getStorageManager();
22+
import {MODULE_TYPE_UID} from '../src/activities/modules.js';
23+
const MODULE_NAME = 'dacId';
24+
export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME});
2425

2526
export const FUUID_COOKIE_NAME = '_a1_f';
2627
export const AONEID_COOKIE_NAME = '_a1_d';
@@ -116,7 +117,7 @@ export const dacIdSystemSubmodule = {
116117
* used to link submodule with config
117118
* @type {string}
118119
*/
119-
name: 'dacId',
120+
name: MODULE_NAME,
120121

121122
/**
122123
* decode the stored id value for passing to bid requests

modules/deepintentDpesIdSystem.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66
*/
77

88
import { submodule } from '../src/hook.js';
9-
import { getStorageManager } from '../src/storageManager.js';
9+
import {getStorageManager} from '../src/storageManager.js';
10+
import {MODULE_TYPE_UID} from '../src/activities/modules.js';
1011

1112
const MODULE_NAME = 'deepintentId';
12-
export const storage = getStorageManager({gvlid: null, moduleName: MODULE_NAME});
13+
export const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME});
1314

1415
/** @type {Submodule} */
1516
export const deepintentDpesSubmodule = {

modules/discoveryBidAdapter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { BANNER, NATIVE } from '../src/mediaTypes.js';
66
const BIDDER_CODE = 'discovery';
77
const ENDPOINT_URL = 'https://rtb-jp.mediago.io/api/bid?tn=';
88
const TIME_TO_LIVE = 500;
9-
const storage = getStorageManager();
9+
const storage = getStorageManager({bidderCode: BIDDER_CODE});
1010
let globals = {};
1111
let itemMaps = {};
1212
const MEDIATYPE = [BANNER, NATIVE];

modules/fintezaAnalyticsAdapter.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ import { parseUrl, logError } from '../src/utils.js';
22
import { ajax } from '../src/ajax.js';
33
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
44
import adapterManager from '../src/adapterManager.js';
5-
import { getStorageManager } from '../src/storageManager.js';
5+
import {getStorageManager} from '../src/storageManager.js';
66
import CONSTANTS from '../src/constants.json';
7+
import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
78

8-
const storage = getStorageManager();
9+
const MODULE_CODE = 'finteza';
10+
const storage = getStorageManager({moduleType: MODULE_TYPE_ANALYTICS, moduleName: MODULE_CODE});
911

1012
const ANALYTICS_TYPE = 'endpoint';
1113
const FINTEZA_HOST = 'https://content.mql5.com/tr';
@@ -439,7 +441,7 @@ fntzAnalyticsAdapter.enableAnalytics = function (config) {
439441

440442
adapterManager.registerAnalyticsAdapter({
441443
adapter: fntzAnalyticsAdapter,
442-
code: 'finteza'
444+
code: MODULE_CODE,
443445
});
444446

445447
export default fntzAnalyticsAdapter;

0 commit comments

Comments
 (0)