@constructor-io/constructorio-node 4.11.0 → 4.12.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": "4.11.0",
3
+ "version": "4.12.0",
4
4
  "description": "Constructor.io Node.js client",
5
5
  "main": "src/constructorio.js",
6
6
  "types": "src/types/constructorio.d.ts",
@@ -153,7 +153,7 @@ function createBrowseUrlFromFilter(filterName, filterValue, parameters, userPara
153
153
  const queryParams = createQueryParams(parameters, userParameters, options);
154
154
  const queryString = qs.stringify(queryParams, { indices: false });
155
155
 
156
- return `${serviceUrl}/browse/${helpers.encodeURIComponentRFC3986(helpers.trimNonBreakingSpaces(filterName))}/${helpers.encodeURIComponentRFC3986(helpers.trimNonBreakingSpaces(filterValue))}?${queryString}`;
156
+ return `${serviceUrl}/browse/${helpers.encodeURIComponentRFC3986(helpers.normalizeSpaces(filterName).trim())}/${helpers.encodeURIComponentRFC3986(helpers.normalizeSpaces(filterValue).trim())}?${queryString}`;
157
157
  }
158
158
 
159
159
  // Create URL from supplied IDs and parameters
@@ -84,7 +84,7 @@ function createRecommendationsUrl(podId, parameters, userParameters, options) {
84
84
 
85
85
  const queryString = qs.stringify(queryParams, { indices: false });
86
86
 
87
- return `${serviceUrl}/recommendations/v1/pods/${helpers.encodeURIComponentRFC3986(helpers.trimNonBreakingSpaces(podId))}?${queryString}`;
87
+ return `${serviceUrl}/recommendations/v1/pods/${helpers.encodeURIComponentRFC3986(helpers.normalizeSpaces(podId).trim())}?${queryString}`;
88
88
  }
89
89
 
90
90
  /**
@@ -16,6 +16,7 @@ function applyParams(parameters, userParameters, options) {
16
16
  segments,
17
17
  testCells,
18
18
  originReferrer,
19
+ dateTime,
19
20
  } = userParameters || {};
20
21
  let aggregateParams = Object.assign(parameters);
21
22
 
@@ -63,7 +64,7 @@ function applyParams(parameters, userParameters, options) {
63
64
  aggregateParams.origin_referrer = originReferrer;
64
65
  }
65
66
 
66
- aggregateParams._dt = Date.now();
67
+ aggregateParams._dt = dateTime || Date.now();
67
68
  aggregateParams.beacon = true;
68
69
  aggregateParams = helpers.cleanParams(aggregateParams);
69
70
 
@@ -202,6 +203,7 @@ class Tracker {
202
203
  * @param {string} [userParameters.userIp] - Client user IP
203
204
  * @param {string} [userParameters.userAgent] - Client user agent
204
205
  * @param {string} [userParameters.acceptLanguage] - Client accept language
206
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
205
207
  * @param {object} [networkParameters] - Parameters relevant to the network request
206
208
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
207
209
  * @returns {(true|Error)}
@@ -242,6 +244,7 @@ class Tracker {
242
244
  * @param {string} [userParameters.userIp] - Client user IP
243
245
  * @param {string} [userParameters.userAgent] - Client user agent
244
246
  * @param {string} [userParameters.acceptLanguage] - Client accept language
247
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
245
248
  * @param {object} [networkParameters] - Parameters relevant to the network request
246
249
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
247
250
  * @returns {(true|Error)}
@@ -290,6 +293,7 @@ class Tracker {
290
293
  * @param {string} [userParameters.userIp] - Client user IP
291
294
  * @param {string} [userParameters.userAgent] - Client user agent
292
295
  * @param {string} [userParameters.acceptLanguage] - Client accept language
296
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
293
297
  * @param {object} [networkParameters] - Parameters relevant to the network request
294
298
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
295
299
  * @returns {(true|Error)}
@@ -390,6 +394,7 @@ class Tracker {
390
394
  * @param {string} [userParameters.userIp] - Client user IP
391
395
  * @param {string} [userParameters.userAgent] - Client user agent
392
396
  * @param {string} [userParameters.acceptLanguage] - Client accept language
397
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
393
398
  * @param {object} [networkParameters] - Parameters relevant to the network request
394
399
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
395
400
  * @returns {(true|Error)}
@@ -418,7 +423,7 @@ class Tracker {
418
423
  if (term && typeof term === 'string') {
419
424
  // Ensure parameters are provided (required)
420
425
  if (parameters && typeof parameters === 'object' && !Array.isArray(parameters)) {
421
- const url = `${this.options.serviceUrl}/autocomplete/${helpers.encodeURIComponentRFC3986(helpers.trimNonBreakingSpaces(term))}/select?`;
426
+ const url = `${this.options.serviceUrl}/autocomplete/${helpers.encodeURIComponentRFC3986(helpers.normalizeSpaces(term))}/select?`;
422
427
  const queryParams = {};
423
428
  const {
424
429
  original_query,
@@ -490,6 +495,7 @@ class Tracker {
490
495
  * @param {string} [userParameters.userIp] - Client user IP
491
496
  * @param {string} [userParameters.userAgent] - Client user agent
492
497
  * @param {string} [userParameters.acceptLanguage] - Client accept language
498
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
493
499
  * @param {object} [networkParameters] - Parameters relevant to the network request
494
500
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
495
501
  * @returns {(true|Error)}
@@ -516,7 +522,7 @@ class Tracker {
516
522
  if (term && typeof term === 'string') {
517
523
  // Ensure parameters are provided (required)
518
524
  if (parameters && typeof parameters === 'object' && !Array.isArray(parameters)) {
519
- const url = `${this.options.serviceUrl}/autocomplete/${helpers.encodeURIComponentRFC3986(helpers.trimNonBreakingSpaces(term))}/search?`;
525
+ const url = `${this.options.serviceUrl}/autocomplete/${helpers.encodeURIComponentRFC3986(helpers.normalizeSpaces(term))}/search?`;
520
526
  const queryParams = {};
521
527
  const {
522
528
  original_query,
@@ -576,6 +582,7 @@ class Tracker {
576
582
  * @param {string} [userParameters.userIp] - Client user IP
577
583
  * @param {string} [userParameters.userAgent] - Client user agent
578
584
  * @param {string} [userParameters.acceptLanguage] - Client accept language
585
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
579
586
  * @param {object} [networkParameters] - Parameters relevant to the network request
580
587
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
581
588
  * @returns {(true|Error)}
@@ -674,6 +681,7 @@ class Tracker {
674
681
  * @param {string} [userParameters.userIp] - Client user IP
675
682
  * @param {string} [userParameters.userAgent] - Client user agent
676
683
  * @param {string} [userParameters.acceptLanguage] - Client accept language
684
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
677
685
  * @param {object} [networkParameters] - Parameters relevant to the network request
678
686
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
679
687
  * @returns {(true|Error)}
@@ -700,7 +708,7 @@ class Tracker {
700
708
  if (term && typeof term === 'string') {
701
709
  // Ensure parameters are provided (required)
702
710
  if (parameters && typeof parameters === 'object' && !Array.isArray(parameters)) {
703
- const url = `${this.options.serviceUrl}/autocomplete/${helpers.encodeURIComponentRFC3986(helpers.trimNonBreakingSpaces(term))}/click_through?`;
711
+ const url = `${this.options.serviceUrl}/autocomplete/${helpers.encodeURIComponentRFC3986(helpers.normalizeSpaces(term))}/click_through?`;
704
712
  const queryParams = {};
705
713
  const {
706
714
  item_name,
@@ -789,6 +797,7 @@ class Tracker {
789
797
  * @param {string} [userParameters.userIp] - Client user IP
790
798
  * @param {string} [userParameters.userAgent] - Client user agent
791
799
  * @param {string} [userParameters.acceptLanguage] - Client accept language
800
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
792
801
  * @param {object} [networkParameters] - Parameters relevant to the network request
793
802
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
794
803
  * @returns {(true|Error)}
@@ -923,6 +932,7 @@ class Tracker {
923
932
  * @param {string} [userParameters.userIp] - Client user IP
924
933
  * @param {string} [userParameters.userAgent] - Client user agent
925
934
  * @param {string} [userParameters.acceptLanguage] - Client accept language
935
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
926
936
  * @param {object} [networkParameters] - Parameters relevant to the network request
927
937
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
928
938
  * @returns {(true|Error)}
@@ -1025,6 +1035,7 @@ class Tracker {
1025
1035
  * @param {string} [userParameters.userIp] - Client user IP
1026
1036
  * @param {string} [userParameters.userAgent] - Client user agent
1027
1037
  * @param {string} [userParameters.acceptLanguage] - Client accept language
1038
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
1028
1039
  * @param {object} [networkParameters] - Parameters relevant to the network request
1029
1040
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
1030
1041
  * @returns {(true|Error)}
@@ -1156,6 +1167,7 @@ class Tracker {
1156
1167
  * @param {string} [userParameters.userIp] - Client user IP
1157
1168
  * @param {string} [userParameters.userAgent] - Client user agent
1158
1169
  * @param {string} [userParameters.acceptLanguage] - Client accept language
1170
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
1159
1171
  * @param {object} [networkParameters] - Parameters relevant to the network request
1160
1172
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
1161
1173
  * @returns {(true|Error)}
@@ -1309,6 +1321,7 @@ class Tracker {
1309
1321
  * @param {string} [userParameters.userIp] - Client user IP
1310
1322
  * @param {string} [userParameters.userAgent] - Client user agent
1311
1323
  * @param {string} [userParameters.acceptLanguage] - Client accept language
1324
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
1312
1325
  * @param {object} [networkParameters] - Parameters relevant to the network request
1313
1326
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
1314
1327
  * @returns {(true|Error)}
@@ -1461,6 +1474,7 @@ class Tracker {
1461
1474
  * @param {string} [userParameters.userIp] - Client user IP
1462
1475
  * @param {string} [userParameters.userAgent] - Client user agent
1463
1476
  * @param {string} [userParameters.acceptLanguage] - Client accept language
1477
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
1464
1478
  * @param {object} [networkParameters] - Parameters relevant to the network request
1465
1479
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
1466
1480
  * @returns {(true|Error)}
@@ -1608,6 +1622,7 @@ class Tracker {
1608
1622
  * @param {string} [userParameters.userIp] - Client user IP
1609
1623
  * @param {string} [userParameters.userAgent] - Client user agent
1610
1624
  * @param {string} [userParameters.acceptLanguage] - Client accept language
1625
+ * @param {string} [userParameters.dateTime] - Time since epoch in milliseconds
1611
1626
  * @param {object} [networkParameters] - Parameters relevant to the network request
1612
1627
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
1613
1628
  * @returns {(true|Error)}
@@ -14,6 +14,7 @@ export interface TrackerUserParameters {
14
14
  userIp?: string;
15
15
  userAgent?: string;
16
16
  acceptLanguage?: string;
17
+ dateTime?: number;
17
18
  }
18
19
 
19
20
  declare class Tracker {
@@ -7,7 +7,9 @@ const PII_REGEX = {
7
7
  };
8
8
 
9
9
  const utils = {
10
- trimNonBreakingSpaces: (string) => string.replace(/\s/g, ' ').trim(),
10
+ // Replace non-breaking spaces (or any other type of spaces caught by the regex)
11
+ // - with a regular white space
12
+ normalizeSpaces: (string) => string.replace(/\s/g, ' '),
11
13
 
12
14
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
13
15
  encodeURIComponentRFC3986: (string) => encodeURIComponent(string).replace(/[!'()*]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`),
@@ -16,12 +18,15 @@ const utils = {
16
18
  const cleanedParams = {};
17
19
 
18
20
  Object.keys(paramsObj).forEach((paramKey) => {
21
+ const excludeTrimList = ['term', 'original_query', 'search_term'];
19
22
  const paramValue = paramsObj[paramKey];
20
23
 
21
24
  if (typeof paramValue === 'string') {
22
- // Replace non-breaking spaces (or any other type of spaces caught by the regex)
23
- // - with a regular white space
24
- cleanedParams[paramKey] = utils.trimNonBreakingSpaces(paramValue);
25
+ cleanedParams[paramKey] = utils.normalizeSpaces(paramValue);
26
+
27
+ if (!excludeTrimList.includes(paramKey)) {
28
+ cleanedParams[paramKey] = cleanedParams[paramKey].trim();
29
+ }
25
30
  } else {
26
31
  cleanedParams[paramKey] = paramValue;
27
32
  }