@blotoutio/edgetag-sdk-browser 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 (2) hide show
  1. package/index.js +52 -13
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -40,7 +40,6 @@
40
40
 
41
41
  const tagStorage = 'edgeTag';
42
42
  const consentKey = 'consent';
43
- const providersKey = 'providers';
44
43
  const keyPrefix = `_worker`;
45
44
 
46
45
  const initKey = `${keyPrefix}Store`;
@@ -205,9 +204,10 @@
205
204
  return generateUrl(`/keys`);
206
205
  };
207
206
 
207
+ let allowedProvider = [];
208
208
  let initialized = false;
209
209
  let consentDisabled = false;
210
- const providers = {};
210
+ const providersPackages = {};
211
211
  const setPreferences = (preferences) => {
212
212
  var _a;
213
213
  if (!preferences) {
@@ -222,25 +222,29 @@
222
222
  if (!provider.name) {
223
223
  return;
224
224
  }
225
- providers[provider.name] = provider;
225
+ providersPackages[provider.name] = provider;
226
226
  });
227
227
  if (window && Array.isArray(window.edgetagProviders)) {
228
228
  window.edgetagProviders.forEach((provider) => {
229
229
  if (!provider.name) {
230
230
  return;
231
231
  }
232
- providers[provider.name] = provider;
232
+ providersPackages[provider.name] = provider;
233
233
  });
234
234
  }
235
235
  setUrl(preferences.edgeURL);
236
236
  return true;
237
237
  };
238
238
  const isConsentDisabled = () => consentDisabled;
239
- const getProvidersPackage = () => providers;
239
+ const getProvidersPackage = () => providersPackages;
240
240
  const isInitialized = () => initialized;
241
241
  const setInitialized = () => {
242
242
  initialized = true;
243
243
  };
244
+ const getAllowedProviders = () => allowedProvider;
245
+ const setAllowedProviders = (providers) => {
246
+ allowedProvider = providers;
247
+ };
244
248
 
245
249
  const getUserAgent = () => {
246
250
  const nav = navigator;
@@ -249,6 +253,9 @@
249
253
  return ua;
250
254
  };
251
255
  const allowTag = (providers) => {
256
+ if (!allowProviders(providers)) {
257
+ return false;
258
+ }
252
259
  const consent = getDataPerKey('local', tagStorage, consentKey);
253
260
  if (isConsentDisabled()) {
254
261
  return true;
@@ -262,8 +269,7 @@
262
269
  if (!providers) {
263
270
  return (Object.values(consent).find((isAllowed) => isAllowed) || false);
264
271
  }
265
- const allProviders = (getDataPerKey('local', tagStorage, providersKey) ||
266
- []);
272
+ const allProviders = getAllowedProviders();
267
273
  for (const provider of allProviders) {
268
274
  const tagProviderSetting = providers[provider];
269
275
  if (tagProviderSetting ||
@@ -276,7 +282,39 @@
276
282
  }
277
283
  return false;
278
284
  };
279
- const allowProvider = (providers, providerId) => {
285
+ const allowProviders = (providers) => {
286
+ if (!providers) {
287
+ return true;
288
+ }
289
+ const allowedProvider = getAllowedProviders();
290
+ if (allowedProvider && allowedProvider.length > 0) {
291
+ let found = false;
292
+ Object.entries(providers).forEach(([key, value]) => {
293
+ if (!value) {
294
+ return;
295
+ }
296
+ if (allowedProvider.includes(key)) {
297
+ found = true;
298
+ }
299
+ });
300
+ return found;
301
+ }
302
+ return true;
303
+ };
304
+ const allowProvider = (providerId) => {
305
+ if (!providerId) {
306
+ return true;
307
+ }
308
+ const allowedProvider = getAllowedProviders();
309
+ if (allowedProvider && allowedProvider.length > 0) {
310
+ return allowedProvider.includes(providerId);
311
+ }
312
+ return true;
313
+ };
314
+ const allowProviderWithConsent = (providers, providerId) => {
315
+ if (!allowProvider(providerId)) {
316
+ return false;
317
+ }
280
318
  if (providers && Object.keys(providers).length) {
281
319
  const tagProvider = providers[providerId];
282
320
  if (!(tagProvider ||
@@ -903,6 +941,9 @@
903
941
  };
904
942
 
905
943
  const sendTag = ({ eventName, eventId, data, providerData, providers, options, }) => {
944
+ if (!allowProviders(providers)) {
945
+ return;
946
+ }
906
947
  const payload = {
907
948
  eventName,
908
949
  eventId,
@@ -936,7 +977,7 @@
936
977
  const providerData = {};
937
978
  if (providerPackages) {
938
979
  Object.values(providerPackages).forEach((pkg) => {
939
- if (!pkg || !pkg.tag || !allowProvider(providers, pkg.name)) {
980
+ if (!pkg || !pkg.tag || !allowProviderWithConsent(providers, pkg.name)) {
940
981
  return;
941
982
  }
942
983
  const result = pkg.tag({
@@ -1044,11 +1085,10 @@
1044
1085
  };
1045
1086
 
1046
1087
  const handleManifest = (manifest) => {
1047
- const providers = [];
1048
1088
  const providerPackages = getProvidersPackage();
1049
1089
  const userId = handleGetUserId();
1090
+ setAllowedProviders(manifest.map((provider) => provider.package));
1050
1091
  manifest.forEach((provider) => {
1051
- providers.push(provider.package);
1052
1092
  addProviderVariable(provider.package, provider.variables);
1053
1093
  if (provider.rules) {
1054
1094
  Object.entries(provider.rules).forEach(([name, recipe]) => {
@@ -1062,14 +1102,13 @@
1062
1102
  }
1063
1103
  if (providerPackages) {
1064
1104
  const pkg = providerPackages[provider.package];
1065
- if (pkg && pkg.init) {
1105
+ if (pkg && pkg.init && allowProvider(pkg.name)) {
1066
1106
  pkg.init({ userId, manifest: provider, sendTag });
1067
1107
  }
1068
1108
  }
1069
1109
  });
1070
1110
  setInitialized();
1071
1111
  processStubs();
1072
- savePerKey('local', tagStorage, providers, providersKey);
1073
1112
  };
1074
1113
 
1075
1114
  const handleInit = (preferences) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blotoutio/edgetag-sdk-browser",
3
- "version": "0.6.6",
3
+ "version": "0.6.7",
4
4
  "description": "Browser SDK for EdgeTag",
5
5
  "author": "Blotout",
6
6
  "license": "MIT",