@blotoutio/edgetag-sdk-js 0.6.6 → 0.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/index.cjs +52 -13
  2. package/index.esm.js +52 -13
  3. package/package.json +1 -1
package/index.cjs CHANGED
@@ -43,7 +43,6 @@ function __awaiter(thisArg, _arguments, P, generator) {
43
43
 
44
44
  const tagStorage = 'edgeTag';
45
45
  const consentKey = 'consent';
46
- const providersKey = 'providers';
47
46
  const keyPrefix = `_worker`;
48
47
 
49
48
  const initKey = `${keyPrefix}Store`;
@@ -208,9 +207,10 @@ const getKeysURL = () => {
208
207
  return generateUrl(`/keys`);
209
208
  };
210
209
 
210
+ let allowedProvider = [];
211
211
  let initialized = false;
212
212
  let consentDisabled = false;
213
- const providers = {};
213
+ const providersPackages = {};
214
214
  const setPreferences = (preferences) => {
215
215
  var _a;
216
216
  if (!preferences) {
@@ -225,25 +225,29 @@ const setPreferences = (preferences) => {
225
225
  if (!provider.name) {
226
226
  return;
227
227
  }
228
- providers[provider.name] = provider;
228
+ providersPackages[provider.name] = provider;
229
229
  });
230
230
  if (window && Array.isArray(window.edgetagProviders)) {
231
231
  window.edgetagProviders.forEach((provider) => {
232
232
  if (!provider.name) {
233
233
  return;
234
234
  }
235
- providers[provider.name] = provider;
235
+ providersPackages[provider.name] = provider;
236
236
  });
237
237
  }
238
238
  setUrl(preferences.edgeURL);
239
239
  return true;
240
240
  };
241
241
  const isConsentDisabled = () => consentDisabled;
242
- const getProvidersPackage = () => providers;
242
+ const getProvidersPackage = () => providersPackages;
243
243
  const isInitialized = () => initialized;
244
244
  const setInitialized = () => {
245
245
  initialized = true;
246
246
  };
247
+ const getAllowedProviders = () => allowedProvider;
248
+ const setAllowedProviders = (providers) => {
249
+ allowedProvider = providers;
250
+ };
247
251
 
248
252
  const getUserAgent = () => {
249
253
  const nav = navigator;
@@ -252,6 +256,9 @@ const getUserAgent = () => {
252
256
  return ua;
253
257
  };
254
258
  const allowTag = (providers) => {
259
+ if (!allowProviders(providers)) {
260
+ return false;
261
+ }
255
262
  const consent = getDataPerKey('local', tagStorage, consentKey);
256
263
  if (isConsentDisabled()) {
257
264
  return true;
@@ -265,8 +272,7 @@ const allowTag = (providers) => {
265
272
  if (!providers) {
266
273
  return (Object.values(consent).find((isAllowed) => isAllowed) || false);
267
274
  }
268
- const allProviders = (getDataPerKey('local', tagStorage, providersKey) ||
269
- []);
275
+ const allProviders = getAllowedProviders();
270
276
  for (const provider of allProviders) {
271
277
  const tagProviderSetting = providers[provider];
272
278
  if (tagProviderSetting ||
@@ -279,7 +285,39 @@ const allowTag = (providers) => {
279
285
  }
280
286
  return false;
281
287
  };
282
- const allowProvider = (providers, providerId) => {
288
+ const allowProviders = (providers) => {
289
+ if (!providers) {
290
+ return true;
291
+ }
292
+ const allowedProvider = getAllowedProviders();
293
+ if (allowedProvider && allowedProvider.length > 0) {
294
+ let found = false;
295
+ Object.entries(providers).forEach(([key, value]) => {
296
+ if (!value) {
297
+ return;
298
+ }
299
+ if (allowedProvider.includes(key)) {
300
+ found = true;
301
+ }
302
+ });
303
+ return found;
304
+ }
305
+ return true;
306
+ };
307
+ const allowProvider = (providerId) => {
308
+ if (!providerId) {
309
+ return true;
310
+ }
311
+ const allowedProvider = getAllowedProviders();
312
+ if (allowedProvider && allowedProvider.length > 0) {
313
+ return allowedProvider.includes(providerId);
314
+ }
315
+ return true;
316
+ };
317
+ const allowProviderWithConsent = (providers, providerId) => {
318
+ if (!allowProvider(providerId)) {
319
+ return false;
320
+ }
283
321
  if (providers && Object.keys(providers).length) {
284
322
  const tagProvider = providers[providerId];
285
323
  if (!(tagProvider ||
@@ -426,6 +464,9 @@ const processStubs = () => {
426
464
  };
427
465
 
428
466
  const sendTag = ({ eventName, eventId, data, providerData, providers, options, }) => {
467
+ if (!allowProviders(providers)) {
468
+ return;
469
+ }
429
470
  const payload = {
430
471
  eventName,
431
472
  eventId,
@@ -459,7 +500,7 @@ const handleTag = (eventName, data = {}, providers, options) => {
459
500
  const providerData = {};
460
501
  if (providerPackages) {
461
502
  Object.values(providerPackages).forEach((pkg) => {
462
- if (!pkg || !pkg.tag || !allowProvider(providers, pkg.name)) {
503
+ if (!pkg || !pkg.tag || !allowProviderWithConsent(providers, pkg.name)) {
463
504
  return;
464
505
  }
465
506
  const result = pkg.tag({
@@ -567,11 +608,10 @@ const handleCapture = (provider, params) => {
567
608
  };
568
609
 
569
610
  const handleManifest = (manifest) => {
570
- const providers = [];
571
611
  const providerPackages = getProvidersPackage();
572
612
  const userId = handleGetUserId();
613
+ setAllowedProviders(manifest.map((provider) => provider.package));
573
614
  manifest.forEach((provider) => {
574
- providers.push(provider.package);
575
615
  addProviderVariable(provider.package, provider.variables);
576
616
  if (provider.rules) {
577
617
  Object.entries(provider.rules).forEach(([name, recipe]) => {
@@ -585,14 +625,13 @@ const handleManifest = (manifest) => {
585
625
  }
586
626
  if (providerPackages) {
587
627
  const pkg = providerPackages[provider.package];
588
- if (pkg && pkg.init) {
628
+ if (pkg && pkg.init && allowProvider(pkg.name)) {
589
629
  pkg.init({ userId, manifest: provider, sendTag });
590
630
  }
591
631
  }
592
632
  });
593
633
  setInitialized();
594
634
  processStubs();
595
- savePerKey('local', tagStorage, providers, providersKey);
596
635
  };
597
636
 
598
637
  const handleInit = (preferences) => {
package/index.esm.js CHANGED
@@ -39,7 +39,6 @@ function __awaiter(thisArg, _arguments, P, generator) {
39
39
 
40
40
  const tagStorage = 'edgeTag';
41
41
  const consentKey = 'consent';
42
- const providersKey = 'providers';
43
42
  const keyPrefix = `_worker`;
44
43
 
45
44
  const initKey = `${keyPrefix}Store`;
@@ -204,9 +203,10 @@ const getKeysURL = () => {
204
203
  return generateUrl(`/keys`);
205
204
  };
206
205
 
206
+ let allowedProvider = [];
207
207
  let initialized = false;
208
208
  let consentDisabled = false;
209
- const providers = {};
209
+ const providersPackages = {};
210
210
  const setPreferences = (preferences) => {
211
211
  var _a;
212
212
  if (!preferences) {
@@ -221,25 +221,29 @@ const setPreferences = (preferences) => {
221
221
  if (!provider.name) {
222
222
  return;
223
223
  }
224
- providers[provider.name] = provider;
224
+ providersPackages[provider.name] = provider;
225
225
  });
226
226
  if (window && Array.isArray(window.edgetagProviders)) {
227
227
  window.edgetagProviders.forEach((provider) => {
228
228
  if (!provider.name) {
229
229
  return;
230
230
  }
231
- providers[provider.name] = provider;
231
+ providersPackages[provider.name] = provider;
232
232
  });
233
233
  }
234
234
  setUrl(preferences.edgeURL);
235
235
  return true;
236
236
  };
237
237
  const isConsentDisabled = () => consentDisabled;
238
- const getProvidersPackage = () => providers;
238
+ const getProvidersPackage = () => providersPackages;
239
239
  const isInitialized = () => initialized;
240
240
  const setInitialized = () => {
241
241
  initialized = true;
242
242
  };
243
+ const getAllowedProviders = () => allowedProvider;
244
+ const setAllowedProviders = (providers) => {
245
+ allowedProvider = providers;
246
+ };
243
247
 
244
248
  const getUserAgent = () => {
245
249
  const nav = navigator;
@@ -248,6 +252,9 @@ const getUserAgent = () => {
248
252
  return ua;
249
253
  };
250
254
  const allowTag = (providers) => {
255
+ if (!allowProviders(providers)) {
256
+ return false;
257
+ }
251
258
  const consent = getDataPerKey('local', tagStorage, consentKey);
252
259
  if (isConsentDisabled()) {
253
260
  return true;
@@ -261,8 +268,7 @@ const allowTag = (providers) => {
261
268
  if (!providers) {
262
269
  return (Object.values(consent).find((isAllowed) => isAllowed) || false);
263
270
  }
264
- const allProviders = (getDataPerKey('local', tagStorage, providersKey) ||
265
- []);
271
+ const allProviders = getAllowedProviders();
266
272
  for (const provider of allProviders) {
267
273
  const tagProviderSetting = providers[provider];
268
274
  if (tagProviderSetting ||
@@ -275,7 +281,39 @@ const allowTag = (providers) => {
275
281
  }
276
282
  return false;
277
283
  };
278
- const allowProvider = (providers, providerId) => {
284
+ const allowProviders = (providers) => {
285
+ if (!providers) {
286
+ return true;
287
+ }
288
+ const allowedProvider = getAllowedProviders();
289
+ if (allowedProvider && allowedProvider.length > 0) {
290
+ let found = false;
291
+ Object.entries(providers).forEach(([key, value]) => {
292
+ if (!value) {
293
+ return;
294
+ }
295
+ if (allowedProvider.includes(key)) {
296
+ found = true;
297
+ }
298
+ });
299
+ return found;
300
+ }
301
+ return true;
302
+ };
303
+ const allowProvider = (providerId) => {
304
+ if (!providerId) {
305
+ return true;
306
+ }
307
+ const allowedProvider = getAllowedProviders();
308
+ if (allowedProvider && allowedProvider.length > 0) {
309
+ return allowedProvider.includes(providerId);
310
+ }
311
+ return true;
312
+ };
313
+ const allowProviderWithConsent = (providers, providerId) => {
314
+ if (!allowProvider(providerId)) {
315
+ return false;
316
+ }
279
317
  if (providers && Object.keys(providers).length) {
280
318
  const tagProvider = providers[providerId];
281
319
  if (!(tagProvider ||
@@ -422,6 +460,9 @@ const processStubs = () => {
422
460
  };
423
461
 
424
462
  const sendTag = ({ eventName, eventId, data, providerData, providers, options, }) => {
463
+ if (!allowProviders(providers)) {
464
+ return;
465
+ }
425
466
  const payload = {
426
467
  eventName,
427
468
  eventId,
@@ -455,7 +496,7 @@ const handleTag = (eventName, data = {}, providers, options) => {
455
496
  const providerData = {};
456
497
  if (providerPackages) {
457
498
  Object.values(providerPackages).forEach((pkg) => {
458
- if (!pkg || !pkg.tag || !allowProvider(providers, pkg.name)) {
499
+ if (!pkg || !pkg.tag || !allowProviderWithConsent(providers, pkg.name)) {
459
500
  return;
460
501
  }
461
502
  const result = pkg.tag({
@@ -563,11 +604,10 @@ const handleCapture = (provider, params) => {
563
604
  };
564
605
 
565
606
  const handleManifest = (manifest) => {
566
- const providers = [];
567
607
  const providerPackages = getProvidersPackage();
568
608
  const userId = handleGetUserId();
609
+ setAllowedProviders(manifest.map((provider) => provider.package));
569
610
  manifest.forEach((provider) => {
570
- providers.push(provider.package);
571
611
  addProviderVariable(provider.package, provider.variables);
572
612
  if (provider.rules) {
573
613
  Object.entries(provider.rules).forEach(([name, recipe]) => {
@@ -581,14 +621,13 @@ const handleManifest = (manifest) => {
581
621
  }
582
622
  if (providerPackages) {
583
623
  const pkg = providerPackages[provider.package];
584
- if (pkg && pkg.init) {
624
+ if (pkg && pkg.init && allowProvider(pkg.name)) {
585
625
  pkg.init({ userId, manifest: provider, sendTag });
586
626
  }
587
627
  }
588
628
  });
589
629
  setInitialized();
590
630
  processStubs();
591
- savePerKey('local', tagStorage, providers, providersKey);
592
631
  };
593
632
 
594
633
  const handleInit = (preferences) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blotoutio/edgetag-sdk-js",
3
- "version": "0.6.6",
3
+ "version": "0.6.7",
4
4
  "description": "JS SDK for EdgeTag",
5
5
  "author": "Blotout",
6
6
  "license": "MIT",