@mparticle/web-rokt-kit 1.5.0 → 1.6.1
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/dist/Rokt-Kit.common.js +71 -12
- package/dist/Rokt-Kit.iife.js +71 -12
- package/package.json +1 -1
package/dist/Rokt-Kit.common.js
CHANGED
|
@@ -29,23 +29,29 @@ var constructor = function () {
|
|
|
29
29
|
|
|
30
30
|
self.launcher = null;
|
|
31
31
|
self.filters = {};
|
|
32
|
-
self.filteredUser = {};
|
|
33
32
|
self.userAttributes = {};
|
|
33
|
+
self.testHelpers = null;
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
|
-
* Generates the Rokt launcher script URL with optional domain override
|
|
36
|
+
* Generates the Rokt launcher script URL with optional domain override and extensions
|
|
37
37
|
* @param {string} domain - The CNAME domain to use for overriding the launcher url
|
|
38
|
+
* @param {Array<string>} extensions - List of extension query parameters to append
|
|
38
39
|
* @returns {string} The complete launcher script URL
|
|
39
40
|
*/
|
|
40
|
-
function generateLauncherScript(_domain) {
|
|
41
|
+
function generateLauncherScript(_domain, extensions) {
|
|
41
42
|
// Override domain if a customer is using a CNAME
|
|
42
43
|
// If a customer is using a CNAME, a domain will be passed. If not, we use the default domain.
|
|
43
44
|
var domain = typeof _domain !== 'undefined' ? _domain : 'apps.rokt.com';
|
|
44
45
|
var protocol = 'https://';
|
|
45
46
|
var launcherPath = '/wsdk/integrations/launcher.js';
|
|
47
|
+
var baseUrl = [protocol, domain, launcherPath].join('');
|
|
46
48
|
|
|
47
|
-
|
|
49
|
+
if (!extensions || extensions.length === 0) {
|
|
50
|
+
return baseUrl;
|
|
51
|
+
}
|
|
52
|
+
return baseUrl + '?extensions=' + extensions.join(',');
|
|
48
53
|
}
|
|
54
|
+
|
|
49
55
|
/**
|
|
50
56
|
* Passes attributes to the Rokt Web SDK for client-side hashing
|
|
51
57
|
* @see https://docs.rokt.com/developers/integration-guides/web/library/integration-launcher#hash-attributes
|
|
@@ -69,10 +75,14 @@ var constructor = function () {
|
|
|
69
75
|
filteredUserAttributes
|
|
70
76
|
) {
|
|
71
77
|
var accountId = settings.accountId;
|
|
78
|
+
var roktExtensions = extractRoktExtensions(settings.roktExtensions);
|
|
72
79
|
self.userAttributes = filteredUserAttributes;
|
|
73
80
|
self.onboardingExpProvider = settings.onboardingExpProvider;
|
|
74
81
|
var domain = window.mParticle.Rokt.domain;
|
|
75
|
-
var launcherOptions =
|
|
82
|
+
var launcherOptions = mergeObjects(
|
|
83
|
+
{},
|
|
84
|
+
window.mParticle.Rokt.launcherOptions || {}
|
|
85
|
+
);
|
|
76
86
|
launcherOptions.integrationName = generateIntegrationName(
|
|
77
87
|
launcherOptions.integrationName
|
|
78
88
|
);
|
|
@@ -80,6 +90,7 @@ var constructor = function () {
|
|
|
80
90
|
if (testMode) {
|
|
81
91
|
self.testHelpers = {
|
|
82
92
|
generateLauncherScript: generateLauncherScript,
|
|
93
|
+
extractRoktExtensions: extractRoktExtensions,
|
|
83
94
|
};
|
|
84
95
|
attachLauncher(accountId, launcherOptions);
|
|
85
96
|
return;
|
|
@@ -89,7 +100,7 @@ var constructor = function () {
|
|
|
89
100
|
var target = document.head || document.body;
|
|
90
101
|
var script = document.createElement('script');
|
|
91
102
|
script.type = 'text/javascript';
|
|
92
|
-
script.src = generateLauncherScript(domain);
|
|
103
|
+
script.src = generateLauncherScript(domain, roktExtensions);
|
|
93
104
|
script.async = true;
|
|
94
105
|
script.crossOrigin = 'anonymous';
|
|
95
106
|
script.fetchPriority = 'high';
|
|
@@ -119,6 +130,18 @@ var constructor = function () {
|
|
|
119
130
|
console.warn('Unable to find Rokt on the page');
|
|
120
131
|
}
|
|
121
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Returns the user identities from the filtered user, if any
|
|
135
|
+
* @param {Object} filteredUser - The filtered user object containing identities
|
|
136
|
+
* @returns {Object} The user identities from the filtered user
|
|
137
|
+
*/
|
|
138
|
+
function returnUserIdentities(filteredUser) {
|
|
139
|
+
if (!filteredUser || !filteredUser.getUserIdentities) {
|
|
140
|
+
return {};
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return filteredUser.getUserIdentities().userIdentities;
|
|
144
|
+
}
|
|
122
145
|
|
|
123
146
|
/**
|
|
124
147
|
* Selects placements for Rokt Web SDK with merged attributes, filters, and experimentation options
|
|
@@ -164,8 +187,11 @@ var constructor = function () {
|
|
|
164
187
|
? fetchOptimizely()
|
|
165
188
|
: {};
|
|
166
189
|
|
|
190
|
+
var filteredUserIdentities = returnUserIdentities(filteredUser);
|
|
191
|
+
|
|
167
192
|
var selectPlacementsAttributes = mergeObjects(
|
|
168
193
|
filteredAttributes,
|
|
194
|
+
filteredUserIdentities,
|
|
169
195
|
optimizelyAttributes,
|
|
170
196
|
{
|
|
171
197
|
mpid: mpid,
|
|
@@ -179,8 +205,24 @@ var constructor = function () {
|
|
|
179
205
|
return self.launcher.selectPlacements(selectPlacementsOptions);
|
|
180
206
|
}
|
|
181
207
|
|
|
208
|
+
/**
|
|
209
|
+
* Sets extension data for Rokt Web SDK
|
|
210
|
+
* @param {Object} partnerExtensionData - The extension data object containing:
|
|
211
|
+
* - [extensionName] {string}: Name of the extension
|
|
212
|
+
* - [extensionName].options {Object}: Key-value pairs of options for the extension
|
|
213
|
+
* @returns {void} Nothing is returned
|
|
214
|
+
*/
|
|
215
|
+
function setExtensionData(partnerExtensionData) {
|
|
216
|
+
if (!isInitialized()) {
|
|
217
|
+
console.error('Rokt Kit: Not initialized');
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
window.Rokt.setExtensionData(partnerExtensionData);
|
|
222
|
+
}
|
|
223
|
+
|
|
182
224
|
function onUserIdentified(filteredUser) {
|
|
183
|
-
self.filteredUser = filteredUser;
|
|
225
|
+
self.filters.filteredUser = filteredUser;
|
|
184
226
|
self.userAttributes = filteredUser.getAllUserAttributes();
|
|
185
227
|
}
|
|
186
228
|
|
|
@@ -204,7 +246,6 @@ var constructor = function () {
|
|
|
204
246
|
.then(function (launcher) {
|
|
205
247
|
// Assign the launcher to a global variable for later access
|
|
206
248
|
window.Rokt.currentLauncher = launcher;
|
|
207
|
-
|
|
208
249
|
// Locally cache the launcher and filters
|
|
209
250
|
self.launcher = launcher;
|
|
210
251
|
|
|
@@ -218,11 +259,8 @@ var constructor = function () {
|
|
|
218
259
|
console.warn(
|
|
219
260
|
'Rokt Kit: No filtered user has been set.'
|
|
220
261
|
);
|
|
221
|
-
} else {
|
|
222
|
-
self.filteredUser = roktFilters.filteredUser;
|
|
223
262
|
}
|
|
224
263
|
}
|
|
225
|
-
|
|
226
264
|
// Attaches the kit to the Rokt manager
|
|
227
265
|
window.mParticle.Rokt.attachKit(self);
|
|
228
266
|
|
|
@@ -281,6 +319,7 @@ var constructor = function () {
|
|
|
281
319
|
|
|
282
320
|
// Kit Callback Methods
|
|
283
321
|
this.init = initForwarder;
|
|
322
|
+
this.setExtensionData = setExtensionData;
|
|
284
323
|
this.setUserAttribute = setUserAttribute;
|
|
285
324
|
this.onUserIdentified = onUserIdentified;
|
|
286
325
|
this.removeUserAttribute = removeUserAttribute;
|
|
@@ -299,7 +338,7 @@ var constructor = function () {
|
|
|
299
338
|
|
|
300
339
|
function generateIntegrationName(customIntegrationName) {
|
|
301
340
|
var coreSdkVersion = window.mParticle.getVersion();
|
|
302
|
-
var kitVersion = "1.
|
|
341
|
+
var kitVersion = "1.6.1";
|
|
303
342
|
var name = 'mParticle_' + 'wsdkv_' + coreSdkVersion + '_kitv_' + kitVersion;
|
|
304
343
|
|
|
305
344
|
if (customIntegrationName) {
|
|
@@ -359,6 +398,26 @@ function mergeObjects() {
|
|
|
359
398
|
return resObj;
|
|
360
399
|
}
|
|
361
400
|
|
|
401
|
+
function parseSettingsString(settingsString) {
|
|
402
|
+
try {
|
|
403
|
+
return JSON.parse(settingsString.replace(/"/g, '"'));
|
|
404
|
+
} catch (error) {
|
|
405
|
+
console.error('Settings string contains invalid JSON');
|
|
406
|
+
}
|
|
407
|
+
return [];
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
function extractRoktExtensions(settingsString) {
|
|
411
|
+
var settings = settingsString ? parseSettingsString(settingsString) : [];
|
|
412
|
+
var roktExtensions = [];
|
|
413
|
+
|
|
414
|
+
for (var i = 0; i < settings.length; i++) {
|
|
415
|
+
roktExtensions.push(settings[i].value);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
return roktExtensions;
|
|
419
|
+
}
|
|
420
|
+
|
|
362
421
|
if (window && window.mParticle && window.mParticle.addForwarder) {
|
|
363
422
|
window.mParticle.addForwarder({
|
|
364
423
|
name: name,
|
package/dist/Rokt-Kit.iife.js
CHANGED
|
@@ -28,23 +28,29 @@ var RoktKit = (function (exports) {
|
|
|
28
28
|
|
|
29
29
|
self.launcher = null;
|
|
30
30
|
self.filters = {};
|
|
31
|
-
self.filteredUser = {};
|
|
32
31
|
self.userAttributes = {};
|
|
32
|
+
self.testHelpers = null;
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
|
-
* Generates the Rokt launcher script URL with optional domain override
|
|
35
|
+
* Generates the Rokt launcher script URL with optional domain override and extensions
|
|
36
36
|
* @param {string} domain - The CNAME domain to use for overriding the launcher url
|
|
37
|
+
* @param {Array<string>} extensions - List of extension query parameters to append
|
|
37
38
|
* @returns {string} The complete launcher script URL
|
|
38
39
|
*/
|
|
39
|
-
function generateLauncherScript(_domain) {
|
|
40
|
+
function generateLauncherScript(_domain, extensions) {
|
|
40
41
|
// Override domain if a customer is using a CNAME
|
|
41
42
|
// If a customer is using a CNAME, a domain will be passed. If not, we use the default domain.
|
|
42
43
|
var domain = typeof _domain !== 'undefined' ? _domain : 'apps.rokt.com';
|
|
43
44
|
var protocol = 'https://';
|
|
44
45
|
var launcherPath = '/wsdk/integrations/launcher.js';
|
|
46
|
+
var baseUrl = [protocol, domain, launcherPath].join('');
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
if (!extensions || extensions.length === 0) {
|
|
49
|
+
return baseUrl;
|
|
50
|
+
}
|
|
51
|
+
return baseUrl + '?extensions=' + extensions.join(',');
|
|
47
52
|
}
|
|
53
|
+
|
|
48
54
|
/**
|
|
49
55
|
* Passes attributes to the Rokt Web SDK for client-side hashing
|
|
50
56
|
* @see https://docs.rokt.com/developers/integration-guides/web/library/integration-launcher#hash-attributes
|
|
@@ -68,10 +74,14 @@ var RoktKit = (function (exports) {
|
|
|
68
74
|
filteredUserAttributes
|
|
69
75
|
) {
|
|
70
76
|
var accountId = settings.accountId;
|
|
77
|
+
var roktExtensions = extractRoktExtensions(settings.roktExtensions);
|
|
71
78
|
self.userAttributes = filteredUserAttributes;
|
|
72
79
|
self.onboardingExpProvider = settings.onboardingExpProvider;
|
|
73
80
|
var domain = window.mParticle.Rokt.domain;
|
|
74
|
-
var launcherOptions =
|
|
81
|
+
var launcherOptions = mergeObjects(
|
|
82
|
+
{},
|
|
83
|
+
window.mParticle.Rokt.launcherOptions || {}
|
|
84
|
+
);
|
|
75
85
|
launcherOptions.integrationName = generateIntegrationName(
|
|
76
86
|
launcherOptions.integrationName
|
|
77
87
|
);
|
|
@@ -79,6 +89,7 @@ var RoktKit = (function (exports) {
|
|
|
79
89
|
if (testMode) {
|
|
80
90
|
self.testHelpers = {
|
|
81
91
|
generateLauncherScript: generateLauncherScript,
|
|
92
|
+
extractRoktExtensions: extractRoktExtensions,
|
|
82
93
|
};
|
|
83
94
|
attachLauncher(accountId, launcherOptions);
|
|
84
95
|
return;
|
|
@@ -88,7 +99,7 @@ var RoktKit = (function (exports) {
|
|
|
88
99
|
var target = document.head || document.body;
|
|
89
100
|
var script = document.createElement('script');
|
|
90
101
|
script.type = 'text/javascript';
|
|
91
|
-
script.src = generateLauncherScript(domain);
|
|
102
|
+
script.src = generateLauncherScript(domain, roktExtensions);
|
|
92
103
|
script.async = true;
|
|
93
104
|
script.crossOrigin = 'anonymous';
|
|
94
105
|
script.fetchPriority = 'high';
|
|
@@ -118,6 +129,18 @@ var RoktKit = (function (exports) {
|
|
|
118
129
|
console.warn('Unable to find Rokt on the page');
|
|
119
130
|
}
|
|
120
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Returns the user identities from the filtered user, if any
|
|
134
|
+
* @param {Object} filteredUser - The filtered user object containing identities
|
|
135
|
+
* @returns {Object} The user identities from the filtered user
|
|
136
|
+
*/
|
|
137
|
+
function returnUserIdentities(filteredUser) {
|
|
138
|
+
if (!filteredUser || !filteredUser.getUserIdentities) {
|
|
139
|
+
return {};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return filteredUser.getUserIdentities().userIdentities;
|
|
143
|
+
}
|
|
121
144
|
|
|
122
145
|
/**
|
|
123
146
|
* Selects placements for Rokt Web SDK with merged attributes, filters, and experimentation options
|
|
@@ -163,8 +186,11 @@ var RoktKit = (function (exports) {
|
|
|
163
186
|
? fetchOptimizely()
|
|
164
187
|
: {};
|
|
165
188
|
|
|
189
|
+
var filteredUserIdentities = returnUserIdentities(filteredUser);
|
|
190
|
+
|
|
166
191
|
var selectPlacementsAttributes = mergeObjects(
|
|
167
192
|
filteredAttributes,
|
|
193
|
+
filteredUserIdentities,
|
|
168
194
|
optimizelyAttributes,
|
|
169
195
|
{
|
|
170
196
|
mpid: mpid,
|
|
@@ -178,8 +204,24 @@ var RoktKit = (function (exports) {
|
|
|
178
204
|
return self.launcher.selectPlacements(selectPlacementsOptions);
|
|
179
205
|
}
|
|
180
206
|
|
|
207
|
+
/**
|
|
208
|
+
* Sets extension data for Rokt Web SDK
|
|
209
|
+
* @param {Object} partnerExtensionData - The extension data object containing:
|
|
210
|
+
* - [extensionName] {string}: Name of the extension
|
|
211
|
+
* - [extensionName].options {Object}: Key-value pairs of options for the extension
|
|
212
|
+
* @returns {void} Nothing is returned
|
|
213
|
+
*/
|
|
214
|
+
function setExtensionData(partnerExtensionData) {
|
|
215
|
+
if (!isInitialized()) {
|
|
216
|
+
console.error('Rokt Kit: Not initialized');
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
window.Rokt.setExtensionData(partnerExtensionData);
|
|
221
|
+
}
|
|
222
|
+
|
|
181
223
|
function onUserIdentified(filteredUser) {
|
|
182
|
-
self.filteredUser = filteredUser;
|
|
224
|
+
self.filters.filteredUser = filteredUser;
|
|
183
225
|
self.userAttributes = filteredUser.getAllUserAttributes();
|
|
184
226
|
}
|
|
185
227
|
|
|
@@ -203,7 +245,6 @@ var RoktKit = (function (exports) {
|
|
|
203
245
|
.then(function (launcher) {
|
|
204
246
|
// Assign the launcher to a global variable for later access
|
|
205
247
|
window.Rokt.currentLauncher = launcher;
|
|
206
|
-
|
|
207
248
|
// Locally cache the launcher and filters
|
|
208
249
|
self.launcher = launcher;
|
|
209
250
|
|
|
@@ -217,11 +258,8 @@ var RoktKit = (function (exports) {
|
|
|
217
258
|
console.warn(
|
|
218
259
|
'Rokt Kit: No filtered user has been set.'
|
|
219
260
|
);
|
|
220
|
-
} else {
|
|
221
|
-
self.filteredUser = roktFilters.filteredUser;
|
|
222
261
|
}
|
|
223
262
|
}
|
|
224
|
-
|
|
225
263
|
// Attaches the kit to the Rokt manager
|
|
226
264
|
window.mParticle.Rokt.attachKit(self);
|
|
227
265
|
|
|
@@ -280,6 +318,7 @@ var RoktKit = (function (exports) {
|
|
|
280
318
|
|
|
281
319
|
// Kit Callback Methods
|
|
282
320
|
this.init = initForwarder;
|
|
321
|
+
this.setExtensionData = setExtensionData;
|
|
283
322
|
this.setUserAttribute = setUserAttribute;
|
|
284
323
|
this.onUserIdentified = onUserIdentified;
|
|
285
324
|
this.removeUserAttribute = removeUserAttribute;
|
|
@@ -298,7 +337,7 @@ var RoktKit = (function (exports) {
|
|
|
298
337
|
|
|
299
338
|
function generateIntegrationName(customIntegrationName) {
|
|
300
339
|
var coreSdkVersion = window.mParticle.getVersion();
|
|
301
|
-
var kitVersion = "1.
|
|
340
|
+
var kitVersion = "1.6.1";
|
|
302
341
|
var name = 'mParticle_' + 'wsdkv_' + coreSdkVersion + '_kitv_' + kitVersion;
|
|
303
342
|
|
|
304
343
|
if (customIntegrationName) {
|
|
@@ -358,6 +397,26 @@ var RoktKit = (function (exports) {
|
|
|
358
397
|
return resObj;
|
|
359
398
|
}
|
|
360
399
|
|
|
400
|
+
function parseSettingsString(settingsString) {
|
|
401
|
+
try {
|
|
402
|
+
return JSON.parse(settingsString.replace(/"/g, '"'));
|
|
403
|
+
} catch (error) {
|
|
404
|
+
console.error('Settings string contains invalid JSON');
|
|
405
|
+
}
|
|
406
|
+
return [];
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
function extractRoktExtensions(settingsString) {
|
|
410
|
+
var settings = settingsString ? parseSettingsString(settingsString) : [];
|
|
411
|
+
var roktExtensions = [];
|
|
412
|
+
|
|
413
|
+
for (var i = 0; i < settings.length; i++) {
|
|
414
|
+
roktExtensions.push(settings[i].value);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
return roktExtensions;
|
|
418
|
+
}
|
|
419
|
+
|
|
361
420
|
if (window && window.mParticle && window.mParticle.addForwarder) {
|
|
362
421
|
window.mParticle.addForwarder({
|
|
363
422
|
name: name,
|