@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,107 +1,100 @@
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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
-
11
7
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
12
-
13
8
  /* eslint-disable object-curly-newline, no-underscore-dangle */
14
9
  var EventDispatcher = require('../utils/event-dispatcher');
10
+ var helpers = require('../utils/helpers');
15
11
 
16
- var helpers = require('../utils/helpers'); // Create URL from supplied quizId and parameters
17
-
18
-
12
+ // Create URL from supplied quizId and parameters
19
13
  function createQuizUrl(quizId, parameters, options, path) {
20
14
  var apiKey = options.apiKey,
21
- clientId = options.clientId,
22
- sessionId = options.sessionId,
23
- segments = options.segments,
24
- userId = options.userId,
25
- version = options.version,
26
- quizzesServiceUrl = options.quizzesServiceUrl;
15
+ clientId = options.clientId,
16
+ sessionId = options.sessionId,
17
+ segments = options.segments,
18
+ userId = options.userId,
19
+ version = options.version,
20
+ quizzesServiceUrl = options.quizzesServiceUrl;
27
21
  var queryParams = {
28
22
  c: version
29
23
  };
30
24
  var answersParamString = '';
31
25
  queryParams.key = apiKey;
32
26
  queryParams.i = clientId;
33
- queryParams.s = sessionId; // Pull user segments from options
27
+ queryParams.s = sessionId;
34
28
 
29
+ // Pull user segments from options
35
30
  if (segments && segments.length) {
36
31
  queryParams.us = segments;
37
- } // Pull user id from options and ensure string
38
-
32
+ }
39
33
 
34
+ // Pull user id from options and ensure string
40
35
  if (userId) {
41
36
  queryParams.ui = String(userId);
42
- } // Validate quiz id is provided
43
-
37
+ }
44
38
 
39
+ // Validate quiz id is provided
45
40
  if (!quizId || typeof quizId !== 'string') {
46
41
  throw new Error('quizId is a required parameter of type string');
47
42
  }
48
-
49
43
  if (path === 'results' && ((0, _typeof2["default"])(parameters.answers) !== 'object' || !Array.isArray(parameters.answers) || parameters.answers.length === 0)) {
50
44
  throw new Error('answers is a required parameter of type array');
51
45
  }
52
-
53
46
  if (parameters) {
54
47
  var section = parameters.section,
55
- answers = parameters.answers,
56
- quizSessionId = parameters.quizSessionId,
57
- quizVersionId = parameters.quizVersionId,
58
- page = parameters.page,
59
- resultsPerPage = parameters.resultsPerPage,
60
- filters = parameters.filters; // Pull section from parameters
61
-
48
+ answers = parameters.answers,
49
+ quizSessionId = parameters.quizSessionId,
50
+ quizVersionId = parameters.quizVersionId,
51
+ page = parameters.page,
52
+ resultsPerPage = parameters.resultsPerPage,
53
+ filters = parameters.filters;
54
+
55
+ // Pull section from parameters
62
56
  if (section) {
63
57
  queryParams.section = section;
64
- } // Pull quiz_version_id from parameters
65
-
58
+ }
66
59
 
60
+ // Pull quiz_version_id from parameters
67
61
  if (quizVersionId) {
68
62
  queryParams.quiz_version_id = quizVersionId;
69
- } // Pull quiz_session_id from parameters
70
-
63
+ }
71
64
 
65
+ // Pull quiz_session_id from parameters
72
66
  if (quizSessionId) {
73
67
  queryParams.quiz_session_id = quizSessionId;
74
- } // Pull a (answers) from parameters and transform
75
-
68
+ }
76
69
 
70
+ // Pull a (answers) from parameters and transform
77
71
  if (answers && answers.length) {
78
72
  answersParamString = "&".concat(helpers.stringify({
79
73
  a: answers.map(function (ans) {
80
74
  return (0, _toConsumableArray2["default"])(ans).join(',');
81
75
  })
82
76
  }));
83
- } // Pull page from parameters
84
-
77
+ }
85
78
 
79
+ // Pull page from parameters
86
80
  if (!helpers.isNil(page)) {
87
81
  queryParams.page = page;
88
- } // Pull results per page from parameters
89
-
82
+ }
90
83
 
84
+ // Pull results per page from parameters
91
85
  if (!helpers.isNil(resultsPerPage)) {
92
86
  queryParams.num_results_per_page = resultsPerPage;
93
87
  }
94
-
95
88
  if (filters) {
96
89
  queryParams.filters = filters;
97
90
  }
98
91
  }
99
-
100
92
  queryParams._dt = Date.now();
101
93
  queryParams = helpers.cleanParams(queryParams);
102
94
  var queryString = helpers.stringify(queryParams);
103
95
  return "".concat(quizzesServiceUrl, "/v1/quizzes/").concat(encodeURIComponent(quizId), "/").concat(encodeURIComponent(path), "/?").concat(queryString).concat(answersParamString);
104
96
  }
97
+
105
98
  /**
106
99
  * Interface to quiz related API calls
107
100
  *
@@ -109,14 +102,13 @@ function createQuizUrl(quizId, parameters, options, path) {
109
102
  * @inner
110
103
  * @returns {object}
111
104
  */
112
-
113
-
114
105
  var Quizzes = /*#__PURE__*/function () {
115
106
  function Quizzes(options) {
116
107
  (0, _classCallCheck2["default"])(this, Quizzes);
117
108
  this.options = options || {};
118
109
  this.eventDispatcher = new EventDispatcher(options.eventDispatcher);
119
110
  }
111
+
120
112
  /**
121
113
  * Retrieve next question from API
122
114
  *
@@ -140,26 +132,22 @@ var Quizzes = /*#__PURE__*/function () {
140
132
  * quizSessionId: '1234',
141
133
  * });
142
134
  */
143
-
144
-
145
135
  (0, _createClass2["default"])(Quizzes, [{
146
136
  key: "getQuizNextQuestion",
147
137
  value: function getQuizNextQuestion(quizId, parameters) {
148
138
  var _this = this;
149
-
150
139
  var networkParameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
151
140
  var requestUrl;
152
141
  var fetch = this.options.fetch;
153
142
  var controller = new AbortController();
154
143
  var signal = controller.signal;
155
-
156
144
  try {
157
145
  requestUrl = createQuizUrl(quizId, parameters, this.options, 'next');
158
146
  } catch (e) {
159
147
  return Promise.reject(e);
160
- } // Handle network timeout if specified
161
-
148
+ }
162
149
 
150
+ // Handle network timeout if specified
163
151
  helpers.applyNetworkTimeout(this.options, networkParameters, controller);
164
152
  return fetch(requestUrl, {
165
153
  signal: signal
@@ -167,18 +155,16 @@ var Quizzes = /*#__PURE__*/function () {
167
155
  if (response.ok) {
168
156
  return response.json();
169
157
  }
170
-
171
158
  return helpers.throwHttpErrorFromResponse(new Error(), response);
172
159
  }).then(function (json) {
173
160
  if (json.quiz_version_id) {
174
161
  _this.eventDispatcher.queue('quizzes.getQuizNextQuestion.completed', json);
175
-
176
162
  return json;
177
163
  }
178
-
179
164
  throw new Error('getQuizNextQuestion response data is malformed');
180
165
  });
181
166
  }
167
+
182
168
  /**
183
169
  * Retrieves filter expression and recommendation URL from given answers
184
170
  *
@@ -205,25 +191,22 @@ var Quizzes = /*#__PURE__*/function () {
205
191
  * quizSessionId: '234'
206
192
  * });
207
193
  */
208
-
209
194
  }, {
210
195
  key: "getQuizResults",
211
196
  value: function getQuizResults(quizId, parameters) {
212
197
  var _this2 = this;
213
-
214
198
  var networkParameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
215
199
  var requestUrl;
216
200
  var fetch = this.options.fetch;
217
201
  var controller = new AbortController();
218
202
  var signal = controller.signal;
219
-
220
203
  try {
221
204
  requestUrl = createQuizUrl(quizId, parameters, this.options, 'results');
222
205
  } catch (e) {
223
206
  return Promise.reject(e);
224
- } // Handle network timeout if specified
225
-
207
+ }
226
208
 
209
+ // Handle network timeout if specified
227
210
  helpers.applyNetworkTimeout(this.options, networkParameters, controller);
228
211
  return fetch(requestUrl, {
229
212
  signal: signal
@@ -231,20 +214,16 @@ var Quizzes = /*#__PURE__*/function () {
231
214
  if (response.ok) {
232
215
  return response.json();
233
216
  }
234
-
235
217
  return helpers.throwHttpErrorFromResponse(new Error(), response);
236
218
  }).then(function (json) {
237
219
  if (json.quiz_version_id) {
238
220
  _this2.eventDispatcher.queue('quizzes.getQuizResults.completed', json);
239
-
240
221
  return json;
241
222
  }
242
-
243
223
  throw new Error('getQuizResults response data is malformed');
244
224
  });
245
225
  }
246
226
  }]);
247
227
  return Quizzes;
248
228
  }();
249
-
250
229
  module.exports = Quizzes;
@@ -1,80 +1,77 @@
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
  /* eslint-disable object-curly-newline, no-param-reassign */
10
7
  var EventDispatcher = require('../utils/event-dispatcher');
8
+ var helpers = require('../utils/helpers');
11
9
 
12
- var helpers = require('../utils/helpers'); // Create URL from supplied parameters
13
-
14
-
10
+ // Create URL from supplied parameters
15
11
  function createRecommendationsUrl(podId, parameters, options) {
16
12
  var apiKey = options.apiKey,
17
- version = options.version,
18
- serviceUrl = options.serviceUrl,
19
- sessionId = options.sessionId,
20
- userId = options.userId,
21
- clientId = options.clientId,
22
- segments = options.segments;
13
+ version = options.version,
14
+ serviceUrl = options.serviceUrl,
15
+ sessionId = options.sessionId,
16
+ userId = options.userId,
17
+ clientId = options.clientId,
18
+ segments = options.segments;
23
19
  var queryParams = {
24
20
  c: version
25
21
  };
26
22
  queryParams.key = apiKey;
27
23
  queryParams.i = clientId;
28
- queryParams.s = sessionId; // Validate pod identifier is provided
24
+ queryParams.s = sessionId;
29
25
 
26
+ // Validate pod identifier is provided
30
27
  if (!podId || typeof podId !== 'string') {
31
28
  throw new Error('podId is a required parameter of type string');
32
- } // Pull user segments from options
33
-
29
+ }
34
30
 
31
+ // Pull user segments from options
35
32
  if (segments && segments.length) {
36
33
  queryParams.us = segments;
37
- } // Pull user id from options and ensure string
38
-
34
+ }
39
35
 
36
+ // Pull user id from options and ensure string
40
37
  if (userId) {
41
38
  queryParams.ui = String(userId);
42
39
  }
43
-
44
40
  if (parameters) {
45
41
  var numResults = parameters.numResults,
46
- itemIds = parameters.itemIds,
47
- section = parameters.section,
48
- term = parameters.term,
49
- filters = parameters.filters,
50
- variationsMap = parameters.variationsMap,
51
- hiddenFields = parameters.hiddenFields; // Pull num results number from parameters
52
-
42
+ itemIds = parameters.itemIds,
43
+ section = parameters.section,
44
+ term = parameters.term,
45
+ filters = parameters.filters,
46
+ variationsMap = parameters.variationsMap,
47
+ hiddenFields = parameters.hiddenFields;
48
+
49
+ // Pull num results number from parameters
53
50
  if (!helpers.isNil(numResults)) {
54
51
  queryParams.num_results = numResults;
55
- } // Pull item ids from parameters
56
-
52
+ }
57
53
 
54
+ // Pull item ids from parameters
58
55
  if (itemIds) {
59
56
  queryParams.item_id = itemIds;
60
- } // Pull section from parameters
61
-
57
+ }
62
58
 
59
+ // Pull section from parameters
63
60
  if (section) {
64
61
  queryParams.section = section;
65
- } // Pull term from parameters
66
-
62
+ }
67
63
 
64
+ // Pull term from parameters
68
65
  if (term) {
69
66
  queryParams.term = term;
70
- } // Pull filters from parameters
71
-
67
+ }
72
68
 
69
+ // Pull filters from parameters
73
70
  if (filters) {
74
71
  queryParams.filters = filters;
75
- } // Pull hidden fields from parameters
76
-
72
+ }
77
73
 
74
+ // Pull hidden fields from parameters
78
75
  if (hiddenFields) {
79
76
  if (queryParams.fmt_options) {
80
77
  queryParams.fmt_options.hidden_fields = hiddenFields;
@@ -83,18 +80,18 @@ function createRecommendationsUrl(podId, parameters, options) {
83
80
  hidden_fields: hiddenFields
84
81
  };
85
82
  }
86
- } // Pull variations map from parameters
87
-
83
+ }
88
84
 
85
+ // Pull variations map from parameters
89
86
  if (variationsMap) {
90
87
  queryParams.variations_map = JSON.stringify(variationsMap);
91
88
  }
92
89
  }
93
-
94
90
  queryParams = helpers.cleanParams(queryParams);
95
91
  var queryString = helpers.stringify(queryParams);
96
92
  return "".concat(serviceUrl, "/recommendations/v1/pods/").concat(helpers.encodeURIComponentRFC3986(helpers.trimNonBreakingSpaces(podId)), "?").concat(queryString);
97
93
  }
94
+
98
95
  /**
99
96
  * Interface to recommendations related API calls
100
97
  *
@@ -102,14 +99,13 @@ function createRecommendationsUrl(podId, parameters, options) {
102
99
  * @inner
103
100
  * @returns {object}
104
101
  */
105
-
106
-
107
102
  var Recommendations = /*#__PURE__*/function () {
108
103
  function Recommendations(options) {
109
104
  (0, _classCallCheck2["default"])(this, Recommendations);
110
105
  this.options = options || {};
111
106
  this.eventDispatcher = new EventDispatcher(options.eventDispatcher);
112
107
  }
108
+
113
109
  /**
114
110
  * Get recommendations for supplied pod identifier
115
111
  *
@@ -136,38 +132,32 @@ var Recommendations = /*#__PURE__*/function () {
136
132
  * },
137
133
  * });
138
134
  */
139
-
140
-
141
135
  (0, _createClass2["default"])(Recommendations, [{
142
136
  key: "getRecommendations",
143
137
  value: function getRecommendations(podId, parameters) {
144
138
  var _this = this;
145
-
146
139
  var networkParameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
147
140
  var requestUrl;
148
141
  var fetch = this.options.fetch;
149
142
  var signal;
150
-
151
143
  if (typeof AbortController === 'function') {
152
144
  var controller = new AbortController();
153
- signal = controller && controller.signal; // Handle network timeout if specified
145
+ signal = controller && controller.signal;
154
146
 
147
+ // Handle network timeout if specified
155
148
  helpers.applyNetworkTimeout(this.options, networkParameters, controller);
156
149
  }
157
-
158
150
  try {
159
151
  requestUrl = createRecommendationsUrl(podId, parameters, this.options);
160
152
  } catch (e) {
161
153
  return Promise.reject(e);
162
154
  }
163
-
164
155
  return fetch(requestUrl, {
165
156
  signal: signal
166
157
  }).then(function (response) {
167
158
  if (response.ok) {
168
159
  return response.json();
169
160
  }
170
-
171
161
  return helpers.throwHttpErrorFromResponse(new Error(), response);
172
162
  }).then(function (json) {
173
163
  if (json.response && json.response.results) {
@@ -178,17 +168,13 @@ var Recommendations = /*#__PURE__*/function () {
178
168
  result.result_id = json.result_id;
179
169
  });
180
170
  }
181
-
182
171
  _this.eventDispatcher.queue('recommendations.getRecommendations.completed', json);
183
-
184
172
  return json;
185
173
  }
186
-
187
174
  throw new Error('getRecommendations response data is malformed');
188
175
  });
189
176
  }
190
177
  }]);
191
178
  return Recommendations;
192
179
  }();
193
-
194
180
  module.exports = Recommendations;