@constructor-io/constructorio-client-javascript 2.27.2 → 2.27.6

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.
@@ -82,7 +82,13 @@ function createAutocompleteUrl(query, parameters, options) {
82
82
 
83
83
 
84
84
  if (hiddenFields) {
85
- queryParams.hidden_fields = hiddenFields;
85
+ if (queryParams.fmt_options) {
86
+ queryParams.fmt_options.hidden_fields = hiddenFields;
87
+ } else {
88
+ queryParams.fmt_options = {
89
+ hidden_fields: hiddenFields
90
+ };
91
+ }
86
92
  }
87
93
  }
88
94
 
@@ -12,6 +12,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
12
12
 
13
13
  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
14
 
15
+ /* eslint-disable max-len */
16
+
15
17
  /* eslint-disable object-curly-newline, no-underscore-dangle */
16
18
  var qs = require('qs');
17
19
 
@@ -63,7 +65,8 @@ function createQueryParams(parameters, options) {
63
65
  sortOrder = parameters.sortOrder,
64
66
  section = parameters.section,
65
67
  fmtOptions = parameters.fmtOptions,
66
- hiddenFields = parameters.hiddenFields; // Pull page from parameters
68
+ hiddenFields = parameters.hiddenFields,
69
+ hiddenFacets = parameters.hiddenFacets; // Pull page from parameters
67
70
 
68
71
  if (!helpers.isNil(page)) {
69
72
  queryParams.page = page;
@@ -100,7 +103,24 @@ function createQueryParams(parameters, options) {
100
103
 
101
104
 
102
105
  if (hiddenFields) {
103
- queryParams.hidden_fields = hiddenFields;
106
+ if (queryParams.fmt_options) {
107
+ queryParams.fmt_options.hidden_fields = hiddenFields;
108
+ } else {
109
+ queryParams.fmt_options = {
110
+ hidden_fields: hiddenFields
111
+ };
112
+ }
113
+ } // Pull hidden facets from parameters
114
+
115
+
116
+ if (hiddenFacets) {
117
+ if (queryParams.fmt_options) {
118
+ queryParams.fmt_options.hidden_facets = hiddenFacets;
119
+ } else {
120
+ queryParams.fmt_options = {
121
+ hidden_facets: hiddenFacets
122
+ };
123
+ }
104
124
  }
105
125
  }
106
126
 
@@ -154,13 +174,29 @@ function createBrowseUrlForFacets(parameters, options) {
154
174
  var queryParams = _objectSpread({}, createQueryParams(parameters, options)); // Endpoint does not accept _dt
155
175
 
156
176
 
157
- delete queryParams._dt; // fmt_options would require a token to be passed along
158
-
159
- delete queryParams.fmt_options;
177
+ delete queryParams._dt;
160
178
  var queryString = qs.stringify(queryParams, {
161
179
  indices: false
162
180
  });
163
181
  return "".concat(serviceUrl, "/browse/facets?").concat(queryString);
182
+ } // Create URL from supplied facet name and parameters
183
+
184
+
185
+ function createBrowseUrlForFacetOptions(facetName, parameters, options) {
186
+ var serviceUrl = options.serviceUrl; // Validate facet name is provided
187
+
188
+ if (!facetName || typeof facetName !== 'string') {
189
+ throw new Error('facetName is a required parameter of type string');
190
+ }
191
+
192
+ var queryParams = _objectSpread({}, createQueryParams(parameters, options)); // Endpoint does not accept _dt
193
+
194
+
195
+ delete queryParams._dt;
196
+ var queryString = qs.stringify(queryParams, {
197
+ indices: false
198
+ });
199
+ return "".concat(serviceUrl, "/browse/facet_options?facet_name=").concat(facetName, "&").concat(queryString);
164
200
  }
165
201
  /**
166
202
  * Interface to browse related API calls
@@ -192,6 +228,7 @@ var Browse = /*#__PURE__*/function () {
192
228
  * @param {string} [parameters.sortOrder='descending'] - The sort order for results
193
229
  * @param {object} [parameters.fmtOptions] - The format options used to refine result groups
194
230
  * @param {string[]} [parameters.hiddenFields] - Hidden metadata fields to return
231
+ * @param {string[]} [parameters.hiddenFacets] - Hidden facets to return
195
232
  * @param {object} [networkParameters] - Parameters relevant to the network request
196
233
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
197
234
  * @returns {Promise}
@@ -269,6 +306,8 @@ var Browse = /*#__PURE__*/function () {
269
306
  * @param {string} [parameters.sortBy='relevance'] - The sort method for results
270
307
  * @param {string} [parameters.sortOrder='descending'] - The sort order for results
271
308
  * @param {object} [parameters.fmtOptions] - The format options used to refine result groups
309
+ * @param {string[]} [parameters.hiddenFields] - Hidden metadata fields to return
310
+ * @param {string[]} [parameters.hiddenFacets] - Hidden facets to return
272
311
  * @param {object} [networkParameters] - Parameters relevant to the network request
273
312
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
274
313
  * @returns {Promise}
@@ -402,6 +441,7 @@ var Browse = /*#__PURE__*/function () {
402
441
  * @function getBrowseFacets
403
442
  * @param {object} [parameters] - Additional parameters to refine result set
404
443
  * @param {number} [parameters.page] - The page number of the results
444
+ * @param {boolean} [parameters.fmtOptions.show_hidden_facets] - Include facets configured as hidden
405
445
  * @param {number} [parameters.resultsPerPage] - The number of results per page to return
406
446
  * @param {object} [networkParameters] - Parameters relevant to the network request
407
447
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
@@ -456,6 +496,68 @@ var Browse = /*#__PURE__*/function () {
456
496
  throw new Error('getBrowseFacets response data is malformed');
457
497
  });
458
498
  }
499
+ /**
500
+ * Retrieve facet options from API
501
+ *
502
+ * @function getBrowseFacetOptions
503
+ * @param {string} facetName - Name of the facet whose options to return
504
+ * @param {object} [networkParameters] - Parameters relevant to the network request
505
+ * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
506
+ * @param {object} [parameters] - Additional parameters to refine result set
507
+ * @param {object} [parameters.fmtOptions] - The format options used to refine result groups
508
+ * @param {boolean} [parameters.fmtOptions.show_hidden_facets] - Include facets configured as hidden
509
+ * @param {}
510
+ * @returns {Promise}
511
+ * @see https://docs.constructor.io/rest_api/browse/facet_options/
512
+ * @example
513
+ * constructorio.browse.getBrowseFacetOptions('price', {
514
+ * });
515
+ */
516
+
517
+ }, {
518
+ key: "getBrowseFacetOptions",
519
+ value: function getBrowseFacetOptions(facetName) {
520
+ var _this5 = this;
521
+
522
+ var parameters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
523
+ var networkParameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
524
+ var requestUrl;
525
+ var fetch = this.options && this.options.fetch || fetchPonyfill({
526
+ Promise: Promise
527
+ }).fetch;
528
+ var signal;
529
+
530
+ if (typeof AbortController === 'function') {
531
+ var controller = new AbortController();
532
+ signal = controller && controller.signal; // Handle network timeout if specified
533
+
534
+ helpers.applyNetworkTimeout(this.options, networkParameters, controller);
535
+ }
536
+
537
+ try {
538
+ requestUrl = createBrowseUrlForFacetOptions(facetName, parameters, this.options);
539
+ } catch (e) {
540
+ return Promise.reject(e);
541
+ }
542
+
543
+ return fetch(requestUrl, {
544
+ signal: signal
545
+ }).then(function (response) {
546
+ if (response.ok) {
547
+ return response.json();
548
+ }
549
+
550
+ return helpers.throwHttpErrorFromResponse(new Error(), response);
551
+ }).then(function (json) {
552
+ if (json.response && json.response.facets) {
553
+ _this5.eventDispatcher.queue('browse.getBrowseFacetOptions.completed', json);
554
+
555
+ return json;
556
+ }
557
+
558
+ throw new Error('getBrowseFacetOptions response data is malformed');
559
+ });
560
+ }
459
561
  }]);
460
562
  return Browse;
461
563
  }();
@@ -6,6 +6,8 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
6
6
 
7
7
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
8
 
9
+ /* eslint-disable max-len */
10
+
9
11
  /* eslint-disable object-curly-newline, no-underscore-dangle */
10
12
  var qs = require('qs');
11
13
 
@@ -63,7 +65,8 @@ function createSearchUrl(query, parameters, options) {
63
65
  sortOrder = parameters.sortOrder,
64
66
  section = parameters.section,
65
67
  fmtOptions = parameters.fmtOptions,
66
- hiddenFields = parameters.hiddenFields; // Pull page from parameters
68
+ hiddenFields = parameters.hiddenFields,
69
+ hiddenFacets = parameters.hiddenFacets; // Pull page from parameters
67
70
 
68
71
  if (!helpers.isNil(page)) {
69
72
  queryParams.page = page;
@@ -101,7 +104,24 @@ function createSearchUrl(query, parameters, options) {
101
104
 
102
105
 
103
106
  if (hiddenFields) {
104
- queryParams.hidden_fields = hiddenFields;
107
+ if (queryParams.fmt_options) {
108
+ queryParams.fmt_options.hidden_fields = hiddenFields;
109
+ } else {
110
+ queryParams.fmt_options = {
111
+ hidden_fields: hiddenFields
112
+ };
113
+ }
114
+ } // Pull hidden facets from parameters
115
+
116
+
117
+ if (hiddenFacets) {
118
+ if (queryParams.fmt_options) {
119
+ queryParams.fmt_options.hidden_facets = hiddenFacets;
120
+ } else {
121
+ queryParams.fmt_options = {
122
+ hidden_facets: hiddenFacets
123
+ };
124
+ }
105
125
  }
106
126
  }
107
127
 
@@ -142,6 +162,7 @@ var Search = /*#__PURE__*/function () {
142
162
  * @param {string} [parameters.section='Products'] - The section name for results
143
163
  * @param {object} [parameters.fmtOptions] - The format options used to refine result groups
144
164
  * @param {string[]} [parameters.hiddenFields] - Hidden metadata fields to return
165
+ * @param {string[]} [parameters.hiddenFacets] - Hidden facets to return
145
166
  * @param {object} [networkParameters] - Parameters relevant to the network request
146
167
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
147
168
  * @returns {Promise}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructor-io/constructorio-client-javascript",
3
- "version": "2.27.2",
3
+ "version": "2.27.6",
4
4
  "description": "Constructor.io JavaScript client",
5
5
  "main": "lib/constructorio.js",
6
6
  "scripts": {
@@ -61,7 +61,7 @@
61
61
  "sinon-chai": "^3.7.0"
62
62
  },
63
63
  "dependencies": {
64
- "@constructor-io/constructorio-id": "^2.4.8",
64
+ "@constructor-io/constructorio-id": "^2.4.9",
65
65
  "crc-32": "^1.2.0",
66
66
  "es6-promise": "^4.2.8",
67
67
  "events": "^3.0.0",