@constructor-io/constructorio-client-javascript 2.37.0 → 2.37.2
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/lib/constructorio.js +36 -60
- package/lib/modules/autocomplete.js +40 -55
- package/lib/modules/browse.js +86 -130
- package/lib/modules/quizzes.js +39 -60
- package/lib/modules/recommendations.js +38 -52
- package/lib/modules/search.js +66 -91
- package/lib/modules/tracker.js +430 -656
- package/lib/types/recommendations.d.ts +1 -1
- package/lib/utils/botlist.js +1 -1
- package/lib/utils/event-dispatcher.js +14 -20
- package/lib/utils/events.js +29 -95
- package/lib/utils/helpers.js +7 -29
- package/lib/utils/humanity-check.js +10 -19
- package/lib/utils/request-queue.js +28 -48
- package/lib/utils/store.js +2 -3
- package/lib/utils/store.overflow.js +6 -27
- package/lib/utils/store_old.js +9 -0
- package/package.json +1 -1
package/lib/modules/browse.js
CHANGED
|
@@ -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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
// Create query params from parameters and options
|
|
21
14
|
function createQueryParams(parameters, options) {
|
|
22
15
|
var apiKey = options.apiKey,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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;
|
|
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
|
-
}
|
|
41
|
-
|
|
34
|
+
}
|
|
42
35
|
|
|
36
|
+
// Pull user segments from options
|
|
43
37
|
if (segments && segments.length) {
|
|
44
38
|
queryParams.us = segments;
|
|
45
|
-
}
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
}
|
|
70
|
-
|
|
63
|
+
}
|
|
71
64
|
|
|
65
|
+
// Pull offset from parameters
|
|
72
66
|
if (!helpers.isNil(offset)) {
|
|
73
67
|
queryParams.offset = offset;
|
|
74
|
-
}
|
|
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
|
-
}
|
|
84
|
-
|
|
76
|
+
}
|
|
85
77
|
|
|
78
|
+
// Pull sort by from parameters
|
|
86
79
|
if (sortBy) {
|
|
87
80
|
queryParams.sort_by = sortBy;
|
|
88
|
-
}
|
|
89
|
-
|
|
81
|
+
}
|
|
90
82
|
|
|
83
|
+
// Pull sort order from parameters
|
|
91
84
|
if (sortOrder) {
|
|
92
85
|
queryParams.sort_order = sortOrder;
|
|
93
|
-
}
|
|
94
|
-
|
|
86
|
+
}
|
|
95
87
|
|
|
88
|
+
// Pull section from parameters
|
|
96
89
|
if (section) {
|
|
97
90
|
queryParams.section = section;
|
|
98
|
-
}
|
|
99
|
-
|
|
91
|
+
}
|
|
100
92
|
|
|
93
|
+
// Pull format options from parameters
|
|
101
94
|
if (fmtOptions) {
|
|
102
95
|
queryParams.fmt_options = fmtOptions;
|
|
103
|
-
}
|
|
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
|
-
}
|
|
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
|
-
}
|
|
126
|
-
|
|
118
|
+
}
|
|
127
119
|
|
|
120
|
+
// Pull variations map from parameters
|
|
128
121
|
if (variationsMap) {
|
|
129
122
|
queryParams.variations_map = JSON.stringify(variationsMap);
|
|
130
|
-
}
|
|
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
|
-
}
|
|
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
|
-
}
|
|
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;
|
|
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
|
-
}
|
|
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
|
-
}
|
|
165
|
-
|
|
156
|
+
}
|
|
166
157
|
|
|
158
|
+
// Create URL from supplied id's
|
|
167
159
|
function createBrowseUrlFromIDs(ids, parameters, options) {
|
|
168
|
-
var serviceUrl = options.serviceUrl;
|
|
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
|
-
}
|
|
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
|
-
|
|
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
|
-
}
|
|
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;
|
|
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
|
-
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|