@blotoutio/edgetag-sdk-browser 0.6.6 → 0.6.8
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.
- package/index.js +52 -13
- 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
|
|
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
|
-
|
|
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
|
-
|
|
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 = () =>
|
|
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 = (
|
|
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
|
|
285
|
+
const allowProviders = (providers) => {
|
|
286
|
+
if (!providers || Object.keys(providers).length === 0) {
|
|
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 || !
|
|
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) => {
|