@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructor-io/constructorio-node",
3
- "version": "5.7.0",
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": "^8.3.2"
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.14.2"
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
@@ -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
@@ -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
@@ -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
@@ -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 });
@@ -27,6 +27,7 @@ export interface UserParameters {
27
27
  userId?: string;
28
28
  segments?: string[];
29
29
  testCells?: Record<string, any>;
30
+ originReferrer?: string;
30
31
  userIp?: string;
31
32
  userAgent?: string;
32
33
  }
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter } from 'events';
2
- import { ConstructorClientOptions, NetworkParameters, ItemTracked, ItemTrackedPurchased } from '.';
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