coveo.analytics 2.30.44 → 2.30.46

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.
Files changed (50) hide show
  1. package/README.md +41 -41
  2. package/dist/browser.mjs +72 -18
  3. package/dist/coveoua.browser.js +1 -1
  4. package/dist/coveoua.browser.js.map +1 -1
  5. package/dist/coveoua.debug.js +103 -30
  6. package/dist/coveoua.debug.js.map +1 -1
  7. package/dist/coveoua.js +1 -1
  8. package/dist/coveoua.js.map +1 -1
  9. package/dist/definitions/caseAssist/caseAssistActions.d.ts +4 -1
  10. package/dist/definitions/caseAssist/caseAssistClient.d.ts +12 -1
  11. package/dist/definitions/client/analytics.d.ts +2 -2
  12. package/dist/definitions/insight/insightClient.d.ts +2 -0
  13. package/dist/definitions/version.d.ts +1 -1
  14. package/dist/library.cjs +200 -37
  15. package/dist/library.es.js +72 -18
  16. package/dist/library.js +200 -37
  17. package/dist/library.mjs +200 -37
  18. package/dist/react-native.es.js +72 -18
  19. package/package.json +7 -7
  20. package/src/caseAssist/caseAssistActions.ts +4 -1
  21. package/src/caseAssist/caseAssistClient.spec.ts +64 -40
  22. package/src/caseAssist/caseAssistClient.ts +67 -6
  23. package/src/client/analytics.spec.ts +1 -1
  24. package/src/client/analytics.ts +11 -11
  25. package/src/client/analyticsBeaconClient.spec.ts +10 -10
  26. package/src/client/analyticsBeaconClient.ts +4 -4
  27. package/src/client/analyticsFetchClient.ts +1 -1
  28. package/src/client/analyticsRequestClient.ts +1 -1
  29. package/src/client/measurementProtocolMapper.ts +2 -2
  30. package/src/client/measurementProtocolMapping/baseMeasurementProtocolMapper.ts +1 -1
  31. package/src/client/measurementProtocolMapping/commerceMeasurementProtocolMapper.ts +5 -5
  32. package/src/client/noopAnalytics.ts +1 -1
  33. package/src/client/utils.spec.ts +6 -6
  34. package/src/coveoua/browser.ts +2 -2
  35. package/src/coveoua/plugins.ts +1 -1
  36. package/src/coveoua/simpleanalytics.spec.ts +5 -5
  37. package/src/coveoua/simpleanalytics.ts +1 -1
  38. package/src/donottrack.spec.ts +1 -1
  39. package/src/history.spec.ts +1 -1
  40. package/src/insight/insightClient.spec.ts +42 -8
  41. package/src/insight/insightClient.ts +82 -63
  42. package/src/plugins/ec.spec.ts +6 -6
  43. package/src/plugins/ec.ts +5 -5
  44. package/src/plugins/link.spec.ts +5 -5
  45. package/src/plugins/link.ts +1 -1
  46. package/src/plugins/svc.ts +1 -1
  47. package/src/searchPage/searchPageClient.spec.ts +3 -3
  48. package/src/searchPage/searchPageClient.ts +27 -24
  49. package/src/searchPage/searchPageEvents.ts +2 -1
  50. package/src/version.ts +1 -1
package/dist/library.mjs CHANGED
@@ -19,7 +19,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
19
19
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20
20
  PERFORMANCE OF THIS SOFTWARE.
21
21
  ***************************************************************************** */
22
- /* global Reflect, Promise */
22
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
23
23
 
24
24
  var extendStatics = function(d, b) {
25
25
  extendStatics = Object.setPrototypeOf ||
@@ -70,8 +70,8 @@ function __awaiter(thisArg, _arguments, P, generator) {
70
70
  }
71
71
 
72
72
  function __generator(thisArg, body) {
73
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
74
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
73
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
74
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
75
75
  function verb(n) { return function (v) { return step([n, v]); }; }
76
76
  function step(op) {
77
77
  if (f) throw new TypeError("Generator is already executing.");
@@ -105,7 +105,12 @@ function __spreadArray(to, from, pack) {
105
105
  }
106
106
  }
107
107
  return to.concat(ar || Array.prototype.slice.call(from));
108
- }
108
+ }
109
+
110
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
111
+ var e = new Error(message);
112
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
113
+ };
109
114
 
110
115
  var EventType;
111
116
  (function (EventType) {
@@ -503,7 +508,7 @@ for (let i = 0; i < 256; ++i) {
503
508
  function unsafeStringify(arr, offset = 0) {
504
509
  // Note: Be careful editing this code! It's been tuned for performance
505
510
  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
506
- return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
511
+ return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
507
512
  }
508
513
 
509
514
  function parse(uuid) {
@@ -729,7 +734,7 @@ function sha1(bytes) {
729
734
  const v5 = v35('v5', 0x50, sha1);
730
735
  var uuidv5 = v5;
731
736
 
732
- var libVersion = "2.30.44" ;
737
+ var libVersion = "2.30.46";
733
738
 
734
739
  var getFormattedLocation = function (location) {
735
740
  return "".concat(location.protocol, "//").concat(location.hostname).concat(location.pathname.indexOf('/') === 0 ? location.pathname : "/".concat(location.pathname)).concat(location.search);
@@ -82513,10 +82518,6 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
82513
82518
  agent = agent(parsedURL);
82514
82519
  }
82515
82520
 
82516
- if (!headers.has('Connection') && !agent) {
82517
- headers.set('Connection', 'close');
82518
- }
82519
-
82520
82521
  // HTTP-network fetch step 4.2
82521
82522
  // chunked encoding is handled by Node.js
82522
82523
 
@@ -82565,6 +82566,20 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
82565
82566
  return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);
82566
82567
  };
82567
82568
 
82569
+ /**
82570
+ * isSameProtocol reports whether the two provided URLs use the same protocol.
82571
+ *
82572
+ * Both domains must already be in canonical form.
82573
+ * @param {string|URL} original
82574
+ * @param {string|URL} destination
82575
+ */
82576
+ const isSameProtocol = function isSameProtocol(destination, original) {
82577
+ const orig = new URL$1(original).protocol;
82578
+ const dest = new URL$1(destination).protocol;
82579
+
82580
+ return orig === dest;
82581
+ };
82582
+
82568
82583
  /**
82569
82584
  * Fetch function
82570
82585
  *
@@ -82596,7 +82611,7 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
82596
82611
  let error = new AbortError('The user aborted a request.');
82597
82612
  reject(error);
82598
82613
  if (request.body && request.body instanceof Stream.Readable) {
82599
- request.body.destroy(error);
82614
+ destroyStream(request.body, error);
82600
82615
  }
82601
82616
  if (!response || !response.body) return;
82602
82617
  response.body.emit('error', error);
@@ -82637,9 +82652,43 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
82637
82652
 
82638
82653
  req.on('error', function (err) {
82639
82654
  reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
82655
+
82656
+ if (response && response.body) {
82657
+ destroyStream(response.body, err);
82658
+ }
82659
+
82640
82660
  finalize();
82641
82661
  });
82642
82662
 
82663
+ fixResponseChunkedTransferBadEnding(req, function (err) {
82664
+ if (signal && signal.aborted) {
82665
+ return;
82666
+ }
82667
+
82668
+ if (response && response.body) {
82669
+ destroyStream(response.body, err);
82670
+ }
82671
+ });
82672
+
82673
+ /* c8 ignore next 18 */
82674
+ if (parseInt(process.version.substring(1)) < 14) {
82675
+ // Before Node.js 14, pipeline() does not fully support async iterators and does not always
82676
+ // properly handle when the socket close/end events are out of order.
82677
+ req.on('socket', function (s) {
82678
+ s.addListener('close', function (hadError) {
82679
+ // if a data listener is still present we didn't end cleanly
82680
+ const hasDataListener = s.listenerCount('data') > 0;
82681
+
82682
+ // if end happened before close but the socket didn't emit an error, do it now
82683
+ if (response && hasDataListener && !hadError && !(signal && signal.aborted)) {
82684
+ const err = new Error('Premature close');
82685
+ err.code = 'ERR_STREAM_PREMATURE_CLOSE';
82686
+ response.body.emit('error', err);
82687
+ }
82688
+ });
82689
+ });
82690
+ }
82691
+
82643
82692
  req.on('response', function (res) {
82644
82693
  clearTimeout(reqTimeout);
82645
82694
 
@@ -82711,7 +82760,7 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
82711
82760
  size: request.size
82712
82761
  };
82713
82762
 
82714
- if (!isDomainOrSubdomain(request.url, locationURL)) {
82763
+ if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {
82715
82764
  for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {
82716
82765
  requestOpts.headers.delete(name);
82717
82766
  }
@@ -82804,6 +82853,13 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
82804
82853
  response = new Response(body, response_options);
82805
82854
  resolve(response);
82806
82855
  });
82856
+ raw.on('end', function () {
82857
+ // some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.
82858
+ if (!response) {
82859
+ response = new Response(body, response_options);
82860
+ resolve(response);
82861
+ }
82862
+ });
82807
82863
  return;
82808
82864
  }
82809
82865
 
@@ -82823,6 +82879,44 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
82823
82879
  writeToStream(req, request);
82824
82880
  });
82825
82881
  }
82882
+ function fixResponseChunkedTransferBadEnding(request, errorCallback) {
82883
+ let socket;
82884
+
82885
+ request.on('socket', function (s) {
82886
+ socket = s;
82887
+ });
82888
+
82889
+ request.on('response', function (response) {
82890
+ const headers = response.headers;
82891
+
82892
+ if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {
82893
+ response.once('close', function (hadError) {
82894
+ // tests for socket presence, as in some situations the
82895
+ // the 'socket' event is not triggered for the request
82896
+ // (happens in deno), avoids `TypeError`
82897
+ // if a data listener is still present we didn't end cleanly
82898
+ const hasDataListener = socket && socket.listenerCount('data') > 0;
82899
+
82900
+ if (hasDataListener && !hadError) {
82901
+ const err = new Error('Premature close');
82902
+ err.code = 'ERR_STREAM_PREMATURE_CLOSE';
82903
+ errorCallback(err);
82904
+ }
82905
+ });
82906
+ }
82907
+ });
82908
+ }
82909
+
82910
+ function destroyStream(stream, err) {
82911
+ if (stream.destroy) {
82912
+ stream.destroy(err);
82913
+ } else {
82914
+ // node < 8
82915
+ stream.emit('error', err);
82916
+ stream.end();
82917
+ }
82918
+ }
82919
+
82826
82920
  /**
82827
82921
  * Redirect code matching
82828
82922
  *
@@ -82842,7 +82936,8 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
82842
82936
  exports.Headers = Headers;
82843
82937
  exports.Request = Request;
82844
82938
  exports.Response = Response;
82845
- exports.FetchError = FetchError;
82939
+ exports.FetchError = FetchError;
82940
+ exports.AbortError = AbortError;
82846
82941
  } (lib$1, lib$1.exports));
82847
82942
 
82848
82943
  var libExports = lib$1.exports;
@@ -83527,8 +83622,8 @@ var CoveoAnalyticsClient = (function () {
83527
83622
  });
83528
83623
  };
83529
83624
  CoveoAnalyticsClient.prototype.sendSearchEvent = function (_a) {
83530
- var searchQueryUid = _a.searchQueryUid, preparedRequest = __rest(_a, ["searchQueryUid"]);
83531
83625
  return __awaiter(this, void 0, void 0, function () {
83626
+ var searchQueryUid = _a.searchQueryUid, preparedRequest = __rest(_a, ["searchQueryUid"]);
83532
83627
  return __generator(this, function (_b) {
83533
83628
  switch (_b.label) {
83534
83629
  case 0: return [4, this.makeSearchEvent(preparedRequest)];
@@ -83545,8 +83640,8 @@ var CoveoAnalyticsClient = (function () {
83545
83640
  });
83546
83641
  };
83547
83642
  CoveoAnalyticsClient.prototype.sendClickEvent = function (_a) {
83548
- var searchQueryUid = _a.searchQueryUid, preparedRequest = __rest(_a, ["searchQueryUid"]);
83549
83643
  return __awaiter(this, void 0, void 0, function () {
83644
+ var searchQueryUid = _a.searchQueryUid, preparedRequest = __rest(_a, ["searchQueryUid"]);
83550
83645
  return __generator(this, function (_b) {
83551
83646
  switch (_b.label) {
83552
83647
  case 0: return [4, this.makeClickEvent(preparedRequest)];
@@ -83563,8 +83658,8 @@ var CoveoAnalyticsClient = (function () {
83563
83658
  });
83564
83659
  };
83565
83660
  CoveoAnalyticsClient.prototype.sendCustomEvent = function (_a) {
83566
- var lastSearchQueryUid = _a.lastSearchQueryUid, preparedRequest = __rest(_a, ["lastSearchQueryUid"]);
83567
83661
  return __awaiter(this, void 0, void 0, function () {
83662
+ var lastSearchQueryUid = _a.lastSearchQueryUid, preparedRequest = __rest(_a, ["lastSearchQueryUid"]);
83568
83663
  return __generator(this, function (_b) {
83569
83664
  switch (_b.label) {
83570
83665
  case 0: return [4, this.makeCustomEvent(preparedRequest)];
@@ -84345,7 +84440,6 @@ var CustomEventsTypes = (_a = {},
84345
84440
  _a[SearchPageEvents.triggerExecute] = 'queryPipelineTriggers',
84346
84441
  _a[SearchPageEvents.triggerQuery] = 'queryPipelineTriggers',
84347
84442
  _a[SearchPageEvents.triggerRedirect] = 'queryPipelineTriggers',
84348
- _a[SearchPageEvents.queryError] = 'errors',
84349
84443
  _a[SearchPageEvents.queryErrorBack] = 'errors',
84350
84444
  _a[SearchPageEvents.queryErrorClear] = 'errors',
84351
84445
  _a[SearchPageEvents.queryErrorRetry] = 'errors',
@@ -85484,10 +85578,10 @@ var CoveoSearchPageClient = (function () {
85484
85578
  var _a;
85485
85579
  return { actionCause: actionCause, customData: (_a = preparedEvent.payload) === null || _a === void 0 ? void 0 : _a.customData };
85486
85580
  };
85487
- CoveoSearchPageClient.prototype.makeCustomEvent = function (event, metadata, eventType) {
85488
- if (eventType === void 0) { eventType = CustomEventsTypes[event]; }
85489
- return __awaiter(this, void 0, void 0, function () {
85581
+ CoveoSearchPageClient.prototype.makeCustomEvent = function (event_1, metadata_1) {
85582
+ return __awaiter(this, arguments, void 0, function (event, metadata, eventType) {
85490
85583
  var customData, request, _a, preparedEvent;
85584
+ if (eventType === void 0) { eventType = CustomEventsTypes[event]; }
85491
85585
  return __generator(this, function (_b) {
85492
85586
  switch (_b.label) {
85493
85587
  case 0:
@@ -85511,9 +85605,9 @@ var CoveoSearchPageClient = (function () {
85511
85605
  });
85512
85606
  });
85513
85607
  };
85514
- CoveoSearchPageClient.prototype.logCustomEvent = function (event, metadata, eventType) {
85515
- if (eventType === void 0) { eventType = CustomEventsTypes[event]; }
85516
- return __awaiter(this, void 0, void 0, function () {
85608
+ CoveoSearchPageClient.prototype.logCustomEvent = function (event_1, metadata_1) {
85609
+ return __awaiter(this, arguments, void 0, function (event, metadata, eventType) {
85610
+ if (eventType === void 0) { eventType = CustomEventsTypes[event]; }
85517
85611
  return __generator(this, function (_a) {
85518
85612
  switch (_a.label) {
85519
85613
  case 0: return [4, this.makeCustomEvent(event, metadata, eventType)];
@@ -85628,15 +85722,15 @@ var CoveoSearchPageClient = (function () {
85628
85722
  });
85629
85723
  };
85630
85724
  CoveoSearchPageClient.prototype.getBaseSearchEventRequest = function (event, metadata) {
85631
- var _a, _b;
85632
85725
  return __awaiter(this, void 0, void 0, function () {
85633
- var _c;
85726
+ var _a;
85727
+ var _b, _c;
85634
85728
  return __generator(this, function (_d) {
85635
85729
  switch (_d.label) {
85636
85730
  case 0:
85637
- _c = [{}];
85638
- return [4, this.getBaseEventRequest(__assign(__assign({}, metadata), (_b = (_a = this.provider).getGeneratedAnswerMetadata) === null || _b === void 0 ? void 0 : _b.call(_a)))];
85639
- case 1: return [2, __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _c.concat([(_d.sent())])), this.provider.getSearchEventRequestPayload()]), { queryPipeline: this.provider.getPipeline(), actionCause: event }])];
85731
+ _a = [{}];
85732
+ return [4, this.getBaseEventRequest(__assign(__assign({}, metadata), (_c = (_b = this.provider).getGeneratedAnswerMetadata) === null || _c === void 0 ? void 0 : _c.call(_b)))];
85733
+ case 1: return [2, __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _a.concat([(_d.sent())])), this.provider.getSearchEventRequestPayload()]), { queryPipeline: this.provider.getPipeline(), actionCause: event }])];
85640
85734
  }
85641
85735
  });
85642
85736
  });
@@ -85900,7 +85994,8 @@ var CaseAssistActions;
85900
85994
  CaseAssistActions["enterInterface"] = "ticket_create_start";
85901
85995
  CaseAssistActions["fieldUpdate"] = "ticket_field_update";
85902
85996
  CaseAssistActions["fieldSuggestionClick"] = "ticket_classification_click";
85903
- CaseAssistActions["suggestionClick"] = "suggestion_click";
85997
+ CaseAssistActions["documentSuggestionClick"] = "documentSuggestionClick";
85998
+ CaseAssistActions["documentSuggestionQuickview"] = "documentSuggestionQuickview";
85904
85999
  CaseAssistActions["suggestionRate"] = "suggestion_rate";
85905
86000
  CaseAssistActions["nextCaseStep"] = "ticket_next_stage";
85906
86001
  CaseAssistActions["caseCancelled"] = "ticket_cancel";
@@ -85948,9 +86043,16 @@ var CaseAssistClient = (function () {
85948
86043
  return this.sendClickEvent();
85949
86044
  };
85950
86045
  CaseAssistClient.prototype.logSelectDocumentSuggestion = function (meta) {
85951
- this.svc.setAction(CaseAssistActions.suggestionClick, meta.suggestion);
85952
- this.svc.setTicket(meta.ticket);
85953
- return this.sendClickEvent();
86046
+ return this.logClickEvent(CaseAssistActions.documentSuggestionClick, meta.suggestion.suggestion, {
86047
+ contentIDKey: 'permanentId',
86048
+ contentIDValue: meta.suggestion.permanentId,
86049
+ });
86050
+ };
86051
+ CaseAssistClient.prototype.logQuickviewDocumentSuggestion = function (meta) {
86052
+ return this.logClickEvent(CaseAssistActions.documentSuggestionQuickview, meta.suggestion.suggestion, {
86053
+ contentIDKey: 'permanentId',
86054
+ contentIDValue: meta.suggestion.permanentId,
86055
+ });
85954
86056
  };
85955
86057
  CaseAssistClient.prototype.logRateDocumentSuggestion = function (meta) {
85956
86058
  this.svc.setAction(CaseAssistActions.suggestionRate, __assign({ rate: meta.rating }, meta.suggestion));
@@ -85997,6 +86099,53 @@ var CaseAssistClient = (function () {
85997
86099
  }
85998
86100
  : null);
85999
86101
  };
86102
+ CaseAssistClient.prototype.getBaseEventRequest = function (metadata) {
86103
+ return __awaiter(this, void 0, void 0, function () {
86104
+ var customData, _a;
86105
+ var _b;
86106
+ var _c, _d;
86107
+ return __generator(this, function (_e) {
86108
+ switch (_e.label) {
86109
+ case 0:
86110
+ customData = __assign({}, metadata);
86111
+ _a = [__assign({}, this.getOrigins())];
86112
+ _b = { customData: customData, language: (_c = this.provider) === null || _c === void 0 ? void 0 : _c.getLanguage(), anonymous: (_d = this.provider) === null || _d === void 0 ? void 0 : _d.getIsAnonymous() };
86113
+ return [4, this.getClientId()];
86114
+ case 1: return [2, __assign.apply(void 0, _a.concat([(_b.clientId = _e.sent(), _b)]))];
86115
+ }
86116
+ });
86117
+ });
86118
+ };
86119
+ CaseAssistClient.prototype.getClientId = function () {
86120
+ return this.coveoAnalyticsClient instanceof CoveoAnalyticsClient
86121
+ ? this.coveoAnalyticsClient.getCurrentVisitorId()
86122
+ : undefined;
86123
+ };
86124
+ CaseAssistClient.prototype.getOrigins = function () {
86125
+ var _a, _b, _c, _d, _e;
86126
+ return {
86127
+ originContext: (_b = (_a = this.provider) === null || _a === void 0 ? void 0 : _a.getOriginContext) === null || _b === void 0 ? void 0 : _b.call(_a),
86128
+ originLevel1: (_c = this.provider) === null || _c === void 0 ? void 0 : _c.getOriginLevel1(),
86129
+ originLevel2: (_d = this.provider) === null || _d === void 0 ? void 0 : _d.getOriginLevel2(),
86130
+ originLevel3: (_e = this.provider) === null || _e === void 0 ? void 0 : _e.getOriginLevel3(),
86131
+ };
86132
+ };
86133
+ CaseAssistClient.prototype.logClickEvent = function (event, info, identifier, metadata) {
86134
+ return __awaiter(this, void 0, void 0, function () {
86135
+ var payload, _a;
86136
+ var _b, _c;
86137
+ return __generator(this, function (_d) {
86138
+ switch (_d.label) {
86139
+ case 0:
86140
+ _a = [__assign({}, info)];
86141
+ return [4, this.getBaseEventRequest(__assign(__assign({}, identifier), metadata))];
86142
+ case 1:
86143
+ payload = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([(_d.sent())])), { searchQueryUid: (_c = (_b = this.provider) === null || _b === void 0 ? void 0 : _b.getSearchUID()) !== null && _c !== void 0 ? _c : '', actionCause: event }]);
86144
+ return [2, this.coveoAnalyticsClient.sendClickEvent(payload)];
86145
+ }
86146
+ });
86147
+ });
86148
+ };
86000
86149
  return CaseAssistClient;
86001
86150
  }());
86002
86151
 
@@ -86040,6 +86189,20 @@ var CoveoInsightClient = (function () {
86040
86189
  }
86041
86190
  return this.logSearchEvent(SearchPageEvents.interfaceLoad);
86042
86191
  };
86192
+ CoveoInsightClient.prototype.logRecentQueryClick = function (metadata) {
86193
+ if (metadata) {
86194
+ var metadataToSend = generateMetadataToSend(metadata);
86195
+ return this.logSearchEvent(SearchPageEvents.recentQueryClick, metadataToSend);
86196
+ }
86197
+ return this.logSearchEvent(SearchPageEvents.recentQueryClick);
86198
+ };
86199
+ CoveoInsightClient.prototype.logClearRecentQueries = function (metadata) {
86200
+ if (metadata) {
86201
+ var metadataToSend = generateMetadataToSend(metadata);
86202
+ return this.logCustomEvent(SearchPageEvents.clearRecentQueries, metadataToSend);
86203
+ }
86204
+ return this.logCustomEvent(SearchPageEvents.clearRecentQueries);
86205
+ };
86043
86206
  CoveoInsightClient.prototype.logInterfaceChange = function (metadata) {
86044
86207
  var metadataToSend = generateMetadataToSend(metadata);
86045
86208
  return this.logSearchEvent(SearchPageEvents.interfaceChange, metadataToSend);
@@ -86371,15 +86534,15 @@ var CoveoInsightClient = (function () {
86371
86534
  });
86372
86535
  };
86373
86536
  CoveoInsightClient.prototype.getBaseSearchEventRequest = function (event, metadata) {
86374
- var _a, _b;
86375
86537
  return __awaiter(this, void 0, void 0, function () {
86376
- var _c;
86538
+ var _a;
86539
+ var _b, _c;
86377
86540
  return __generator(this, function (_d) {
86378
86541
  switch (_d.label) {
86379
86542
  case 0:
86380
- _c = [{}];
86381
- return [4, this.getBaseEventRequest(__assign(__assign({}, metadata), (_b = (_a = this.provider).getGeneratedAnswerMetadata) === null || _b === void 0 ? void 0 : _b.call(_a)))];
86382
- case 1: return [2, __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _c.concat([(_d.sent())])), this.provider.getSearchEventRequestPayload()]), { searchQueryUid: this.provider.getSearchUID(), queryPipeline: this.provider.getPipeline(), actionCause: event }])];
86543
+ _a = [{}];
86544
+ return [4, this.getBaseEventRequest(__assign(__assign({}, metadata), (_c = (_b = this.provider).getGeneratedAnswerMetadata) === null || _c === void 0 ? void 0 : _c.call(_b)))];
86545
+ case 1: return [2, __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _a.concat([(_d.sent())])), this.provider.getSearchEventRequestPayload()]), { searchQueryUid: this.provider.getSearchUID(), queryPipeline: this.provider.getPipeline(), actionCause: event }])];
86383
86546
  }
86384
86547
  });
86385
86548
  });
@@ -15,7 +15,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
15
15
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16
16
  PERFORMANCE OF THIS SOFTWARE.
17
17
  ***************************************************************************** */
18
- /* global Reflect, Promise */
18
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
19
19
 
20
20
 
21
21
  function __rest(s, e) {
@@ -38,7 +38,12 @@ function __awaiter(thisArg, _arguments, P, generator) {
38
38
  function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
39
39
  step((generator = generator.apply(thisArg, _arguments || [])).next());
40
40
  });
41
- }
41
+ }
42
+
43
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
44
+ var e = new Error(message);
45
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
46
+ };
42
47
 
43
48
  var EventType;
44
49
  (function (EventType) {
@@ -154,7 +159,7 @@ for (let i = 0; i < 256; ++i) {
154
159
  function unsafeStringify(arr, offset = 0) {
155
160
  // Note: Be careful editing this code! It's been tuned for performance
156
161
  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
157
- return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
162
+ return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
158
163
  }
159
164
 
160
165
  function parse(uuid) {
@@ -667,7 +672,7 @@ const addPageViewToHistory = (pageViewValue) => __awaiter(void 0, void 0, void 0
667
672
  yield store.addElementAsync(historyElement);
668
673
  });
669
674
 
670
- const libVersion = "2.30.44" ;
675
+ const libVersion = "2.30.46";
671
676
 
672
677
  const getFormattedLocation = (location) => `${location.protocol}//${location.hostname}${location.pathname.indexOf('/') === 0 ? location.pathname : `/${location.pathname}`}${location.search}`;
673
678
 
@@ -1538,8 +1543,8 @@ class CoveoAnalyticsClient {
1538
1543
  });
1539
1544
  }
1540
1545
  sendSearchEvent(_a) {
1541
- var { searchQueryUid } = _a, preparedRequest = __rest(_a, ["searchQueryUid"]);
1542
1546
  return __awaiter(this, void 0, void 0, function* () {
1547
+ var { searchQueryUid } = _a, preparedRequest = __rest(_a, ["searchQueryUid"]);
1543
1548
  return (yield this.makeSearchEvent(preparedRequest)).log({ searchQueryUid });
1544
1549
  });
1545
1550
  }
@@ -1549,8 +1554,8 @@ class CoveoAnalyticsClient {
1549
1554
  });
1550
1555
  }
1551
1556
  sendClickEvent(_a) {
1552
- var { searchQueryUid } = _a, preparedRequest = __rest(_a, ["searchQueryUid"]);
1553
1557
  return __awaiter(this, void 0, void 0, function* () {
1558
+ var { searchQueryUid } = _a, preparedRequest = __rest(_a, ["searchQueryUid"]);
1554
1559
  return (yield this.makeClickEvent(preparedRequest)).log({ searchQueryUid });
1555
1560
  });
1556
1561
  }
@@ -1560,8 +1565,8 @@ class CoveoAnalyticsClient {
1560
1565
  });
1561
1566
  }
1562
1567
  sendCustomEvent(_a) {
1563
- var { lastSearchQueryUid } = _a, preparedRequest = __rest(_a, ["lastSearchQueryUid"]);
1564
1568
  return __awaiter(this, void 0, void 0, function* () {
1569
+ var { lastSearchQueryUid } = _a, preparedRequest = __rest(_a, ["lastSearchQueryUid"]);
1565
1570
  return (yield this.makeCustomEvent(preparedRequest)).log({ lastSearchQueryUid });
1566
1571
  });
1567
1572
  }
@@ -1855,7 +1860,6 @@ const CustomEventsTypes = {
1855
1860
  [SearchPageEvents.triggerExecute]: 'queryPipelineTriggers',
1856
1861
  [SearchPageEvents.triggerQuery]: 'queryPipelineTriggers',
1857
1862
  [SearchPageEvents.triggerRedirect]: 'queryPipelineTriggers',
1858
- [SearchPageEvents.queryError]: 'errors',
1859
1863
  [SearchPageEvents.queryErrorBack]: 'errors',
1860
1864
  [SearchPageEvents.queryErrorClear]: 'errors',
1861
1865
  [SearchPageEvents.queryErrorRetry]: 'errors',
@@ -2603,8 +2607,8 @@ class CoveoSearchPageClient {
2603
2607
  var _a;
2604
2608
  return { actionCause, customData: (_a = preparedEvent.payload) === null || _a === void 0 ? void 0 : _a.customData };
2605
2609
  }
2606
- makeCustomEvent(event, metadata, eventType = CustomEventsTypes[event]) {
2607
- return __awaiter(this, void 0, void 0, function* () {
2610
+ makeCustomEvent(event_1, metadata_1) {
2611
+ return __awaiter(this, arguments, void 0, function* (event, metadata, eventType = CustomEventsTypes[event]) {
2608
2612
  this.coveoAnalyticsClient.getParameters;
2609
2613
  const customData = Object.assign(Object.assign({}, this.provider.getBaseMetadata()), metadata);
2610
2614
  const request = Object.assign(Object.assign({}, (yield this.getBaseEventRequest(customData))), { eventType, eventValue: event });
@@ -2615,8 +2619,8 @@ class CoveoSearchPageClient {
2615
2619
  };
2616
2620
  });
2617
2621
  }
2618
- logCustomEvent(event, metadata, eventType = CustomEventsTypes[event]) {
2619
- return __awaiter(this, void 0, void 0, function* () {
2622
+ logCustomEvent(event_1, metadata_1) {
2623
+ return __awaiter(this, arguments, void 0, function* (event, metadata, eventType = CustomEventsTypes[event]) {
2620
2624
  return (yield this.makeCustomEvent(event, metadata, eventType)).log({ searchUID: this.provider.getSearchUID() });
2621
2625
  });
2622
2626
  }
@@ -2672,8 +2676,8 @@ class CoveoSearchPageClient {
2672
2676
  });
2673
2677
  }
2674
2678
  getBaseSearchEventRequest(event, metadata) {
2675
- var _a, _b;
2676
2679
  return __awaiter(this, void 0, void 0, function* () {
2680
+ var _a, _b;
2677
2681
  return Object.assign(Object.assign(Object.assign({}, (yield this.getBaseEventRequest(Object.assign(Object.assign({}, metadata), (_b = (_a = this.provider).getGeneratedAnswerMetadata) === null || _b === void 0 ? void 0 : _b.call(_a))))), this.provider.getSearchEventRequestPayload()), { queryPipeline: this.provider.getPipeline(), actionCause: event });
2678
2682
  });
2679
2683
  }
@@ -2919,7 +2923,8 @@ var CaseAssistActions;
2919
2923
  CaseAssistActions["enterInterface"] = "ticket_create_start";
2920
2924
  CaseAssistActions["fieldUpdate"] = "ticket_field_update";
2921
2925
  CaseAssistActions["fieldSuggestionClick"] = "ticket_classification_click";
2922
- CaseAssistActions["suggestionClick"] = "suggestion_click";
2926
+ CaseAssistActions["documentSuggestionClick"] = "documentSuggestionClick";
2927
+ CaseAssistActions["documentSuggestionQuickview"] = "documentSuggestionQuickview";
2923
2928
  CaseAssistActions["suggestionRate"] = "suggestion_rate";
2924
2929
  CaseAssistActions["nextCaseStep"] = "ticket_next_stage";
2925
2930
  CaseAssistActions["caseCancelled"] = "ticket_cancel";
@@ -2967,9 +2972,16 @@ class CaseAssistClient {
2967
2972
  return this.sendClickEvent();
2968
2973
  }
2969
2974
  logSelectDocumentSuggestion(meta) {
2970
- this.svc.setAction(CaseAssistActions.suggestionClick, meta.suggestion);
2971
- this.svc.setTicket(meta.ticket);
2972
- return this.sendClickEvent();
2975
+ return this.logClickEvent(CaseAssistActions.documentSuggestionClick, meta.suggestion.suggestion, {
2976
+ contentIDKey: 'permanentId',
2977
+ contentIDValue: meta.suggestion.permanentId,
2978
+ });
2979
+ }
2980
+ logQuickviewDocumentSuggestion(meta) {
2981
+ return this.logClickEvent(CaseAssistActions.documentSuggestionQuickview, meta.suggestion.suggestion, {
2982
+ contentIDKey: 'permanentId',
2983
+ contentIDValue: meta.suggestion.permanentId,
2984
+ });
2973
2985
  }
2974
2986
  logRateDocumentSuggestion(meta) {
2975
2987
  this.svc.setAction(CaseAssistActions.suggestionRate, Object.assign({ rate: meta.rating }, meta.suggestion));
@@ -3016,6 +3028,34 @@ class CaseAssistClient {
3016
3028
  }
3017
3029
  : null);
3018
3030
  }
3031
+ getBaseEventRequest(metadata) {
3032
+ return __awaiter(this, void 0, void 0, function* () {
3033
+ var _a, _b;
3034
+ const customData = Object.assign({}, metadata);
3035
+ return Object.assign(Object.assign({}, this.getOrigins()), { customData, language: (_a = this.provider) === null || _a === void 0 ? void 0 : _a.getLanguage(), anonymous: (_b = this.provider) === null || _b === void 0 ? void 0 : _b.getIsAnonymous(), clientId: yield this.getClientId() });
3036
+ });
3037
+ }
3038
+ getClientId() {
3039
+ return this.coveoAnalyticsClient instanceof CoveoAnalyticsClient
3040
+ ? this.coveoAnalyticsClient.getCurrentVisitorId()
3041
+ : undefined;
3042
+ }
3043
+ getOrigins() {
3044
+ var _a, _b, _c, _d, _e;
3045
+ return {
3046
+ originContext: (_b = (_a = this.provider) === null || _a === void 0 ? void 0 : _a.getOriginContext) === null || _b === void 0 ? void 0 : _b.call(_a),
3047
+ originLevel1: (_c = this.provider) === null || _c === void 0 ? void 0 : _c.getOriginLevel1(),
3048
+ originLevel2: (_d = this.provider) === null || _d === void 0 ? void 0 : _d.getOriginLevel2(),
3049
+ originLevel3: (_e = this.provider) === null || _e === void 0 ? void 0 : _e.getOriginLevel3(),
3050
+ };
3051
+ }
3052
+ logClickEvent(event, info, identifier, metadata) {
3053
+ return __awaiter(this, void 0, void 0, function* () {
3054
+ var _a, _b;
3055
+ const payload = Object.assign(Object.assign(Object.assign({}, info), (yield this.getBaseEventRequest(Object.assign(Object.assign({}, identifier), metadata)))), { searchQueryUid: (_b = (_a = this.provider) === null || _a === void 0 ? void 0 : _a.getSearchUID()) !== null && _b !== void 0 ? _b : '', actionCause: event });
3056
+ return this.coveoAnalyticsClient.sendClickEvent(payload);
3057
+ });
3058
+ }
3019
3059
  }
3020
3060
 
3021
3061
  const extractContextFromMetadata = (meta) => {
@@ -3057,6 +3097,20 @@ class CoveoInsightClient {
3057
3097
  }
3058
3098
  return this.logSearchEvent(SearchPageEvents.interfaceLoad);
3059
3099
  }
3100
+ logRecentQueryClick(metadata) {
3101
+ if (metadata) {
3102
+ const metadataToSend = generateMetadataToSend(metadata);
3103
+ return this.logSearchEvent(SearchPageEvents.recentQueryClick, metadataToSend);
3104
+ }
3105
+ return this.logSearchEvent(SearchPageEvents.recentQueryClick);
3106
+ }
3107
+ logClearRecentQueries(metadata) {
3108
+ if (metadata) {
3109
+ const metadataToSend = generateMetadataToSend(metadata);
3110
+ return this.logCustomEvent(SearchPageEvents.clearRecentQueries, metadataToSend);
3111
+ }
3112
+ return this.logCustomEvent(SearchPageEvents.clearRecentQueries);
3113
+ }
3060
3114
  logInterfaceChange(metadata) {
3061
3115
  const metadataToSend = generateMetadataToSend(metadata);
3062
3116
  return this.logSearchEvent(SearchPageEvents.interfaceChange, metadataToSend);
@@ -3350,8 +3404,8 @@ class CoveoInsightClient {
3350
3404
  });
3351
3405
  }
3352
3406
  getBaseSearchEventRequest(event, metadata) {
3353
- var _a, _b;
3354
3407
  return __awaiter(this, void 0, void 0, function* () {
3408
+ var _a, _b;
3355
3409
  return Object.assign(Object.assign(Object.assign({}, (yield this.getBaseEventRequest(Object.assign(Object.assign({}, metadata), (_b = (_a = this.provider).getGeneratedAnswerMetadata) === null || _b === void 0 ? void 0 : _b.call(_a))))), this.provider.getSearchEventRequestPayload()), { searchQueryUid: this.provider.getSearchUID(), queryPipeline: this.provider.getPipeline(), actionCause: event });
3356
3410
  });
3357
3411
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coveo.analytics",
3
- "version": "2.30.44",
3
+ "version": "2.30.46",
4
4
  "description": "📈 Coveo analytics client (node and browser compatible) ",
5
5
  "main": "dist/library.cjs",
6
6
  "module": "dist/browser.mjs",
@@ -34,7 +34,7 @@
34
34
  "@babel/core": "^7.23.2",
35
35
  "@babel/preset-env": "7.23.2",
36
36
  "@babel/register": "^7.22.15",
37
- "@octokit/rest": "20.1.1",
37
+ "@octokit/rest": "^20.1.2",
38
38
  "@rollup/plugin-alias": "^5.0.0",
39
39
  "@rollup/plugin-commonjs": "^24.1.0",
40
40
  "@rollup/plugin-json": "^6.0.0",
@@ -47,21 +47,21 @@
47
47
  "@types/mime": "0.0.29",
48
48
  "@types/node": "^6.0.45",
49
49
  "@types/uuid": "^9.0.0",
50
- "coveralls": "^3.1.1",
50
+ "coveralls-next": "^5.0.0",
51
51
  "exports-loader": "0.6.4",
52
52
  "fetch-mock": "^9.11.0",
53
53
  "husky": "^4.3.0",
54
54
  "jest": "^29.1.0",
55
55
  "jest-environment-jsdom": "^29.5.0",
56
- "jsdom": "^21.1.1",
56
+ "jsdom": "^27.0.0",
57
57
  "lint-staged": "^13.2.1",
58
- "prettier": "^2.8.7",
59
- "rimraf": "^3.0.2",
58
+ "prettier": "^3.6.2",
59
+ "rimraf": "^6.0.1",
60
60
  "rollup": "^3.29.5",
61
61
  "rollup-plugin-copy": "^3.5.0",
62
62
  "rollup-plugin-serve": "^1.0.1",
63
63
  "rollup-plugin-typescript2": "^0.34.0",
64
- "stylelint": "^13.6.1",
64
+ "stylelint": "^16.23.1",
65
65
  "ts-jest": "^29.1.0",
66
66
  "typescript": "^5.0.4"
67
67
  },