@constructor-io/constructorio-client-javascript 2.36.4 → 2.37.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.
@@ -1,108 +1,101 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
6
-
7
5
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
-
9
6
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
-
11
7
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
12
-
13
8
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
14
-
15
9
  /* eslint-disable object-curly-newline, no-underscore-dangle, max-len, complexity */
16
10
  var EventDispatcher = require('../utils/event-dispatcher');
11
+ var helpers = require('../utils/helpers');
17
12
 
18
- var helpers = require('../utils/helpers'); // Create query params from parameters and options
19
-
20
-
13
+ // Create query params from parameters and options
21
14
  function createQueryParams(parameters, options) {
22
15
  var apiKey = options.apiKey,
23
- version = options.version,
24
- sessionId = options.sessionId,
25
- clientId = options.clientId,
26
- userId = options.userId,
27
- segments = options.segments,
28
- testCells = options.testCells;
16
+ version = options.version,
17
+ sessionId = options.sessionId,
18
+ clientId = options.clientId,
19
+ userId = options.userId,
20
+ segments = options.segments,
21
+ testCells = options.testCells;
29
22
  var queryParams = {
30
23
  c: version
31
24
  };
32
25
  queryParams.key = apiKey;
33
26
  queryParams.i = clientId;
34
- queryParams.s = sessionId; // Pull test cells from options
27
+ queryParams.s = sessionId;
35
28
 
29
+ // Pull test cells from options
36
30
  if (testCells) {
37
31
  Object.keys(testCells).forEach(function (testCellKey) {
38
32
  queryParams["ef-".concat(testCellKey)] = testCells[testCellKey];
39
33
  });
40
- } // Pull user segments from options
41
-
34
+ }
42
35
 
36
+ // Pull user segments from options
43
37
  if (segments && segments.length) {
44
38
  queryParams.us = segments;
45
- } // Pull user id from options and ensure string
46
-
39
+ }
47
40
 
41
+ // Pull user id from options and ensure string
48
42
  if (userId) {
49
43
  queryParams.ui = String(userId);
50
44
  }
51
-
52
45
  if (parameters) {
53
46
  var page = parameters.page,
54
- offset = parameters.offset,
55
- resultsPerPage = parameters.resultsPerPage,
56
- filters = parameters.filters,
57
- sortBy = parameters.sortBy,
58
- sortOrder = parameters.sortOrder,
59
- section = parameters.section,
60
- fmtOptions = parameters.fmtOptions,
61
- hiddenFields = parameters.hiddenFields,
62
- hiddenFacets = parameters.hiddenFacets,
63
- variationsMap = parameters.variationsMap,
64
- qsParam = parameters.qsParam,
65
- preFilterExpression = parameters.preFilterExpression; // Pull page from parameters
66
-
47
+ offset = parameters.offset,
48
+ resultsPerPage = parameters.resultsPerPage,
49
+ filters = parameters.filters,
50
+ sortBy = parameters.sortBy,
51
+ sortOrder = parameters.sortOrder,
52
+ section = parameters.section,
53
+ fmtOptions = parameters.fmtOptions,
54
+ hiddenFields = parameters.hiddenFields,
55
+ hiddenFacets = parameters.hiddenFacets,
56
+ variationsMap = parameters.variationsMap,
57
+ qsParam = parameters.qsParam,
58
+ preFilterExpression = parameters.preFilterExpression;
59
+
60
+ // Pull page from parameters
67
61
  if (!helpers.isNil(page)) {
68
62
  queryParams.page = page;
69
- } // Pull offset from parameters
70
-
63
+ }
71
64
 
65
+ // Pull offset from parameters
72
66
  if (!helpers.isNil(offset)) {
73
67
  queryParams.offset = offset;
74
- } // Pull results per page from parameters
75
-
68
+ }
76
69
 
70
+ // Pull results per page from parameters
77
71
  if (!helpers.isNil(resultsPerPage)) {
78
72
  queryParams.num_results_per_page = resultsPerPage;
79
73
  }
80
-
81
74
  if (filters) {
82
75
  queryParams.filters = filters;
83
- } // Pull sort by from parameters
84
-
76
+ }
85
77
 
78
+ // Pull sort by from parameters
86
79
  if (sortBy) {
87
80
  queryParams.sort_by = sortBy;
88
- } // Pull sort order from parameters
89
-
81
+ }
90
82
 
83
+ // Pull sort order from parameters
91
84
  if (sortOrder) {
92
85
  queryParams.sort_order = sortOrder;
93
- } // Pull section from parameters
94
-
86
+ }
95
87
 
88
+ // Pull section from parameters
96
89
  if (section) {
97
90
  queryParams.section = section;
98
- } // Pull format options from parameters
99
-
91
+ }
100
92
 
93
+ // Pull format options from parameters
101
94
  if (fmtOptions) {
102
95
  queryParams.fmt_options = fmtOptions;
103
- } // Pull hidden fields from parameters
104
-
96
+ }
105
97
 
98
+ // Pull hidden fields from parameters
106
99
  if (hiddenFields) {
107
100
  if (queryParams.fmt_options) {
108
101
  queryParams.fmt_options.hidden_fields = hiddenFields;
@@ -111,9 +104,9 @@ function createQueryParams(parameters, options) {
111
104
  hidden_fields: hiddenFields
112
105
  };
113
106
  }
114
- } // Pull hidden facets from parameters
115
-
107
+ }
116
108
 
109
+ // Pull hidden facets from parameters
117
110
  if (hiddenFacets) {
118
111
  if (queryParams.fmt_options) {
119
112
  queryParams.fmt_options.hidden_facets = hiddenFacets;
@@ -122,91 +115,89 @@ function createQueryParams(parameters, options) {
122
115
  hidden_facets: hiddenFacets
123
116
  };
124
117
  }
125
- } // Pull variations map from parameters
126
-
118
+ }
127
119
 
120
+ // Pull variations map from parameters
128
121
  if (variationsMap) {
129
122
  queryParams.variations_map = JSON.stringify(variationsMap);
130
- } // Pull pre_filter_expression from parameters
131
-
123
+ }
132
124
 
125
+ // Pull pre_filter_expression from parameters
133
126
  if (preFilterExpression) {
134
127
  queryParams.pre_filter_expression = JSON.stringify(preFilterExpression);
135
- } // pull qs param from parameters
136
-
128
+ }
137
129
 
130
+ // pull qs param from parameters
138
131
  if (qsParam) {
139
132
  queryParams.qs = JSON.stringify(qsParam);
140
133
  }
141
134
  }
142
-
143
135
  queryParams._dt = Date.now();
144
136
  queryParams = helpers.cleanParams(queryParams);
145
137
  return queryParams;
146
- } // Create URL from supplied filter name, value and parameters
147
-
138
+ }
148
139
 
140
+ // Create URL from supplied filter name, value and parameters
149
141
  function createBrowseUrlFromFilter(filterName, filterValue, parameters, options) {
150
- var serviceUrl = options.serviceUrl; // Validate filter name is provided
142
+ var serviceUrl = options.serviceUrl;
151
143
 
144
+ // Validate filter name is provided
152
145
  if (!filterName || typeof filterName !== 'string') {
153
146
  throw new Error('filterName is a required parameter of type string');
154
- } // Validate filter value is provided
155
-
147
+ }
156
148
 
149
+ // Validate filter value is provided
157
150
  if (!filterValue || typeof filterValue !== 'string') {
158
151
  throw new Error('filterValue is a required parameter of type string');
159
152
  }
160
-
161
153
  var queryParams = createQueryParams(parameters, options);
162
154
  var queryString = helpers.stringify(queryParams);
163
155
  return "".concat(serviceUrl, "/browse/").concat(helpers.encodeURIComponentRFC3986(helpers.trimNonBreakingSpaces(filterName)), "/").concat(helpers.encodeURIComponentRFC3986(helpers.trimNonBreakingSpaces(filterValue)), "?").concat(queryString);
164
- } // Create URL from supplied id's
165
-
156
+ }
166
157
 
158
+ // Create URL from supplied id's
167
159
  function createBrowseUrlFromIDs(ids, parameters, options) {
168
- var serviceUrl = options.serviceUrl; // Validate id's are provided
160
+ var serviceUrl = options.serviceUrl;
169
161
 
162
+ // Validate id's are provided
170
163
  if (!ids || !Array.isArray(ids) || !ids.length) {
171
164
  throw new Error('ids is a required parameter of type array');
172
165
  }
173
-
174
166
  var queryParams = _objectSpread(_objectSpread({}, createQueryParams(parameters, options)), {}, {
175
167
  ids: ids
176
168
  });
177
-
178
169
  var queryString = helpers.stringify(queryParams);
179
170
  return "".concat(serviceUrl, "/browse/items?").concat(queryString);
180
- } // Create URL for facets
181
-
171
+ }
182
172
 
173
+ // Create URL for facets
183
174
  function createBrowseUrlForFacets(parameters, options) {
184
175
  var serviceUrl = options.serviceUrl;
176
+ var queryParams = _objectSpread({}, createQueryParams(parameters, options));
185
177
 
186
- var queryParams = _objectSpread({}, createQueryParams(parameters, options)); // Endpoint does not accept _dt
187
-
188
-
178
+ // Endpoint does not accept _dt
189
179
  delete queryParams._dt;
190
180
  var queryString = helpers.stringify(queryParams);
191
181
  return "".concat(serviceUrl, "/browse/facets?").concat(queryString);
192
- } // Create URL from supplied facet name and parameters
193
-
182
+ }
194
183
 
184
+ // Create URL from supplied facet name and parameters
195
185
  function createBrowseUrlForFacetOptions(facetName, parameters, options) {
196
- var serviceUrl = options.serviceUrl; // Validate facet name is provided
186
+ var serviceUrl = options.serviceUrl;
197
187
 
188
+ // Validate facet name is provided
198
189
  if (!facetName || typeof facetName !== 'string') {
199
190
  throw new Error('facetName is a required parameter of type string');
200
191
  }
201
-
202
192
  var queryParams = _objectSpread({}, createQueryParams(parameters, options));
193
+ queryParams.facet_name = facetName;
203
194
 
204
- queryParams.facet_name = facetName; // Endpoint does not accept _dt
205
-
195
+ // Endpoint does not accept _dt
206
196
  delete queryParams._dt;
207
197
  var queryString = helpers.stringify(queryParams);
208
198
  return "".concat(serviceUrl, "/browse/facet_options?").concat(queryString);
209
199
  }
200
+
210
201
  /**
211
202
  * Interface to browse related API calls
212
203
  *
@@ -214,14 +205,13 @@ function createBrowseUrlForFacetOptions(facetName, parameters, options) {
214
205
  * @inner
215
206
  * @returns {object}
216
207
  */
217
-
218
-
219
208
  var Browse = /*#__PURE__*/function () {
220
209
  function Browse(options) {
221
210
  (0, _classCallCheck2["default"])(this, Browse);
222
211
  this.options = options || {};
223
212
  this.eventDispatcher = new EventDispatcher(options.eventDispatcher);
224
213
  }
214
+
225
215
  /**
226
216
  * Retrieve browse results from API
227
217
  *
@@ -255,38 +245,32 @@ var Browse = /*#__PURE__*/function () {
255
245
  * },
256
246
  * });
257
247
  */
258
-
259
-
260
248
  (0, _createClass2["default"])(Browse, [{
261
249
  key: "getBrowseResults",
262
250
  value: function getBrowseResults(filterName, filterValue, parameters) {
263
251
  var _this = this;
264
-
265
252
  var networkParameters = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
266
253
  var requestUrl;
267
254
  var fetch = this.options.fetch;
268
255
  var signal;
269
-
270
256
  if (typeof AbortController === 'function') {
271
257
  var controller = new AbortController();
272
- signal = controller && controller.signal; // Handle network timeout if specified
258
+ signal = controller && controller.signal;
273
259
 
260
+ // Handle network timeout if specified
274
261
  helpers.applyNetworkTimeout(this.options, networkParameters, controller);
275
262
  }
276
-
277
263
  try {
278
264
  requestUrl = createBrowseUrlFromFilter(filterName, filterValue, parameters, this.options);
279
265
  } catch (e) {
280
266
  return Promise.reject(e);
281
267
  }
282
-
283
268
  return fetch(requestUrl, {
284
269
  signal: signal
285
270
  }).then(function (response) {
286
271
  if (response.ok) {
287
272
  return response.json();
288
273
  }
289
-
290
274
  return helpers.throwHttpErrorFromResponse(new Error(), response);
291
275
  }).then(function (json) {
292
276
  if (json.response && json.response.results) {
@@ -297,15 +281,13 @@ var Browse = /*#__PURE__*/function () {
297
281
  result.result_id = json.result_id;
298
282
  });
299
283
  }
300
-
301
284
  _this.eventDispatcher.queue('browse.getBrowseResults.completed', json);
302
-
303
285
  return json;
304
286
  }
305
-
306
287
  throw new Error('getBrowseResults response data is malformed');
307
288
  });
308
289
  }
290
+
309
291
  /**
310
292
  * Retrieve browse results from API using item id's
311
293
  *
@@ -334,37 +316,32 @@ var Browse = /*#__PURE__*/function () {
334
316
  * },
335
317
  * });
336
318
  */
337
-
338
319
  }, {
339
320
  key: "getBrowseResultsForItemIds",
340
321
  value: function getBrowseResultsForItemIds(itemIds, parameters) {
341
322
  var _this2 = this;
342
-
343
323
  var networkParameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
344
324
  var requestUrl;
345
325
  var fetch = this.options.fetch;
346
326
  var signal;
347
-
348
327
  if (typeof AbortController === 'function') {
349
328
  var controller = new AbortController();
350
- signal = controller && controller.signal; // Handle network timeout if specified
329
+ signal = controller && controller.signal;
351
330
 
331
+ // Handle network timeout if specified
352
332
  helpers.applyNetworkTimeout(this.options, networkParameters, controller);
353
333
  }
354
-
355
334
  try {
356
335
  requestUrl = createBrowseUrlFromIDs(itemIds, parameters, this.options);
357
336
  } catch (e) {
358
337
  return Promise.reject(e);
359
338
  }
360
-
361
339
  return fetch(requestUrl, {
362
340
  signal: signal
363
341
  }).then(function (response) {
364
342
  if (response.ok) {
365
343
  return response.json();
366
344
  }
367
-
368
345
  return helpers.throwHttpErrorFromResponse(new Error(), response);
369
346
  }).then(function (json) {
370
347
  if (json.response && json.response.results) {
@@ -375,15 +352,13 @@ var Browse = /*#__PURE__*/function () {
375
352
  result.result_id = json.result_id;
376
353
  });
377
354
  }
378
-
379
355
  _this2.eventDispatcher.queue('browse.getBrowseResultsForItemIds.completed', json);
380
-
381
356
  return json;
382
357
  }
383
-
384
358
  throw new Error('getBrowseResultsForItemIds response data is malformed');
385
359
  });
386
360
  }
361
+
387
362
  /**
388
363
  * Retrieve browse groups from API
389
364
  *
@@ -405,25 +380,22 @@ var Browse = /*#__PURE__*/function () {
405
380
  * }
406
381
  * });
407
382
  */
408
-
409
383
  }, {
410
384
  key: "getBrowseGroups",
411
385
  value: function getBrowseGroups(parameters) {
412
386
  var _this3 = this;
413
-
414
387
  var networkParameters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
415
388
  var fetch = this.options.fetch;
416
389
  var serviceUrl = this.options.serviceUrl;
417
390
  var queryParams = createQueryParams(parameters, this.options);
418
391
  var signal;
419
-
420
392
  if (typeof AbortController === 'function') {
421
393
  var controller = new AbortController();
422
- signal = controller && controller.signal; // Handle network timeout if specified
394
+ signal = controller && controller.signal;
423
395
 
396
+ // Handle network timeout if specified
424
397
  helpers.applyNetworkTimeout(this.options, networkParameters, controller);
425
398
  }
426
-
427
399
  delete queryParams._dt;
428
400
  var queryString = helpers.stringify(queryParams);
429
401
  var requestUrl = "".concat(serviceUrl, "/browse/groups?").concat(queryString);
@@ -433,18 +405,16 @@ var Browse = /*#__PURE__*/function () {
433
405
  if (response.ok) {
434
406
  return response.json();
435
407
  }
436
-
437
408
  return helpers.throwHttpErrorFromResponse(new Error(), response);
438
409
  }).then(function (json) {
439
410
  if (json.response && json.response.groups) {
440
411
  _this3.eventDispatcher.queue('browse.getBrowseGroups.completed', json);
441
-
442
412
  return json;
443
413
  }
444
-
445
414
  throw new Error('getBrowseGroups response data is malformed');
446
415
  });
447
416
  }
417
+
448
418
  /**
449
419
  * Retrieve browse facets from API
450
420
  *
@@ -465,47 +435,41 @@ var Browse = /*#__PURE__*/function () {
465
435
  * resultsPerPage: 10,
466
436
  * });
467
437
  */
468
-
469
438
  }, {
470
439
  key: "getBrowseFacets",
471
440
  value: function getBrowseFacets(parameters, networkParameters) {
472
441
  var _this4 = this;
473
-
474
442
  var requestUrl;
475
443
  var fetch = this.options.fetch;
476
444
  var signal;
477
-
478
445
  if (typeof AbortController === 'function') {
479
446
  var controller = new AbortController();
480
- signal = controller && controller.signal; // Handle network timeout if specified
447
+ signal = controller && controller.signal;
481
448
 
449
+ // Handle network timeout if specified
482
450
  helpers.applyNetworkTimeout(this.options, networkParameters, controller);
483
451
  }
484
-
485
452
  try {
486
453
  requestUrl = createBrowseUrlForFacets(parameters, this.options);
487
454
  } catch (e) {
488
455
  return Promise.reject(e);
489
456
  }
490
-
491
457
  return fetch(requestUrl, {
492
458
  signal: signal
493
459
  }).then(function (response) {
494
460
  if (response.ok) {
495
461
  return response.json();
496
462
  }
497
-
498
463
  return helpers.throwHttpErrorFromResponse(new Error(), response);
499
464
  }).then(function (json) {
500
465
  if (json.response && json.response.facets) {
501
466
  _this4.eventDispatcher.queue('browse.getBrowseFacets.completed', json);
502
-
503
467
  return json;
504
468
  }
505
-
506
469
  throw new Error('getBrowseFacets response data is malformed');
507
470
  });
508
471
  }
472
+
509
473
  /**
510
474
  * Retrieve facet options from API
511
475
  *
@@ -523,51 +487,43 @@ var Browse = /*#__PURE__*/function () {
523
487
  * constructorio.browse.getBrowseFacetOptions('price', {
524
488
  * });
525
489
  */
526
-
527
490
  }, {
528
491
  key: "getBrowseFacetOptions",
529
492
  value: function getBrowseFacetOptions(facetName) {
530
493
  var _this5 = this;
531
-
532
494
  var parameters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
533
495
  var networkParameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
534
496
  var requestUrl;
535
497
  var fetch = this.options.fetch;
536
498
  var signal;
537
-
538
499
  if (typeof AbortController === 'function') {
539
500
  var controller = new AbortController();
540
- signal = controller && controller.signal; // Handle network timeout if specified
501
+ signal = controller && controller.signal;
541
502
 
503
+ // Handle network timeout if specified
542
504
  helpers.applyNetworkTimeout(this.options, networkParameters, controller);
543
505
  }
544
-
545
506
  try {
546
507
  requestUrl = createBrowseUrlForFacetOptions(facetName, parameters, this.options);
547
508
  } catch (e) {
548
509
  return Promise.reject(e);
549
510
  }
550
-
551
511
  return fetch(requestUrl, {
552
512
  signal: signal
553
513
  }).then(function (response) {
554
514
  if (response.ok) {
555
515
  return response.json();
556
516
  }
557
-
558
517
  return helpers.throwHttpErrorFromResponse(new Error(), response);
559
518
  }).then(function (json) {
560
519
  if (json.response && json.response.facets) {
561
520
  _this5.eventDispatcher.queue('browse.getBrowseFacetOptions.completed', json);
562
-
563
521
  return json;
564
522
  }
565
-
566
523
  throw new Error('getBrowseFacetOptions response data is malformed');
567
524
  });
568
525
  }
569
526
  }]);
570
527
  return Browse;
571
528
  }();
572
-
573
529
  module.exports = Browse;