@constructor-io/constructorio-client-javascript 2.34.8 → 2.35.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.
@@ -46,14 +46,17 @@ function createQuizUrl(quizId, parameters, options, path) {
46
46
  throw new Error('quizId is a required parameter of type string');
47
47
  }
48
48
 
49
- if (path === 'finalize' && ((0, _typeof2["default"])(parameters.answers) !== 'object' || !Array.isArray(parameters.answers) || parameters.answers.length === 0)) {
49
+ if (path === 'results' && ((0, _typeof2["default"])(parameters.answers) !== 'object' || !Array.isArray(parameters.answers) || parameters.answers.length === 0)) {
50
50
  throw new Error('answers is a required parameter of type array');
51
51
  }
52
52
 
53
53
  if (parameters) {
54
54
  var section = parameters.section,
55
55
  answers = parameters.answers,
56
- versionId = parameters.versionId; // Pull section from parameters
56
+ versionId = parameters.versionId,
57
+ page = parameters.page,
58
+ resultsPerPage = parameters.resultsPerPage,
59
+ filters = parameters.filters; // Pull section from parameters
57
60
 
58
61
  if (section) {
59
62
  queryParams.section = section;
@@ -71,6 +74,20 @@ function createQuizUrl(quizId, parameters, options, path) {
71
74
  return (0, _toConsumableArray2["default"])(ans).join(',');
72
75
  })
73
76
  }));
77
+ } // Pull page from parameters
78
+
79
+
80
+ if (!helpers.isNil(page)) {
81
+ queryParams.page = page;
82
+ } // Pull results per page from parameters
83
+
84
+
85
+ if (!helpers.isNil(resultsPerPage)) {
86
+ queryParams.num_results_per_page = resultsPerPage;
87
+ }
88
+
89
+ if (filters) {
90
+ queryParams.filters = filters;
74
91
  }
75
92
  }
76
93
 
@@ -160,10 +177,13 @@ var Quizzes = /*#__PURE__*/function () {
160
177
  * @function getQuizResults
161
178
  * @description Retrieve quiz recommendation and filter expression from Constructor.io API
162
179
  * @param {string} id - The identifier of the quiz
163
- * @param {string} [parameters] - Additional parameters to refine result set
180
+ * @param {string} parameters - Additional parameters to refine result set
181
+ * @param {array} parameters.answers - An array of answers in the format [[1,2],[1]]
164
182
  * @param {string} [parameters.section] - Product catalog section
165
- * @param {array} [parameters.answers] - An array of answers in the format [[1,2],[1]]
166
183
  * @param {string} [parameters.versionId] - Specific version identifier for the quiz
184
+ * @param {number} [parameters.page] - The page number of the results
185
+ * @param {number} [parameters.resultsPerPage] - The number of results per page to return
186
+ * @param {object} [parameters.filters] - Key / value mapping (dictionary) of filters used to refine results
167
187
  * @param {object} [networkParameters] - Parameters relevant to the network request
168
188
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
169
189
  * @returns {Promise}
@@ -188,7 +208,7 @@ var Quizzes = /*#__PURE__*/function () {
188
208
  var signal = controller.signal;
189
209
 
190
210
  try {
191
- requestUrl = createQuizUrl(id, parameters, this.options, 'finalize');
211
+ requestUrl = createQuizUrl(id, parameters, this.options, 'results');
192
212
  } catch (e) {
193
213
  return Promise.reject(e);
194
214
  } // Handle network timeout if specified
@@ -106,20 +106,41 @@ var Tracker = /*#__PURE__*/function () {
106
106
  this.options = options || {};
107
107
  this.eventemitter = new EventEmitter();
108
108
  this.requests = new RequestQueue(options, this.eventemitter);
109
+ this.behavioralV2Url = 'https://ac.cnstrc.com/v2/behavioral_action/';
109
110
  }
110
111
  /**
111
112
  * Send session start event to API
112
- *
113
- * @function trackSessionStart
113
+ * @private
114
+ * @function trackSessionStartV2
114
115
  * @param {object} [networkParameters] - Parameters relevant to the network request
115
116
  * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
116
117
  * @returns {(true|Error)}
117
118
  * @example
118
- * constructorio.tracker.trackSessionStart();
119
+ * constructorio.tracker.trackSessionStartV2();
119
120
  */
120
121
 
121
122
 
122
123
  (0, _createClass2["default"])(Tracker, [{
124
+ key: "trackSessionStartV2",
125
+ value: function trackSessionStartV2() {
126
+ var networkParameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
127
+ var url = "".concat(this.behavioralV2Url, "session_start?");
128
+ this.requests.queue("".concat(url).concat(applyParamsAsString({}, this.options)), 'POST', undefined, networkParameters);
129
+ this.requests.send();
130
+ return true;
131
+ }
132
+ /**
133
+ * Send session start event to API
134
+ *
135
+ * @function trackSessionStart
136
+ * @param {object} [networkParameters] - Parameters relevant to the network request
137
+ * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
138
+ * @returns {(true|Error)}
139
+ * @example
140
+ * constructorio.tracker.trackSessionStart();
141
+ */
142
+
143
+ }, {
123
144
  key: "trackSessionStart",
124
145
  value: function trackSessionStart() {
125
146
  var networkParameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -131,6 +152,43 @@ var Tracker = /*#__PURE__*/function () {
131
152
  this.requests.send();
132
153
  return true;
133
154
  }
155
+ /**
156
+ * Send input focus event to API
157
+ * @private
158
+ * @function trackInputFocusV2
159
+ * @param {string} user_input - Input at the time user focused on the search bar
160
+ * @param {object} [networkParameters] - Parameters relevant to the network request
161
+ * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
162
+ * @returns {(true|Error)}
163
+ * @description User focused on search input element
164
+ * @example
165
+ * constructorio.tracker.trackInputFocusV2("text");
166
+ */
167
+
168
+ }, {
169
+ key: "trackInputFocusV2",
170
+ value: function trackInputFocusV2() {
171
+ var user_input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
172
+ var networkParameters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
173
+ var baseUrl = "".concat(this.behavioralV2Url, "focus?");
174
+ var bodyParams = {};
175
+ var networkParametersNew = networkParameters;
176
+ var userInputNew = user_input;
177
+
178
+ if ((0, _typeof2["default"])(user_input) === 'object') {
179
+ networkParametersNew = user_input;
180
+ userInputNew = '';
181
+ }
182
+
183
+ bodyParams.user_input = userInputNew;
184
+ var requestMethod = 'POST';
185
+ var requestBody = applyParams(bodyParams, _objectSpread(_objectSpread({}, this.options), {}, {
186
+ requestMethod: requestMethod
187
+ }));
188
+ this.requests.queue("".concat(baseUrl).concat(applyParamsAsString({}, this.options)), requestMethod, requestBody, networkParametersNew);
189
+ this.requests.send();
190
+ return true;
191
+ }
134
192
  /**
135
193
  * Send input focus event to API
136
194
  *
@@ -229,6 +287,88 @@ var Tracker = /*#__PURE__*/function () {
229
287
  this.requests.send();
230
288
  return new Error('parameters are required of type object');
231
289
  }
290
+ /**
291
+ * Send autocomplete select event to API
292
+ * @private
293
+ * @function trackAutocompleteSelectV2
294
+ * @param {string} item_name - Name of selected autocomplete item
295
+ * @param {object} parameters - Additional parameters to be sent with request
296
+ * @param {string} parameters.user_input - The current autocomplete search query
297
+ * @param {string} [parameters.section] - Section the selected item resides within
298
+ * @param {string} [parameters.tr] - Trigger used to select the item (click, etc.)
299
+ * @param {string} [parameters.item_id] - Item id of the selected item
300
+ * @param {string} [parameters.variation_id] - Variation id of the selected item
301
+ * @param {string} [parameters.group_id] - Group identifier of selected item
302
+ * @param {object} [networkParameters] - Parameters relevant to the network request
303
+ * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
304
+ * @returns {(true|Error)}
305
+ * @description User selected (clicked, or navigated to via keyboard) a result that appeared within autocomplete
306
+ * @example
307
+ * constructorio.tracker.trackAutocompleteSelectV2(
308
+ * 'T-Shirt',
309
+ * {
310
+ * user_input: 'Shirt',
311
+ * section: 'Products',
312
+ * tr: 'click',
313
+ * group_id: '88JU230',
314
+ * item_id: '12345',
315
+ * variation_id: '12345-A',
316
+ * },
317
+ * );
318
+ */
319
+
320
+ }, {
321
+ key: "trackAutocompleteSelectV2",
322
+ value: function trackAutocompleteSelectV2(item_name, parameters) {
323
+ var networkParameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
324
+
325
+ // Ensure term is provided (required)
326
+ if (item_name && typeof item_name === 'string') {
327
+ // Ensure parameters are provided (required)
328
+ if (parameters && (0, _typeof2["default"])(parameters) === 'object' && !Array.isArray(parameters)) {
329
+ var baseUrl = "".concat(this.behavioralV2Url, "autocomplete_select?");
330
+ var original_query = parameters.original_query,
331
+ _parameters$user_inpu = parameters.user_input,
332
+ user_input = _parameters$user_inpu === void 0 ? original_query : _parameters$user_inpu,
333
+ original_section = parameters.original_section,
334
+ _parameters$section = parameters.section,
335
+ section = _parameters$section === void 0 ? original_section : _parameters$section,
336
+ tr = parameters.tr,
337
+ group_id = parameters.group_id,
338
+ item_id = parameters.item_id,
339
+ variation_id = parameters.variation_id;
340
+ var queryParams = {};
341
+ var bodyParams = {
342
+ user_input: user_input,
343
+ tr: tr,
344
+ group_id: group_id,
345
+ item_id: item_id,
346
+ variation_id: variation_id,
347
+ item_name: item_name,
348
+ section: section
349
+ };
350
+
351
+ if (section) {
352
+ queryParams.section = section;
353
+ }
354
+
355
+ var requestURL = "".concat(baseUrl).concat(applyParamsAsString(queryParams, this.options));
356
+ var requestMethod = 'POST';
357
+ var requestBody = applyParams(bodyParams, _objectSpread(_objectSpread({}, this.options), {}, {
358
+ requestMethod: requestMethod
359
+ }));
360
+ this.requests.queue(requestURL, requestMethod, requestBody, networkParameters);
361
+ this.requests.send();
362
+ return true;
363
+ }
364
+
365
+ this.requests.send();
366
+ return new Error('parameters are required of type object');
367
+ }
368
+
369
+ this.requests.send();
370
+ return new Error('term is a required parameter of type string');
371
+ }
232
372
  /**
233
373
  * Send autocomplete select event to API
234
374
  *
@@ -306,6 +446,77 @@ var Tracker = /*#__PURE__*/function () {
306
446
  this.requests.send();
307
447
  return new Error('term is a required parameter of type string');
308
448
  }
449
+ /**
450
+ * Send autocomplete search event to API
451
+ * @private
452
+ * @function trackSearchSubmitV2
453
+ * @param {string} search_term - Term of submitted autocomplete event
454
+ * @param {object} parameters - Additional parameters to be sent with request
455
+ * @param {string} parameters.user_input - The current autocomplete search query
456
+ * @param {string} [parameters.group_id] - Group identifier of selected item
457
+ * @param {object} [networkParameters] - Parameters relevant to the network request
458
+ * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
459
+ * @returns {(true|Error)}
460
+ * @description User submitted a search (pressing enter within input element, or clicking submit element)
461
+ * @example
462
+ * constructorio.tracker.trackSearchSubmitV2(
463
+ * 'T-Shirt',
464
+ * {
465
+ * user_input: 'Shirt',
466
+ * group_id: '88JU230',
467
+ * },
468
+ * );
469
+ */
470
+
471
+ }, {
472
+ key: "trackSearchSubmitV2",
473
+ value: function trackSearchSubmitV2(search_term, parameters) {
474
+ var networkParameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
475
+
476
+ // Ensure term is provided (required)
477
+ if (search_term && typeof search_term === 'string') {
478
+ // Ensure parameters are provided (required)
479
+ if (parameters && (0, _typeof2["default"])(parameters) === 'object' && !Array.isArray(parameters)) {
480
+ var baseUrl = "".concat(this.behavioralV2Url, "search_submit?");
481
+ var original_query = parameters.original_query,
482
+ _parameters$user_inpu2 = parameters.user_input,
483
+ user_input = _parameters$user_inpu2 === void 0 ? original_query : _parameters$user_inpu2,
484
+ group_id = parameters.group_id,
485
+ section = parameters.section;
486
+ var queryParams = {};
487
+ var bodyParams = {
488
+ user_input: user_input,
489
+ search_term: search_term,
490
+ section: section
491
+ };
492
+
493
+ if (group_id) {
494
+ bodyParams.filters = {
495
+ group_id: group_id
496
+ };
497
+ }
498
+
499
+ if (section) {
500
+ queryParams.section = section;
501
+ }
502
+
503
+ var requestURL = "".concat(baseUrl).concat(applyParamsAsString(queryParams, this.options));
504
+ var requestMethod = 'POST';
505
+ var requestBody = applyParams(bodyParams, _objectSpread(_objectSpread({}, this.options), {}, {
506
+ requestMethod: requestMethod
507
+ }));
508
+ this.requests.queue(requestURL, requestMethod, requestBody, networkParameters);
509
+ this.requests.send();
510
+ return true;
511
+ }
512
+
513
+ this.requests.send();
514
+ return new Error('parameters are required of type object');
515
+ }
516
+
517
+ this.requests.send();
518
+ return new Error('term is a required parameter of type string');
519
+ }
309
520
  /**
310
521
  * Send autocomplete search event to API
311
522
  *
@@ -368,6 +579,110 @@ var Tracker = /*#__PURE__*/function () {
368
579
  this.requests.send();
369
580
  return new Error('term is a required parameter of type string');
370
581
  }
582
+ /**
583
+ * Send search results loaded v2 event to API
584
+ * @private
585
+ * @function trackSearchResultsLoadedV2
586
+ * @param {string} search_term - Search results query term
587
+ * @param {object} parameters - Additional parameters to be sent with request
588
+ * @param {string} parameters.url - URL of the search results page
589
+ * @param {number} [parameters.result_count] - Total number of results
590
+ * @param {number} [parameters.result_page] - Current page of search results
591
+ * @param {string} [parameters.result_id] - Browse result identifier (returned in response from Constructor)
592
+ * @param {object} [parameters.selected_filters] - Selected filters
593
+ * @param {string} [parameters.sort_order] - Sort order ('ascending' or 'descending')
594
+ * @param {string} [parameters.sort_by] - Sorting method
595
+ * @param {object[]} [parameters.items] - List of product item unique identifiers in search results listing
596
+ * @param {object} [networkParameters] - Parameters relevant to the network request
597
+ * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
598
+ * @returns {(true|Error)}
599
+ * @description User viewed a search product listing page
600
+ * @example
601
+ * constructorio.tracker.trackSearchResultsLoadedV2(
602
+ * 'T-Shirt',
603
+ * {
604
+ * result_count: 167,
605
+ * items: [{item_id: 'KMH876'}, {item_id: 'KMH140'}, {item_id: 'KMH437'}],
606
+ * sort_order: 'ascending'
607
+ * sort_by: 'price',
608
+ * result_page: 3,
609
+ * result_count: 20
610
+ * },
611
+ * );
612
+ */
613
+
614
+ }, {
615
+ key: "trackSearchResultsLoadedV2",
616
+ value: function trackSearchResultsLoadedV2(search_term, parameters) {
617
+ var networkParameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
618
+
619
+ // Ensure term is provided (required)
620
+ if (search_term && typeof search_term === 'string') {
621
+ // Ensure parameters are provided (required)
622
+ if (parameters && (0, _typeof2["default"])(parameters) === 'object' && !Array.isArray(parameters)) {
623
+ var baseUrl = "".concat(this.behavioralV2Url, "search_result_load?");
624
+ var num_results = parameters.num_results,
625
+ _parameters$result_co = parameters.result_count,
626
+ result_count = _parameters$result_co === void 0 ? num_results : _parameters$result_co,
627
+ customer_ids = parameters.customer_ids,
628
+ item_ids = parameters.item_ids,
629
+ _parameters$items = parameters.items,
630
+ items = _parameters$items === void 0 ? customer_ids || item_ids : _parameters$items,
631
+ result_page = parameters.result_page,
632
+ result_id = parameters.result_id,
633
+ sort_order = parameters.sort_order,
634
+ sort_by = parameters.sort_by,
635
+ selected_filters = parameters.selected_filters,
636
+ url = parameters.url,
637
+ section = parameters.section;
638
+ var queryParams = {};
639
+ var transformedItems;
640
+
641
+ if (items && Array.isArray(items) && items.length !== 0) {
642
+ transformedItems = items;
643
+
644
+ if (typeof items[0] === 'string' || typeof items[0] === 'number') {
645
+ transformedItems = items.map(function (itemId) {
646
+ return {
647
+ item_id: String(itemId)
648
+ };
649
+ });
650
+ }
651
+ }
652
+
653
+ if (section) {
654
+ queryParams.section = section;
655
+ }
656
+
657
+ var bodyParams = {
658
+ search_term: search_term,
659
+ result_count: result_count,
660
+ items: transformedItems,
661
+ result_page: result_page,
662
+ result_id: result_id,
663
+ sort_order: sort_order,
664
+ sort_by: sort_by,
665
+ selected_filters: selected_filters,
666
+ url: url,
667
+ section: section
668
+ };
669
+ var requestURL = "".concat(baseUrl).concat(applyParamsAsString(queryParams, this.options));
670
+ var requestMethod = 'POST';
671
+ var requestBody = applyParams(bodyParams, _objectSpread(_objectSpread({}, this.options), {}, {
672
+ requestMethod: requestMethod
673
+ }));
674
+ this.requests.queue(requestURL, requestMethod, requestBody, networkParameters);
675
+ this.requests.send();
676
+ return true;
677
+ }
678
+
679
+ this.requests.send();
680
+ return new Error('parameters are required of type object');
681
+ }
682
+
683
+ this.requests.send();
684
+ return new Error('term is a required parameter of type string');
685
+ }
371
686
  /**
372
687
  * Send search results loaded event to API
373
688
  *
@@ -436,6 +751,97 @@ var Tracker = /*#__PURE__*/function () {
436
751
  this.requests.send();
437
752
  return new Error('term is a required parameter of type string');
438
753
  }
754
+ /**
755
+ * Send click through event to API
756
+ * @private
757
+ * @function trackSearchResultClickV2
758
+ * @param {string} term - Search results query term
759
+ * @param {object} parameters - Additional parameters to be sent with request
760
+ * @param {string} parameters.item_name - Product item name (Either item_name or item_id is required)
761
+ * @param {string} parameters.item_id - Product item unique identifier
762
+ * @param {string} [parameters.variation_id] - Product item variation unique identifier
763
+ * @param {string} [parameters.result_id] - Search result identifier (returned in response from Constructor)
764
+ * @param {number} [parameters.result_count] - Number of results in total
765
+ * @param {number} [parameters.result_page] - Current page of results
766
+ * @param {string} [parameters.result_position_on_page] - Position of selected items on page
767
+ * @param {string} [parameters.num_results_per_page] - Number of results per page
768
+ * @param {object} [parameters.selected_filters] - Key - Value map of selected filters
769
+ * @param {string} [parameters.section] - The section name for the item Ex. "Products"
770
+ * @param {object} [networkParameters] - Parameters relevant to the network request
771
+ * @param {number} [networkParameters.timeout] - Request timeout (in milliseconds)
772
+ * @returns {(true|Error)}
773
+ * @description User clicked a result that appeared within a search product listing page
774
+ * @example
775
+ * constructorio.tracker.trackSearchResultClickV2(
776
+ * 'T-Shirt',
777
+ * {
778
+ * item_name: 'Red T-Shirt',
779
+ * item_id: 'KMH876',
780
+ * result_id: '019927c2-f955-4020-8b8d-6b21b93cb5a2',
781
+ * },
782
+ * );
783
+ */
784
+
785
+ }, {
786
+ key: "trackSearchResultClickV2",
787
+ value: function trackSearchResultClickV2(term, parameters) {
788
+ var networkParameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
789
+
790
+ // Ensure term is provided (required)
791
+ if (term && typeof term === 'string') {
792
+ // Ensure parameters are provided (required)
793
+ if (parameters && (0, _typeof2["default"])(parameters) === 'object' && !Array.isArray(parameters)) {
794
+ var baseUrl = "".concat(this.behavioralV2Url, "search_result_click?");
795
+ var customer_id = parameters.customer_id,
796
+ _parameters$item_id = parameters.item_id,
797
+ item_id = _parameters$item_id === void 0 ? customer_id : _parameters$item_id,
798
+ name = parameters.name,
799
+ _parameters$item_name = parameters.item_name,
800
+ item_name = _parameters$item_name === void 0 ? name : _parameters$item_name,
801
+ variation_id = parameters.variation_id,
802
+ result_id = parameters.result_id,
803
+ result_count = parameters.result_count,
804
+ result_page = parameters.result_page,
805
+ result_position_on_page = parameters.result_position_on_page,
806
+ num_results_per_page = parameters.num_results_per_page,
807
+ selected_filters = parameters.selected_filters,
808
+ section = parameters.section;
809
+ var bodyParams = {
810
+ item_name: item_name,
811
+ item_id: item_id,
812
+ variation_id: variation_id,
813
+ result_id: result_id,
814
+ result_count: result_count,
815
+ result_page: result_page,
816
+ result_position_on_page: result_position_on_page,
817
+ num_results_per_page: num_results_per_page,
818
+ selected_filters: selected_filters,
819
+ section: section,
820
+ search_term: term
821
+ };
822
+ var queryParams = {};
823
+
824
+ if (section) {
825
+ queryParams.section = section;
826
+ }
827
+
828
+ var requestURL = "".concat(baseUrl).concat(applyParamsAsString(queryParams, this.options));
829
+ var requestMethod = 'POST';
830
+ var requestBody = applyParams(bodyParams, _objectSpread(_objectSpread({}, this.options), {}, {
831
+ requestMethod: requestMethod
832
+ }));
833
+ this.requests.queue(requestURL, requestMethod, requestBody, networkParameters);
834
+ this.requests.send();
835
+ return true;
836
+ }
837
+
838
+ this.requests.send();
839
+ return new Error('parameters are required of type object');
840
+ }
841
+
842
+ this.requests.send();
843
+ return new Error('term is a required parameter of type string');
844
+ }
439
845
  /**
440
846
  * Send click through event to API
441
847
  *
@@ -480,8 +886,8 @@ var Tracker = /*#__PURE__*/function () {
480
886
  customer_id = parameters.customer_id,
481
887
  variation_id = parameters.variation_id,
482
888
  result_id = parameters.result_id,
483
- item_is_convertible = parameters.item_is_convertible,
484
- section = parameters.section; // Ensure support for both item_name and name as parameters
889
+ section = parameters.section,
890
+ item_is_convertible = parameters.item_is_convertible; // Ensure support for both item_name and name as parameters
485
891
 
486
892
  if (item_name) {
487
893
  queryParams.name = item_name;
@@ -576,8 +982,8 @@ var Tracker = /*#__PURE__*/function () {
576
982
  customer_id = parameters.customer_id,
577
983
  variation_id = parameters.variation_id,
578
984
  revenue = parameters.revenue,
579
- _parameters$section = parameters.section,
580
- section = _parameters$section === void 0 ? 'Products' : _parameters$section,
985
+ _parameters$section2 = parameters.section,
986
+ section = _parameters$section2 === void 0 ? 'Products' : _parameters$section2,
581
987
  display_name = parameters.display_name,
582
988
  type = parameters.type,
583
989
  is_custom_type = parameters.is_custom_type; // Ensure support for both item_id and customer_id as parameters
@@ -1276,8 +1682,8 @@ var Tracker = /*#__PURE__*/function () {
1276
1682
  quiz_version_id = parameters.quiz_version_id,
1277
1683
  quiz_session_id = parameters.quiz_session_id,
1278
1684
  url = parameters.url,
1279
- _parameters$section2 = parameters.section,
1280
- section = _parameters$section2 === void 0 ? 'Products' : _parameters$section2,
1685
+ _parameters$section3 = parameters.section,
1686
+ section = _parameters$section3 === void 0 ? 'Products' : _parameters$section3,
1281
1687
  result_count = parameters.result_count,
1282
1688
  result_id = parameters.result_id,
1283
1689
  result_page = parameters.result_page;
@@ -1403,8 +1809,8 @@ var Tracker = /*#__PURE__*/function () {
1403
1809
  result_page = parameters.result_page,
1404
1810
  num_results_per_page = parameters.num_results_per_page,
1405
1811
  result_position_on_page = parameters.result_position_on_page,
1406
- _parameters$section3 = parameters.section,
1407
- section = _parameters$section3 === void 0 ? 'Products' : _parameters$section3;
1812
+ _parameters$section4 = parameters.section,
1813
+ section = _parameters$section4 === void 0 ? 'Products' : _parameters$section4;
1408
1814
  var queryParams = {};
1409
1815
  var bodyParams = {}; // Ensure required parameters provided
1410
1816
 
@@ -1556,8 +1962,8 @@ var Tracker = /*#__PURE__*/function () {
1556
1962
  item_name = parameters.item_name,
1557
1963
  variation_id = parameters.variation_id,
1558
1964
  revenue = parameters.revenue,
1559
- _parameters$section4 = parameters.section,
1560
- section = _parameters$section4 === void 0 ? 'Products' : _parameters$section4,
1965
+ _parameters$section5 = parameters.section,
1966
+ section = _parameters$section5 === void 0 ? 'Products' : _parameters$section5,
1561
1967
  type = parameters.type,
1562
1968
  is_custom_type = parameters.is_custom_type,
1563
1969
  display_name = parameters.display_name;
@@ -93,7 +93,7 @@ export interface Feature extends Record<string, any> {
93
93
  name: string;
94
94
  display_name: string;
95
95
  [key: string]: any;
96
- };
96
+ } | null;
97
97
  }
98
98
 
99
99
  export interface FmtOption extends Record<string, any> {
@@ -1,5 +1,16 @@
1
1
  import { Nullable } from './index.d';
2
- import { ConstructorClientOptions, NetworkParameters } from '.';
2
+ import {
3
+ ConstructorClientOptions,
4
+ Facet,
5
+ Feature,
6
+ Group,
7
+ NetworkParameters,
8
+ RequestFeature,
9
+ RequestFeatureVariant,
10
+ SortOption,
11
+ FilterExpression,
12
+ ResultSources,
13
+ } from '.';
3
14
 
4
15
  export default Quizzes;
5
16
 
@@ -9,6 +20,13 @@ export interface QuizzesParameters {
9
20
  versionId?: string;
10
21
  }
11
22
 
23
+ export interface QuizzesResultsParameters extends QuizzesParameters {
24
+ answers: any[];
25
+ page?: number;
26
+ resultsPerPage?: number;
27
+ filters?: Record<string, any>;
28
+ }
29
+
12
30
  declare class Quizzes {
13
31
  constructor(options: ConstructorClientOptions);
14
32
 
@@ -22,7 +40,7 @@ declare class Quizzes {
22
40
 
23
41
  getQuizResults(
24
42
  id: string,
25
- parameters?: QuizzesParameters,
43
+ parameters?: QuizzesResultsParameters,
26
44
  networkParameters?: NetworkParameters
27
45
  ): Promise<QuizResultsResponse>;
28
46
  }
@@ -33,9 +51,47 @@ export interface NextQuestionResponse extends Record<string, any> {
33
51
  is_last_question?: boolean;
34
52
  version_id?: string;
35
53
  }
54
+
36
55
  export interface QuizResultsResponse extends Record<string, any> {
37
- result: Partial<QuizResult>;
38
- version_id?: string;
56
+ request?: {
57
+ filters?: Record<string, any>;
58
+ fmt_options: Record<string, any>;
59
+ num_results_per_page: number;
60
+ page: number;
61
+ section: string;
62
+ sort_by: string;
63
+ sort_order: string;
64
+ features: Partial<RequestFeature>;
65
+ feature_variants: Partial<RequestFeatureVariant>;
66
+ collection_filter_expression: FilterExpression;
67
+ term: string;
68
+ };
69
+ response?: {
70
+ result_sources: Partial<ResultSources>;
71
+ facets: Partial<Facet>[];
72
+ groups: Partial<Group>[];
73
+ results: Partial<QuizResultData>[];
74
+ sort_options: Partial<SortOption>[];
75
+ refined_content: Record<string, any>[];
76
+ total_num_results: number;
77
+ features: Partial<Feature>[];
78
+ };
79
+ result_id?: string;
80
+ version_id: string;
81
+ quiz_session_id: string;
82
+ quiz_id: string;
83
+ }
84
+
85
+ export interface QuizResultData extends Record<string, any> {
86
+ matched_terms: string[];
87
+ data: {
88
+ id: string;
89
+ [key: string]: any;
90
+ };
91
+ value: string;
92
+ is_slotted: false;
93
+ labels: Record<string, any>;
94
+ variations: Record<string, any>[];
39
95
  }
40
96
 
41
97
  export type Question = SelectQuestion | OpenQuestion | CoverQuestion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructor-io/constructorio-client-javascript",
3
- "version": "2.34.8",
3
+ "version": "2.35.0",
4
4
  "description": "Constructor.io JavaScript client",
5
5
  "main": "lib/constructorio.js",
6
6
  "types": "lib/types/constructorio.d.ts",