@constructor-io/constructorio-node 5.7.0 → 5.9.0
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/package.json +3 -3
- package/src/modules/autocomplete.js +7 -0
- package/src/modules/browse.js +11 -0
- package/src/modules/quizzes.js +8 -0
- package/src/modules/recommendations.js +7 -0
- package/src/modules/search.js +8 -0
- package/src/modules/tracker.js +20 -0
- package/src/types/index.d.ts +1 -0
- package/src/types/tracker.d.ts +3 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@constructor-io/constructorio-node",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.9.0",
|
|
4
4
|
"description": "Constructor.io Node.js client",
|
|
5
5
|
"main": "src/constructorio.js",
|
|
6
6
|
"types": "src/types/constructorio.d.ts",
|
|
@@ -53,13 +53,13 @@
|
|
|
53
53
|
"sinon": "^7.5.0",
|
|
54
54
|
"sinon-chai": "^3.7.0",
|
|
55
55
|
"tsd": "^0.25.0",
|
|
56
|
-
"uuid": "^
|
|
56
|
+
"uuid": "^14.0.0"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"form-data": "^4.0.0",
|
|
60
60
|
"node-abort-controller": "^3.0.0",
|
|
61
61
|
"node-fetch": "^3.3.2",
|
|
62
|
-
"qs": "6.
|
|
62
|
+
"qs": "6.15.2"
|
|
63
63
|
},
|
|
64
64
|
"tsd": {
|
|
65
65
|
"directory": "src/types/tests"
|
|
@@ -16,6 +16,7 @@ function createAutocompleteUrl(query, parameters, userParameters, options) {
|
|
|
16
16
|
userId,
|
|
17
17
|
segments,
|
|
18
18
|
testCells,
|
|
19
|
+
originReferrer,
|
|
19
20
|
} = userParameters;
|
|
20
21
|
let queryParams = { c: version };
|
|
21
22
|
|
|
@@ -45,6 +46,11 @@ function createAutocompleteUrl(query, parameters, userParameters, options) {
|
|
|
45
46
|
queryParams.ui = String(userId);
|
|
46
47
|
}
|
|
47
48
|
|
|
49
|
+
// Pull origin referrer from userParameters
|
|
50
|
+
if (originReferrer && typeof originReferrer === 'string') {
|
|
51
|
+
queryParams.origin_referrer = originReferrer;
|
|
52
|
+
}
|
|
53
|
+
|
|
48
54
|
if (parameters) {
|
|
49
55
|
const {
|
|
50
56
|
numResults,
|
|
@@ -155,6 +161,7 @@ class Autocomplete {
|
|
|
155
161
|
* @param {string} [userParameters.userId] - User ID, utilized to personalize results
|
|
156
162
|
* @param {string[]} [userParameters.segments] - User segments
|
|
157
163
|
* @param {object} [userParameters.testCells] - User test cells
|
|
164
|
+
* @param {string} [userParameters.originReferrer] - Client page URL (including path)
|
|
158
165
|
* @param {string} [userParameters.userIp] - Origin user IP, from client
|
|
159
166
|
* @param {string} [userParameters.userAgent] - Origin user agent, from client
|
|
160
167
|
* @param {object} [networkParameters] - Parameters relevant to the network request
|
package/src/modules/browse.js
CHANGED
|
@@ -16,6 +16,7 @@ function createQueryParams(parameters, userParameters, options) {
|
|
|
16
16
|
userId,
|
|
17
17
|
segments,
|
|
18
18
|
testCells,
|
|
19
|
+
originReferrer,
|
|
19
20
|
} = userParameters;
|
|
20
21
|
let queryParams = { c: version };
|
|
21
22
|
|
|
@@ -130,6 +131,11 @@ function createQueryParams(parameters, userParameters, options) {
|
|
|
130
131
|
queryParams.ui = String(userId);
|
|
131
132
|
}
|
|
132
133
|
|
|
134
|
+
// Pull origin referrer from userParameters
|
|
135
|
+
if (originReferrer && typeof originReferrer === 'string') {
|
|
136
|
+
queryParams.origin_referrer = originReferrer;
|
|
137
|
+
}
|
|
138
|
+
|
|
133
139
|
queryParams._dt = Date.now();
|
|
134
140
|
queryParams = helpers.cleanParams(queryParams);
|
|
135
141
|
|
|
@@ -265,6 +271,7 @@ class Browse {
|
|
|
265
271
|
* @param {string} [userParameters.userId] - User ID, utilized to personalize results
|
|
266
272
|
* @param {string[]} [userParameters.segments] - User segments
|
|
267
273
|
* @param {object} [userParameters.testCells] - User test cells
|
|
274
|
+
* @param {string} [userParameters.originReferrer] - Client page URL (including path)
|
|
268
275
|
* @param {string} [userParameters.userIp] - Origin user IP, from client
|
|
269
276
|
* @param {string} [userParameters.userAgent] - Origin user agent, from client
|
|
270
277
|
* @param {object} [networkParameters] - Parameters relevant to the network request
|
|
@@ -350,6 +357,7 @@ class Browse {
|
|
|
350
357
|
* @param {string} [userParameters.userId] - User ID, utilized to personalize results
|
|
351
358
|
* @param {string[]} [userParameters.segments] - User segments
|
|
352
359
|
* @param {object} [userParameters.testCells] - User test cells
|
|
360
|
+
* @param {string} [userParameters.originReferrer] - Client page URL (including path)
|
|
353
361
|
* @param {string} [userParameters.userIp] - Origin user IP, from client
|
|
354
362
|
* @param {string} [userParameters.userAgent] - Origin user agent, from client
|
|
355
363
|
* @param {object} [networkParameters] - Parameters relevant to the network request
|
|
@@ -417,6 +425,7 @@ class Browse {
|
|
|
417
425
|
* @param {string} [userParameters.userId] - User ID, utilized to personalize results
|
|
418
426
|
* @param {string[]} [userParameters.segments] - User segments
|
|
419
427
|
* @param {object} [userParameters.testCells] - User test cells
|
|
428
|
+
* @param {string} [userParameters.originReferrer] - Client page URL (including path)
|
|
420
429
|
* @param {string} [userParameters.userIp] - Origin user IP, from client
|
|
421
430
|
* @param {string} [userParameters.userAgent] - Origin user agent, from client
|
|
422
431
|
* @param {object} [networkParameters] - Parameters relevant to the network request
|
|
@@ -480,6 +489,7 @@ class Browse {
|
|
|
480
489
|
* @param {string} [userParameters.userId] - User ID, utilized to personalize results
|
|
481
490
|
* @param {string[]} [userParameters.segments] - User segments
|
|
482
491
|
* @param {object} [userParameters.testCells] - User test cells
|
|
492
|
+
* @param {string} [userParameters.originReferrer] - Client page URL (including path)
|
|
483
493
|
* @param {string} [userParameters.userIp] - Origin user IP, from client
|
|
484
494
|
* @param {string} [userParameters.userAgent] - Origin user agent, from client
|
|
485
495
|
* @param {object} [networkParameters] - Parameters relevant to the network request
|
|
@@ -540,6 +550,7 @@ class Browse {
|
|
|
540
550
|
* @param {string} [userParameters.userId] - User ID, utilized to personalize results
|
|
541
551
|
* @param {string[]} [userParameters.segments] - User segments
|
|
542
552
|
* @param {object} [userParameters.testCells] - User test cells
|
|
553
|
+
* @param {string} [userParameters.originReferrer] - Client page URL (including path)
|
|
543
554
|
* @param {string} [userParameters.userIp] - Origin user IP, from client
|
|
544
555
|
* @param {string} [userParameters.userAgent] - Origin user agent, from client
|
|
545
556
|
* @param {object} [networkParameters] - Parameters relevant to the network request
|
package/src/modules/quizzes.js
CHANGED
|
@@ -15,6 +15,7 @@ function createQuizUrl(quizId, parameters, userParameters, options, path) {
|
|
|
15
15
|
clientId,
|
|
16
16
|
userId,
|
|
17
17
|
segments,
|
|
18
|
+
originReferrer,
|
|
18
19
|
} = userParameters;
|
|
19
20
|
const serviceUrl = 'https://quizzes.cnstrc.com';
|
|
20
21
|
let queryParams = { c: version };
|
|
@@ -34,6 +35,11 @@ function createQuizUrl(quizId, parameters, userParameters, options, path) {
|
|
|
34
35
|
queryParams.ui = String(userId);
|
|
35
36
|
}
|
|
36
37
|
|
|
38
|
+
// Pull origin referrer from userParameters
|
|
39
|
+
if (originReferrer && typeof originReferrer === 'string') {
|
|
40
|
+
queryParams.origin_referrer = originReferrer;
|
|
41
|
+
}
|
|
42
|
+
|
|
37
43
|
// Validate quiz id is provided
|
|
38
44
|
if (!quizId || typeof quizId !== 'string') {
|
|
39
45
|
throw new Error('quizId is a required parameter of type string');
|
|
@@ -124,6 +130,7 @@ class Quizzes {
|
|
|
124
130
|
* @param {string} [userParameters.userId] - User ID, utilized to personalize results
|
|
125
131
|
* @param {string[]} [userParameters.segments] - User segments
|
|
126
132
|
* @param {object} [userParameters.testCells] - User test cells
|
|
133
|
+
* @param {string} [userParameters.originReferrer] - Client page URL (including path)
|
|
127
134
|
* @param {string} [userParameters.userIp] - Origin user IP, from client
|
|
128
135
|
* @param {string} [userParameters.userAgent] - Origin user agent, from client
|
|
129
136
|
* @param {object} [networkParameters] - Parameters relevant to the network request
|
|
@@ -207,6 +214,7 @@ class Quizzes {
|
|
|
207
214
|
* @param {string} [userParameters.userId] - User ID, utilized to personalize results
|
|
208
215
|
* @param {string[]} [userParameters.segments] - User segments
|
|
209
216
|
* @param {object} [userParameters.testCells] - User test cells
|
|
217
|
+
* @param {string} [userParameters.originReferrer] - Client page URL (including path)
|
|
210
218
|
* @param {string} [userParameters.userIp] - Origin user IP, from client
|
|
211
219
|
* @param {string} [userParameters.userAgent] - Origin user agent, from client
|
|
212
220
|
* @param {object} [networkParameters] - Parameters relevant to the network request
|
|
@@ -15,6 +15,7 @@ function createRecommendationsUrl(podId, parameters, userParameters, options) {
|
|
|
15
15
|
clientId,
|
|
16
16
|
userId,
|
|
17
17
|
segments,
|
|
18
|
+
originReferrer,
|
|
18
19
|
} = userParameters;
|
|
19
20
|
let queryParams = { c: version };
|
|
20
21
|
|
|
@@ -37,6 +38,11 @@ function createRecommendationsUrl(podId, parameters, userParameters, options) {
|
|
|
37
38
|
queryParams.ui = String(userId);
|
|
38
39
|
}
|
|
39
40
|
|
|
41
|
+
// Pull origin referrer from userParameters
|
|
42
|
+
if (originReferrer && typeof originReferrer === 'string') {
|
|
43
|
+
queryParams.origin_referrer = originReferrer;
|
|
44
|
+
}
|
|
45
|
+
|
|
40
46
|
if (parameters) {
|
|
41
47
|
const {
|
|
42
48
|
numResults,
|
|
@@ -147,6 +153,7 @@ class Recommendations {
|
|
|
147
153
|
* @param {string} [userParameters.userId] - User ID, utilized to personalize results
|
|
148
154
|
* @param {string[]} [userParameters.segments] - User segments
|
|
149
155
|
* @param {object} [userParameters.testCells] - User test cells
|
|
156
|
+
* @param {string} [userParameters.originReferrer] - Client page URL (including path)
|
|
150
157
|
* @param {string} [userParameters.userIp] - Origin user IP, from client
|
|
151
158
|
* @param {string} [userParameters.userAgent] - Origin user agent, from client
|
|
152
159
|
* @param {object} [networkParameters] - Parameters relevant to the network request
|
package/src/modules/search.js
CHANGED
|
@@ -18,6 +18,7 @@ function createSearchUrl(query, parameters, userParameters, options, isVoiceSear
|
|
|
18
18
|
userId,
|
|
19
19
|
segments,
|
|
20
20
|
testCells,
|
|
21
|
+
originReferrer,
|
|
21
22
|
} = userParameters;
|
|
22
23
|
let queryParams = { c: version };
|
|
23
24
|
|
|
@@ -47,6 +48,11 @@ function createSearchUrl(query, parameters, userParameters, options, isVoiceSear
|
|
|
47
48
|
queryParams.ui = String(userId);
|
|
48
49
|
}
|
|
49
50
|
|
|
51
|
+
// Pull origin referrer from userParameters
|
|
52
|
+
if (originReferrer && typeof originReferrer === 'string') {
|
|
53
|
+
queryParams.origin_referrer = originReferrer;
|
|
54
|
+
}
|
|
55
|
+
|
|
50
56
|
if (parameters) {
|
|
51
57
|
const {
|
|
52
58
|
page,
|
|
@@ -186,6 +192,7 @@ class Search {
|
|
|
186
192
|
* @param {string} [userParameters.userId] - User ID, utilized to personalize results
|
|
187
193
|
* @param {string[]} [userParameters.segments] - User segments
|
|
188
194
|
* @param {object} [userParameters.testCells] - User test cells
|
|
195
|
+
* @param {string} [userParameters.originReferrer] - Client page URL (including path)
|
|
189
196
|
* @param {string} [userParameters.userIp] - Origin user IP, from client
|
|
190
197
|
* @param {string} [userParameters.userAgent] - Origin user agent, from client
|
|
191
198
|
* @param {object} [networkParameters] - Parameters relevant to the network request
|
|
@@ -288,6 +295,7 @@ class Search {
|
|
|
288
295
|
* @param {string} [userParameters.userId] - User ID, utilized to personalize results
|
|
289
296
|
* @param {string[]} [userParameters.segments] - User segments
|
|
290
297
|
* @param {object} [userParameters.testCells] - User test cells
|
|
298
|
+
* @param {string} [userParameters.originReferrer] - Client page URL (including path)
|
|
291
299
|
* @param {string} [userParameters.userIp] - Origin user IP, from client
|
|
292
300
|
* @param {string} [userParameters.userAgent] - Origin user agent, from client
|
|
293
301
|
* @param {object} [networkParameters] - Parameters relevant to the network request
|
package/src/modules/tracker.js
CHANGED
|
@@ -1061,6 +1061,7 @@ class Tracker {
|
|
|
1061
1061
|
* @param {string} [parameters.resultId] - Recommendation result identifier (returned in response from Constructor)
|
|
1062
1062
|
* @param {string} [parameters.section="Products"] - Results section
|
|
1063
1063
|
* @param {object} [parameters.analyticsTags] - Pass additional analytics data
|
|
1064
|
+
* @param {string[]|string|number} [parameters.seedItemIds] - Item ID(s) used to generate recommendations
|
|
1064
1065
|
* @param {object} userParameters - Parameters relevant to the user request
|
|
1065
1066
|
* @param {number} userParameters.sessionId - Session ID, utilized to personalize results
|
|
1066
1067
|
* @param {string} userParameters.clientId - Client ID, utilized to personalize results
|
|
@@ -1087,6 +1088,7 @@ class Tracker {
|
|
|
1087
1088
|
* url: 'https://demo.constructor.io/sandbox/farmstand',
|
|
1088
1089
|
* podId: '019927c2-f955-4020',
|
|
1089
1090
|
* numResultsViewed: 3,
|
|
1091
|
+
* seedItemIds: ['UIH976']
|
|
1090
1092
|
* },
|
|
1091
1093
|
* {
|
|
1092
1094
|
* sessionId: 1,
|
|
@@ -1117,6 +1119,8 @@ class Tracker {
|
|
|
1117
1119
|
numResultsViewed = num_results_viewed,
|
|
1118
1120
|
items,
|
|
1119
1121
|
analyticsTags,
|
|
1122
|
+
seed_item_ids,
|
|
1123
|
+
seedItemIds = seed_item_ids,
|
|
1120
1124
|
} = parameters;
|
|
1121
1125
|
|
|
1122
1126
|
if (!helpers.isNil(resultCount)) {
|
|
@@ -1157,6 +1161,12 @@ class Tracker {
|
|
|
1157
1161
|
bodyParams.analytics_tags = analyticsTags;
|
|
1158
1162
|
}
|
|
1159
1163
|
|
|
1164
|
+
if ((typeof seedItemIds === 'string' || typeof seedItemIds === 'number') && String(seedItemIds).length) {
|
|
1165
|
+
bodyParams.seed_item_ids = [String(seedItemIds)];
|
|
1166
|
+
} else if (Array.isArray(seedItemIds) && seedItemIds.length) {
|
|
1167
|
+
bodyParams.seed_item_ids = seedItemIds.map(String);
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1160
1170
|
const requestUrl = `${requestPath}${applyParamsAsString({}, userParameters, this.options)}`;
|
|
1161
1171
|
const requestMethod = 'POST';
|
|
1162
1172
|
const requestBody = applyParams(bodyParams, userParameters, { ...this.options, requestMethod });
|
|
@@ -1193,6 +1203,7 @@ class Tracker {
|
|
|
1193
1203
|
* @param {number} [parameters.resultPositionOnPage] - Position of result on page
|
|
1194
1204
|
* @param {number} [parameters.numResultsPerPage] - Number of results on page
|
|
1195
1205
|
* @param {object} [parameters.analyticsTags] - Pass additional analytics data
|
|
1206
|
+
* @param {string[]|string|number} [parameters.seedItemIds] - Item ID(s) used to generate recommendations
|
|
1196
1207
|
* @param {object} userParameters - Parameters relevant to the user request
|
|
1197
1208
|
* @param {number} userParameters.sessionId - Session ID, utilized to personalize results
|
|
1198
1209
|
* @param {string} userParameters.clientId - Client ID, utilized to personalize results
|
|
@@ -1221,6 +1232,7 @@ class Tracker {
|
|
|
1221
1232
|
* podId: '019927c2-f955-4020',
|
|
1222
1233
|
* strategyId: 'complimentary',
|
|
1223
1234
|
* itemId: 'KMH876',
|
|
1235
|
+
* seedItemIds: ['UIH976']
|
|
1224
1236
|
* },
|
|
1225
1237
|
* {
|
|
1226
1238
|
* sessionId: 1,
|
|
@@ -1259,6 +1271,8 @@ class Tracker {
|
|
|
1259
1271
|
item_name,
|
|
1260
1272
|
itemName = item_name,
|
|
1261
1273
|
analyticsTags,
|
|
1274
|
+
seed_item_ids,
|
|
1275
|
+
seedItemIds = seed_item_ids,
|
|
1262
1276
|
} = parameters;
|
|
1263
1277
|
|
|
1264
1278
|
if (variationId) {
|
|
@@ -1311,6 +1325,12 @@ class Tracker {
|
|
|
1311
1325
|
bodyParams.analytics_tags = analyticsTags;
|
|
1312
1326
|
}
|
|
1313
1327
|
|
|
1328
|
+
if ((typeof seedItemIds === 'string' || typeof seedItemIds === 'number') && String(seedItemIds).length) {
|
|
1329
|
+
bodyParams.seed_item_ids = [String(seedItemIds)];
|
|
1330
|
+
} else if (Array.isArray(seedItemIds) && seedItemIds.length) {
|
|
1331
|
+
bodyParams.seed_item_ids = seedItemIds.map(String);
|
|
1332
|
+
}
|
|
1333
|
+
|
|
1314
1334
|
const requestUrl = `${requestPath}${applyParamsAsString({}, userParameters, this.options)}`;
|
|
1315
1335
|
const requestMethod = 'POST';
|
|
1316
1336
|
const requestBody = applyParams(bodyParams, userParameters, { ...this.options, requestMethod });
|
package/src/types/index.d.ts
CHANGED
package/src/types/tracker.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
-
import { ConstructorClientOptions,
|
|
2
|
+
import { ConstructorClientOptions, ItemTracked, ItemTrackedPurchased, NetworkParameters } from '.';
|
|
3
3
|
|
|
4
4
|
export default Tracker;
|
|
5
5
|
|
|
@@ -144,6 +144,7 @@ declare class Tracker {
|
|
|
144
144
|
resultId?: string;
|
|
145
145
|
section?: string;
|
|
146
146
|
analyticsTags?: Record<string, string>;
|
|
147
|
+
seedItemIds?: string[] | string | number;
|
|
147
148
|
},
|
|
148
149
|
userParameters?: TrackerUserParameters,
|
|
149
150
|
networkParameters?: NetworkParameters
|
|
@@ -163,6 +164,7 @@ declare class Tracker {
|
|
|
163
164
|
resultPositionOnPage?: number;
|
|
164
165
|
numResultsPerPage?: number;
|
|
165
166
|
analyticsTags?: Record<string, string>;
|
|
167
|
+
seedItemIds?: string[] | string | number;
|
|
166
168
|
},
|
|
167
169
|
userParameters?: TrackerUserParameters,
|
|
168
170
|
networkParameters?: NetworkParameters
|