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.
- package/README.md +41 -41
- package/dist/browser.mjs +72 -18
- package/dist/coveoua.browser.js +1 -1
- package/dist/coveoua.browser.js.map +1 -1
- package/dist/coveoua.debug.js +103 -30
- package/dist/coveoua.debug.js.map +1 -1
- package/dist/coveoua.js +1 -1
- package/dist/coveoua.js.map +1 -1
- package/dist/definitions/caseAssist/caseAssistActions.d.ts +4 -1
- package/dist/definitions/caseAssist/caseAssistClient.d.ts +12 -1
- package/dist/definitions/client/analytics.d.ts +2 -2
- package/dist/definitions/insight/insightClient.d.ts +2 -0
- package/dist/definitions/version.d.ts +1 -1
- package/dist/library.cjs +200 -37
- package/dist/library.es.js +72 -18
- package/dist/library.js +200 -37
- package/dist/library.mjs +200 -37
- package/dist/react-native.es.js +72 -18
- package/package.json +7 -7
- package/src/caseAssist/caseAssistActions.ts +4 -1
- package/src/caseAssist/caseAssistClient.spec.ts +64 -40
- package/src/caseAssist/caseAssistClient.ts +67 -6
- package/src/client/analytics.spec.ts +1 -1
- package/src/client/analytics.ts +11 -11
- package/src/client/analyticsBeaconClient.spec.ts +10 -10
- package/src/client/analyticsBeaconClient.ts +4 -4
- package/src/client/analyticsFetchClient.ts +1 -1
- package/src/client/analyticsRequestClient.ts +1 -1
- package/src/client/measurementProtocolMapper.ts +2 -2
- package/src/client/measurementProtocolMapping/baseMeasurementProtocolMapper.ts +1 -1
- package/src/client/measurementProtocolMapping/commerceMeasurementProtocolMapper.ts +5 -5
- package/src/client/noopAnalytics.ts +1 -1
- package/src/client/utils.spec.ts +6 -6
- package/src/coveoua/browser.ts +2 -2
- package/src/coveoua/plugins.ts +1 -1
- package/src/coveoua/simpleanalytics.spec.ts +5 -5
- package/src/coveoua/simpleanalytics.ts +1 -1
- package/src/donottrack.spec.ts +1 -1
- package/src/history.spec.ts +1 -1
- package/src/insight/insightClient.spec.ts +42 -8
- package/src/insight/insightClient.ts +82 -63
- package/src/plugins/ec.spec.ts +6 -6
- package/src/plugins/ec.ts +5 -5
- package/src/plugins/link.spec.ts +5 -5
- package/src/plugins/link.ts +1 -1
- package/src/plugins/svc.ts +1 -1
- package/src/searchPage/searchPageClient.spec.ts +3 -3
- package/src/searchPage/searchPageClient.ts +27 -24
- package/src/searchPage/searchPageEvents.ts +2 -1
- package/src/version.ts +1 -1
package/dist/library.es.js
CHANGED
|
@@ -12,7 +12,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
|
12
12
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
13
13
|
PERFORMANCE OF THIS SOFTWARE.
|
|
14
14
|
***************************************************************************** */
|
|
15
|
-
/* global Reflect, Promise */
|
|
15
|
+
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
function __rest(s, e) {
|
|
@@ -35,7 +35,12 @@ function __awaiter(thisArg, _arguments, P, generator) {
|
|
|
35
35
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
36
36
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
37
37
|
});
|
|
38
|
-
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
41
|
+
var e = new Error(message);
|
|
42
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
43
|
+
};
|
|
39
44
|
|
|
40
45
|
var EventType;
|
|
41
46
|
(function (EventType) {
|
|
@@ -372,7 +377,7 @@ for (let i = 0; i < 256; ++i) {
|
|
|
372
377
|
function unsafeStringify(arr, offset = 0) {
|
|
373
378
|
// Note: Be careful editing this code! It's been tuned for performance
|
|
374
379
|
// and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
|
|
375
|
-
return
|
|
380
|
+
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]];
|
|
376
381
|
}
|
|
377
382
|
|
|
378
383
|
function parse(uuid) {
|
|
@@ -598,7 +603,7 @@ function sha1(bytes) {
|
|
|
598
603
|
const v5 = v35('v5', 0x50, sha1);
|
|
599
604
|
var uuidv5 = v5;
|
|
600
605
|
|
|
601
|
-
const libVersion = "2.30.
|
|
606
|
+
const libVersion = "2.30.46";
|
|
602
607
|
|
|
603
608
|
const getFormattedLocation = (location) => `${location.protocol}//${location.hostname}${location.pathname.indexOf('/') === 0 ? location.pathname : `/${location.pathname}`}${location.search}`;
|
|
604
609
|
|
|
@@ -1537,8 +1542,8 @@ class CoveoAnalyticsClient {
|
|
|
1537
1542
|
});
|
|
1538
1543
|
}
|
|
1539
1544
|
sendSearchEvent(_a) {
|
|
1540
|
-
var { searchQueryUid } = _a, preparedRequest = __rest(_a, ["searchQueryUid"]);
|
|
1541
1545
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1546
|
+
var { searchQueryUid } = _a, preparedRequest = __rest(_a, ["searchQueryUid"]);
|
|
1542
1547
|
return (yield this.makeSearchEvent(preparedRequest)).log({ searchQueryUid });
|
|
1543
1548
|
});
|
|
1544
1549
|
}
|
|
@@ -1548,8 +1553,8 @@ class CoveoAnalyticsClient {
|
|
|
1548
1553
|
});
|
|
1549
1554
|
}
|
|
1550
1555
|
sendClickEvent(_a) {
|
|
1551
|
-
var { searchQueryUid } = _a, preparedRequest = __rest(_a, ["searchQueryUid"]);
|
|
1552
1556
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1557
|
+
var { searchQueryUid } = _a, preparedRequest = __rest(_a, ["searchQueryUid"]);
|
|
1553
1558
|
return (yield this.makeClickEvent(preparedRequest)).log({ searchQueryUid });
|
|
1554
1559
|
});
|
|
1555
1560
|
}
|
|
@@ -1559,8 +1564,8 @@ class CoveoAnalyticsClient {
|
|
|
1559
1564
|
});
|
|
1560
1565
|
}
|
|
1561
1566
|
sendCustomEvent(_a) {
|
|
1562
|
-
var { lastSearchQueryUid } = _a, preparedRequest = __rest(_a, ["lastSearchQueryUid"]);
|
|
1563
1567
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1568
|
+
var { lastSearchQueryUid } = _a, preparedRequest = __rest(_a, ["lastSearchQueryUid"]);
|
|
1564
1569
|
return (yield this.makeCustomEvent(preparedRequest)).log({ lastSearchQueryUid });
|
|
1565
1570
|
});
|
|
1566
1571
|
}
|
|
@@ -1834,7 +1839,6 @@ const CustomEventsTypes = {
|
|
|
1834
1839
|
[SearchPageEvents.triggerExecute]: 'queryPipelineTriggers',
|
|
1835
1840
|
[SearchPageEvents.triggerQuery]: 'queryPipelineTriggers',
|
|
1836
1841
|
[SearchPageEvents.triggerRedirect]: 'queryPipelineTriggers',
|
|
1837
|
-
[SearchPageEvents.queryError]: 'errors',
|
|
1838
1842
|
[SearchPageEvents.queryErrorBack]: 'errors',
|
|
1839
1843
|
[SearchPageEvents.queryErrorClear]: 'errors',
|
|
1840
1844
|
[SearchPageEvents.queryErrorRetry]: 'errors',
|
|
@@ -2582,8 +2586,8 @@ class CoveoSearchPageClient {
|
|
|
2582
2586
|
var _a;
|
|
2583
2587
|
return { actionCause, customData: (_a = preparedEvent.payload) === null || _a === void 0 ? void 0 : _a.customData };
|
|
2584
2588
|
}
|
|
2585
|
-
makeCustomEvent(
|
|
2586
|
-
return __awaiter(this,
|
|
2589
|
+
makeCustomEvent(event_1, metadata_1) {
|
|
2590
|
+
return __awaiter(this, arguments, void 0, function* (event, metadata, eventType = CustomEventsTypes[event]) {
|
|
2587
2591
|
this.coveoAnalyticsClient.getParameters;
|
|
2588
2592
|
const customData = Object.assign(Object.assign({}, this.provider.getBaseMetadata()), metadata);
|
|
2589
2593
|
const request = Object.assign(Object.assign({}, (yield this.getBaseEventRequest(customData))), { eventType, eventValue: event });
|
|
@@ -2594,8 +2598,8 @@ class CoveoSearchPageClient {
|
|
|
2594
2598
|
};
|
|
2595
2599
|
});
|
|
2596
2600
|
}
|
|
2597
|
-
logCustomEvent(
|
|
2598
|
-
return __awaiter(this,
|
|
2601
|
+
logCustomEvent(event_1, metadata_1) {
|
|
2602
|
+
return __awaiter(this, arguments, void 0, function* (event, metadata, eventType = CustomEventsTypes[event]) {
|
|
2599
2603
|
return (yield this.makeCustomEvent(event, metadata, eventType)).log({ searchUID: this.provider.getSearchUID() });
|
|
2600
2604
|
});
|
|
2601
2605
|
}
|
|
@@ -2651,8 +2655,8 @@ class CoveoSearchPageClient {
|
|
|
2651
2655
|
});
|
|
2652
2656
|
}
|
|
2653
2657
|
getBaseSearchEventRequest(event, metadata) {
|
|
2654
|
-
var _a, _b;
|
|
2655
2658
|
return __awaiter(this, void 0, void 0, function* () {
|
|
2659
|
+
var _a, _b;
|
|
2656
2660
|
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 });
|
|
2657
2661
|
});
|
|
2658
2662
|
}
|
|
@@ -2898,7 +2902,8 @@ var CaseAssistActions;
|
|
|
2898
2902
|
CaseAssistActions["enterInterface"] = "ticket_create_start";
|
|
2899
2903
|
CaseAssistActions["fieldUpdate"] = "ticket_field_update";
|
|
2900
2904
|
CaseAssistActions["fieldSuggestionClick"] = "ticket_classification_click";
|
|
2901
|
-
CaseAssistActions["
|
|
2905
|
+
CaseAssistActions["documentSuggestionClick"] = "documentSuggestionClick";
|
|
2906
|
+
CaseAssistActions["documentSuggestionQuickview"] = "documentSuggestionQuickview";
|
|
2902
2907
|
CaseAssistActions["suggestionRate"] = "suggestion_rate";
|
|
2903
2908
|
CaseAssistActions["nextCaseStep"] = "ticket_next_stage";
|
|
2904
2909
|
CaseAssistActions["caseCancelled"] = "ticket_cancel";
|
|
@@ -2946,9 +2951,16 @@ class CaseAssistClient {
|
|
|
2946
2951
|
return this.sendClickEvent();
|
|
2947
2952
|
}
|
|
2948
2953
|
logSelectDocumentSuggestion(meta) {
|
|
2949
|
-
this.
|
|
2950
|
-
|
|
2951
|
-
|
|
2954
|
+
return this.logClickEvent(CaseAssistActions.documentSuggestionClick, meta.suggestion.suggestion, {
|
|
2955
|
+
contentIDKey: 'permanentId',
|
|
2956
|
+
contentIDValue: meta.suggestion.permanentId,
|
|
2957
|
+
});
|
|
2958
|
+
}
|
|
2959
|
+
logQuickviewDocumentSuggestion(meta) {
|
|
2960
|
+
return this.logClickEvent(CaseAssistActions.documentSuggestionQuickview, meta.suggestion.suggestion, {
|
|
2961
|
+
contentIDKey: 'permanentId',
|
|
2962
|
+
contentIDValue: meta.suggestion.permanentId,
|
|
2963
|
+
});
|
|
2952
2964
|
}
|
|
2953
2965
|
logRateDocumentSuggestion(meta) {
|
|
2954
2966
|
this.svc.setAction(CaseAssistActions.suggestionRate, Object.assign({ rate: meta.rating }, meta.suggestion));
|
|
@@ -2995,6 +3007,34 @@ class CaseAssistClient {
|
|
|
2995
3007
|
}
|
|
2996
3008
|
: null);
|
|
2997
3009
|
}
|
|
3010
|
+
getBaseEventRequest(metadata) {
|
|
3011
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
3012
|
+
var _a, _b;
|
|
3013
|
+
const customData = Object.assign({}, metadata);
|
|
3014
|
+
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() });
|
|
3015
|
+
});
|
|
3016
|
+
}
|
|
3017
|
+
getClientId() {
|
|
3018
|
+
return this.coveoAnalyticsClient instanceof CoveoAnalyticsClient
|
|
3019
|
+
? this.coveoAnalyticsClient.getCurrentVisitorId()
|
|
3020
|
+
: undefined;
|
|
3021
|
+
}
|
|
3022
|
+
getOrigins() {
|
|
3023
|
+
var _a, _b, _c, _d, _e;
|
|
3024
|
+
return {
|
|
3025
|
+
originContext: (_b = (_a = this.provider) === null || _a === void 0 ? void 0 : _a.getOriginContext) === null || _b === void 0 ? void 0 : _b.call(_a),
|
|
3026
|
+
originLevel1: (_c = this.provider) === null || _c === void 0 ? void 0 : _c.getOriginLevel1(),
|
|
3027
|
+
originLevel2: (_d = this.provider) === null || _d === void 0 ? void 0 : _d.getOriginLevel2(),
|
|
3028
|
+
originLevel3: (_e = this.provider) === null || _e === void 0 ? void 0 : _e.getOriginLevel3(),
|
|
3029
|
+
};
|
|
3030
|
+
}
|
|
3031
|
+
logClickEvent(event, info, identifier, metadata) {
|
|
3032
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
3033
|
+
var _a, _b;
|
|
3034
|
+
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 });
|
|
3035
|
+
return this.coveoAnalyticsClient.sendClickEvent(payload);
|
|
3036
|
+
});
|
|
3037
|
+
}
|
|
2998
3038
|
}
|
|
2999
3039
|
|
|
3000
3040
|
const extractContextFromMetadata = (meta) => {
|
|
@@ -3036,6 +3076,20 @@ class CoveoInsightClient {
|
|
|
3036
3076
|
}
|
|
3037
3077
|
return this.logSearchEvent(SearchPageEvents.interfaceLoad);
|
|
3038
3078
|
}
|
|
3079
|
+
logRecentQueryClick(metadata) {
|
|
3080
|
+
if (metadata) {
|
|
3081
|
+
const metadataToSend = generateMetadataToSend(metadata);
|
|
3082
|
+
return this.logSearchEvent(SearchPageEvents.recentQueryClick, metadataToSend);
|
|
3083
|
+
}
|
|
3084
|
+
return this.logSearchEvent(SearchPageEvents.recentQueryClick);
|
|
3085
|
+
}
|
|
3086
|
+
logClearRecentQueries(metadata) {
|
|
3087
|
+
if (metadata) {
|
|
3088
|
+
const metadataToSend = generateMetadataToSend(metadata);
|
|
3089
|
+
return this.logCustomEvent(SearchPageEvents.clearRecentQueries, metadataToSend);
|
|
3090
|
+
}
|
|
3091
|
+
return this.logCustomEvent(SearchPageEvents.clearRecentQueries);
|
|
3092
|
+
}
|
|
3039
3093
|
logInterfaceChange(metadata) {
|
|
3040
3094
|
const metadataToSend = generateMetadataToSend(metadata);
|
|
3041
3095
|
return this.logSearchEvent(SearchPageEvents.interfaceChange, metadataToSend);
|
|
@@ -3329,8 +3383,8 @@ class CoveoInsightClient {
|
|
|
3329
3383
|
});
|
|
3330
3384
|
}
|
|
3331
3385
|
getBaseSearchEventRequest(event, metadata) {
|
|
3332
|
-
var _a, _b;
|
|
3333
3386
|
return __awaiter(this, void 0, void 0, function* () {
|
|
3387
|
+
var _a, _b;
|
|
3334
3388
|
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 });
|
|
3335
3389
|
});
|
|
3336
3390
|
}
|
package/dist/library.js
CHANGED
|
@@ -21,7 +21,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
|
21
21
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
22
22
|
PERFORMANCE OF THIS SOFTWARE.
|
|
23
23
|
***************************************************************************** */
|
|
24
|
-
/* global Reflect, Promise */
|
|
24
|
+
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
25
25
|
|
|
26
26
|
var extendStatics = function(d, b) {
|
|
27
27
|
extendStatics = Object.setPrototypeOf ||
|
|
@@ -72,8 +72,8 @@ function __awaiter(thisArg, _arguments, P, generator) {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
function __generator(thisArg, body) {
|
|
75
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
76
|
-
return g =
|
|
75
|
+
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);
|
|
76
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
77
77
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
78
78
|
function step(op) {
|
|
79
79
|
if (f) throw new TypeError("Generator is already executing.");
|
|
@@ -107,7 +107,12 @@ function __spreadArray(to, from, pack) {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
110
|
-
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
113
|
+
var e = new Error(message);
|
|
114
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
115
|
+
};
|
|
111
116
|
|
|
112
117
|
exports.EventType = void 0;
|
|
113
118
|
(function (EventType) {
|
|
@@ -505,7 +510,7 @@ for (let i = 0; i < 256; ++i) {
|
|
|
505
510
|
function unsafeStringify(arr, offset = 0) {
|
|
506
511
|
// Note: Be careful editing this code! It's been tuned for performance
|
|
507
512
|
// and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
|
|
508
|
-
return
|
|
513
|
+
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]];
|
|
509
514
|
}
|
|
510
515
|
|
|
511
516
|
function parse(uuid) {
|
|
@@ -731,7 +736,7 @@ function sha1(bytes) {
|
|
|
731
736
|
const v5 = v35('v5', 0x50, sha1);
|
|
732
737
|
var uuidv5 = v5;
|
|
733
738
|
|
|
734
|
-
var libVersion = "2.30.
|
|
739
|
+
var libVersion = "2.30.46";
|
|
735
740
|
|
|
736
741
|
var getFormattedLocation = function (location) {
|
|
737
742
|
return "".concat(location.protocol, "//").concat(location.hostname).concat(location.pathname.indexOf('/') === 0 ? location.pathname : "/".concat(location.pathname)).concat(location.search);
|
|
@@ -82515,10 +82520,6 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
|
|
|
82515
82520
|
agent = agent(parsedURL);
|
|
82516
82521
|
}
|
|
82517
82522
|
|
|
82518
|
-
if (!headers.has('Connection') && !agent) {
|
|
82519
|
-
headers.set('Connection', 'close');
|
|
82520
|
-
}
|
|
82521
|
-
|
|
82522
82523
|
// HTTP-network fetch step 4.2
|
|
82523
82524
|
// chunked encoding is handled by Node.js
|
|
82524
82525
|
|
|
@@ -82567,6 +82568,20 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
|
|
|
82567
82568
|
return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);
|
|
82568
82569
|
};
|
|
82569
82570
|
|
|
82571
|
+
/**
|
|
82572
|
+
* isSameProtocol reports whether the two provided URLs use the same protocol.
|
|
82573
|
+
*
|
|
82574
|
+
* Both domains must already be in canonical form.
|
|
82575
|
+
* @param {string|URL} original
|
|
82576
|
+
* @param {string|URL} destination
|
|
82577
|
+
*/
|
|
82578
|
+
const isSameProtocol = function isSameProtocol(destination, original) {
|
|
82579
|
+
const orig = new URL$1(original).protocol;
|
|
82580
|
+
const dest = new URL$1(destination).protocol;
|
|
82581
|
+
|
|
82582
|
+
return orig === dest;
|
|
82583
|
+
};
|
|
82584
|
+
|
|
82570
82585
|
/**
|
|
82571
82586
|
* Fetch function
|
|
82572
82587
|
*
|
|
@@ -82598,7 +82613,7 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
|
|
|
82598
82613
|
let error = new AbortError('The user aborted a request.');
|
|
82599
82614
|
reject(error);
|
|
82600
82615
|
if (request.body && request.body instanceof Stream.Readable) {
|
|
82601
|
-
request.body
|
|
82616
|
+
destroyStream(request.body, error);
|
|
82602
82617
|
}
|
|
82603
82618
|
if (!response || !response.body) return;
|
|
82604
82619
|
response.body.emit('error', error);
|
|
@@ -82639,9 +82654,43 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
|
|
|
82639
82654
|
|
|
82640
82655
|
req.on('error', function (err) {
|
|
82641
82656
|
reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
|
|
82657
|
+
|
|
82658
|
+
if (response && response.body) {
|
|
82659
|
+
destroyStream(response.body, err);
|
|
82660
|
+
}
|
|
82661
|
+
|
|
82642
82662
|
finalize();
|
|
82643
82663
|
});
|
|
82644
82664
|
|
|
82665
|
+
fixResponseChunkedTransferBadEnding(req, function (err) {
|
|
82666
|
+
if (signal && signal.aborted) {
|
|
82667
|
+
return;
|
|
82668
|
+
}
|
|
82669
|
+
|
|
82670
|
+
if (response && response.body) {
|
|
82671
|
+
destroyStream(response.body, err);
|
|
82672
|
+
}
|
|
82673
|
+
});
|
|
82674
|
+
|
|
82675
|
+
/* c8 ignore next 18 */
|
|
82676
|
+
if (parseInt(process.version.substring(1)) < 14) {
|
|
82677
|
+
// Before Node.js 14, pipeline() does not fully support async iterators and does not always
|
|
82678
|
+
// properly handle when the socket close/end events are out of order.
|
|
82679
|
+
req.on('socket', function (s) {
|
|
82680
|
+
s.addListener('close', function (hadError) {
|
|
82681
|
+
// if a data listener is still present we didn't end cleanly
|
|
82682
|
+
const hasDataListener = s.listenerCount('data') > 0;
|
|
82683
|
+
|
|
82684
|
+
// if end happened before close but the socket didn't emit an error, do it now
|
|
82685
|
+
if (response && hasDataListener && !hadError && !(signal && signal.aborted)) {
|
|
82686
|
+
const err = new Error('Premature close');
|
|
82687
|
+
err.code = 'ERR_STREAM_PREMATURE_CLOSE';
|
|
82688
|
+
response.body.emit('error', err);
|
|
82689
|
+
}
|
|
82690
|
+
});
|
|
82691
|
+
});
|
|
82692
|
+
}
|
|
82693
|
+
|
|
82645
82694
|
req.on('response', function (res) {
|
|
82646
82695
|
clearTimeout(reqTimeout);
|
|
82647
82696
|
|
|
@@ -82713,7 +82762,7 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
|
|
|
82713
82762
|
size: request.size
|
|
82714
82763
|
};
|
|
82715
82764
|
|
|
82716
|
-
if (!isDomainOrSubdomain(request.url, locationURL)) {
|
|
82765
|
+
if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {
|
|
82717
82766
|
for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {
|
|
82718
82767
|
requestOpts.headers.delete(name);
|
|
82719
82768
|
}
|
|
@@ -82806,6 +82855,13 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
|
|
|
82806
82855
|
response = new Response(body, response_options);
|
|
82807
82856
|
resolve(response);
|
|
82808
82857
|
});
|
|
82858
|
+
raw.on('end', function () {
|
|
82859
|
+
// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.
|
|
82860
|
+
if (!response) {
|
|
82861
|
+
response = new Response(body, response_options);
|
|
82862
|
+
resolve(response);
|
|
82863
|
+
}
|
|
82864
|
+
});
|
|
82809
82865
|
return;
|
|
82810
82866
|
}
|
|
82811
82867
|
|
|
@@ -82825,6 +82881,44 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
|
|
|
82825
82881
|
writeToStream(req, request);
|
|
82826
82882
|
});
|
|
82827
82883
|
}
|
|
82884
|
+
function fixResponseChunkedTransferBadEnding(request, errorCallback) {
|
|
82885
|
+
let socket;
|
|
82886
|
+
|
|
82887
|
+
request.on('socket', function (s) {
|
|
82888
|
+
socket = s;
|
|
82889
|
+
});
|
|
82890
|
+
|
|
82891
|
+
request.on('response', function (response) {
|
|
82892
|
+
const headers = response.headers;
|
|
82893
|
+
|
|
82894
|
+
if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {
|
|
82895
|
+
response.once('close', function (hadError) {
|
|
82896
|
+
// tests for socket presence, as in some situations the
|
|
82897
|
+
// the 'socket' event is not triggered for the request
|
|
82898
|
+
// (happens in deno), avoids `TypeError`
|
|
82899
|
+
// if a data listener is still present we didn't end cleanly
|
|
82900
|
+
const hasDataListener = socket && socket.listenerCount('data') > 0;
|
|
82901
|
+
|
|
82902
|
+
if (hasDataListener && !hadError) {
|
|
82903
|
+
const err = new Error('Premature close');
|
|
82904
|
+
err.code = 'ERR_STREAM_PREMATURE_CLOSE';
|
|
82905
|
+
errorCallback(err);
|
|
82906
|
+
}
|
|
82907
|
+
});
|
|
82908
|
+
}
|
|
82909
|
+
});
|
|
82910
|
+
}
|
|
82911
|
+
|
|
82912
|
+
function destroyStream(stream, err) {
|
|
82913
|
+
if (stream.destroy) {
|
|
82914
|
+
stream.destroy(err);
|
|
82915
|
+
} else {
|
|
82916
|
+
// node < 8
|
|
82917
|
+
stream.emit('error', err);
|
|
82918
|
+
stream.end();
|
|
82919
|
+
}
|
|
82920
|
+
}
|
|
82921
|
+
|
|
82828
82922
|
/**
|
|
82829
82923
|
* Redirect code matching
|
|
82830
82924
|
*
|
|
@@ -82844,7 +82938,8 @@ publicApi.parseURL = urlStateMachineExports.parseURL;
|
|
|
82844
82938
|
exports.Headers = Headers;
|
|
82845
82939
|
exports.Request = Request;
|
|
82846
82940
|
exports.Response = Response;
|
|
82847
|
-
exports.FetchError = FetchError;
|
|
82941
|
+
exports.FetchError = FetchError;
|
|
82942
|
+
exports.AbortError = AbortError;
|
|
82848
82943
|
} (lib$1, lib$1.exports));
|
|
82849
82944
|
|
|
82850
82945
|
var libExports = lib$1.exports;
|
|
@@ -83529,8 +83624,8 @@ var CoveoAnalyticsClient = (function () {
|
|
|
83529
83624
|
});
|
|
83530
83625
|
};
|
|
83531
83626
|
CoveoAnalyticsClient.prototype.sendSearchEvent = function (_a) {
|
|
83532
|
-
var searchQueryUid = _a.searchQueryUid, preparedRequest = __rest(_a, ["searchQueryUid"]);
|
|
83533
83627
|
return __awaiter(this, void 0, void 0, function () {
|
|
83628
|
+
var searchQueryUid = _a.searchQueryUid, preparedRequest = __rest(_a, ["searchQueryUid"]);
|
|
83534
83629
|
return __generator(this, function (_b) {
|
|
83535
83630
|
switch (_b.label) {
|
|
83536
83631
|
case 0: return [4, this.makeSearchEvent(preparedRequest)];
|
|
@@ -83547,8 +83642,8 @@ var CoveoAnalyticsClient = (function () {
|
|
|
83547
83642
|
});
|
|
83548
83643
|
};
|
|
83549
83644
|
CoveoAnalyticsClient.prototype.sendClickEvent = function (_a) {
|
|
83550
|
-
var searchQueryUid = _a.searchQueryUid, preparedRequest = __rest(_a, ["searchQueryUid"]);
|
|
83551
83645
|
return __awaiter(this, void 0, void 0, function () {
|
|
83646
|
+
var searchQueryUid = _a.searchQueryUid, preparedRequest = __rest(_a, ["searchQueryUid"]);
|
|
83552
83647
|
return __generator(this, function (_b) {
|
|
83553
83648
|
switch (_b.label) {
|
|
83554
83649
|
case 0: return [4, this.makeClickEvent(preparedRequest)];
|
|
@@ -83565,8 +83660,8 @@ var CoveoAnalyticsClient = (function () {
|
|
|
83565
83660
|
});
|
|
83566
83661
|
};
|
|
83567
83662
|
CoveoAnalyticsClient.prototype.sendCustomEvent = function (_a) {
|
|
83568
|
-
var lastSearchQueryUid = _a.lastSearchQueryUid, preparedRequest = __rest(_a, ["lastSearchQueryUid"]);
|
|
83569
83663
|
return __awaiter(this, void 0, void 0, function () {
|
|
83664
|
+
var lastSearchQueryUid = _a.lastSearchQueryUid, preparedRequest = __rest(_a, ["lastSearchQueryUid"]);
|
|
83570
83665
|
return __generator(this, function (_b) {
|
|
83571
83666
|
switch (_b.label) {
|
|
83572
83667
|
case 0: return [4, this.makeCustomEvent(preparedRequest)];
|
|
@@ -84347,7 +84442,6 @@ var CustomEventsTypes = (_a = {},
|
|
|
84347
84442
|
_a[exports.SearchPageEvents.triggerExecute] = 'queryPipelineTriggers',
|
|
84348
84443
|
_a[exports.SearchPageEvents.triggerQuery] = 'queryPipelineTriggers',
|
|
84349
84444
|
_a[exports.SearchPageEvents.triggerRedirect] = 'queryPipelineTriggers',
|
|
84350
|
-
_a[exports.SearchPageEvents.queryError] = 'errors',
|
|
84351
84445
|
_a[exports.SearchPageEvents.queryErrorBack] = 'errors',
|
|
84352
84446
|
_a[exports.SearchPageEvents.queryErrorClear] = 'errors',
|
|
84353
84447
|
_a[exports.SearchPageEvents.queryErrorRetry] = 'errors',
|
|
@@ -85486,10 +85580,10 @@ var CoveoSearchPageClient = (function () {
|
|
|
85486
85580
|
var _a;
|
|
85487
85581
|
return { actionCause: actionCause, customData: (_a = preparedEvent.payload) === null || _a === void 0 ? void 0 : _a.customData };
|
|
85488
85582
|
};
|
|
85489
|
-
CoveoSearchPageClient.prototype.makeCustomEvent = function (
|
|
85490
|
-
|
|
85491
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
85583
|
+
CoveoSearchPageClient.prototype.makeCustomEvent = function (event_1, metadata_1) {
|
|
85584
|
+
return __awaiter(this, arguments, void 0, function (event, metadata, eventType) {
|
|
85492
85585
|
var customData, request, _a, preparedEvent;
|
|
85586
|
+
if (eventType === void 0) { eventType = CustomEventsTypes[event]; }
|
|
85493
85587
|
return __generator(this, function (_b) {
|
|
85494
85588
|
switch (_b.label) {
|
|
85495
85589
|
case 0:
|
|
@@ -85513,9 +85607,9 @@ var CoveoSearchPageClient = (function () {
|
|
|
85513
85607
|
});
|
|
85514
85608
|
});
|
|
85515
85609
|
};
|
|
85516
|
-
CoveoSearchPageClient.prototype.logCustomEvent = function (
|
|
85517
|
-
|
|
85518
|
-
|
|
85610
|
+
CoveoSearchPageClient.prototype.logCustomEvent = function (event_1, metadata_1) {
|
|
85611
|
+
return __awaiter(this, arguments, void 0, function (event, metadata, eventType) {
|
|
85612
|
+
if (eventType === void 0) { eventType = CustomEventsTypes[event]; }
|
|
85519
85613
|
return __generator(this, function (_a) {
|
|
85520
85614
|
switch (_a.label) {
|
|
85521
85615
|
case 0: return [4, this.makeCustomEvent(event, metadata, eventType)];
|
|
@@ -85630,15 +85724,15 @@ var CoveoSearchPageClient = (function () {
|
|
|
85630
85724
|
});
|
|
85631
85725
|
};
|
|
85632
85726
|
CoveoSearchPageClient.prototype.getBaseSearchEventRequest = function (event, metadata) {
|
|
85633
|
-
var _a, _b;
|
|
85634
85727
|
return __awaiter(this, void 0, void 0, function () {
|
|
85635
|
-
var
|
|
85728
|
+
var _a;
|
|
85729
|
+
var _b, _c;
|
|
85636
85730
|
return __generator(this, function (_d) {
|
|
85637
85731
|
switch (_d.label) {
|
|
85638
85732
|
case 0:
|
|
85639
|
-
|
|
85640
|
-
return [4, this.getBaseEventRequest(__assign(__assign({}, metadata), (
|
|
85641
|
-
case 1: return [2, __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0,
|
|
85733
|
+
_a = [{}];
|
|
85734
|
+
return [4, this.getBaseEventRequest(__assign(__assign({}, metadata), (_c = (_b = this.provider).getGeneratedAnswerMetadata) === null || _c === void 0 ? void 0 : _c.call(_b)))];
|
|
85735
|
+
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 }])];
|
|
85642
85736
|
}
|
|
85643
85737
|
});
|
|
85644
85738
|
});
|
|
@@ -85902,7 +85996,8 @@ exports.CaseAssistActions = void 0;
|
|
|
85902
85996
|
CaseAssistActions["enterInterface"] = "ticket_create_start";
|
|
85903
85997
|
CaseAssistActions["fieldUpdate"] = "ticket_field_update";
|
|
85904
85998
|
CaseAssistActions["fieldSuggestionClick"] = "ticket_classification_click";
|
|
85905
|
-
CaseAssistActions["
|
|
85999
|
+
CaseAssistActions["documentSuggestionClick"] = "documentSuggestionClick";
|
|
86000
|
+
CaseAssistActions["documentSuggestionQuickview"] = "documentSuggestionQuickview";
|
|
85906
86001
|
CaseAssistActions["suggestionRate"] = "suggestion_rate";
|
|
85907
86002
|
CaseAssistActions["nextCaseStep"] = "ticket_next_stage";
|
|
85908
86003
|
CaseAssistActions["caseCancelled"] = "ticket_cancel";
|
|
@@ -85950,9 +86045,16 @@ var CaseAssistClient = (function () {
|
|
|
85950
86045
|
return this.sendClickEvent();
|
|
85951
86046
|
};
|
|
85952
86047
|
CaseAssistClient.prototype.logSelectDocumentSuggestion = function (meta) {
|
|
85953
|
-
this.
|
|
85954
|
-
|
|
85955
|
-
|
|
86048
|
+
return this.logClickEvent(exports.CaseAssistActions.documentSuggestionClick, meta.suggestion.suggestion, {
|
|
86049
|
+
contentIDKey: 'permanentId',
|
|
86050
|
+
contentIDValue: meta.suggestion.permanentId,
|
|
86051
|
+
});
|
|
86052
|
+
};
|
|
86053
|
+
CaseAssistClient.prototype.logQuickviewDocumentSuggestion = function (meta) {
|
|
86054
|
+
return this.logClickEvent(exports.CaseAssistActions.documentSuggestionQuickview, meta.suggestion.suggestion, {
|
|
86055
|
+
contentIDKey: 'permanentId',
|
|
86056
|
+
contentIDValue: meta.suggestion.permanentId,
|
|
86057
|
+
});
|
|
85956
86058
|
};
|
|
85957
86059
|
CaseAssistClient.prototype.logRateDocumentSuggestion = function (meta) {
|
|
85958
86060
|
this.svc.setAction(exports.CaseAssistActions.suggestionRate, __assign({ rate: meta.rating }, meta.suggestion));
|
|
@@ -85999,6 +86101,53 @@ var CaseAssistClient = (function () {
|
|
|
85999
86101
|
}
|
|
86000
86102
|
: null);
|
|
86001
86103
|
};
|
|
86104
|
+
CaseAssistClient.prototype.getBaseEventRequest = function (metadata) {
|
|
86105
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
86106
|
+
var customData, _a;
|
|
86107
|
+
var _b;
|
|
86108
|
+
var _c, _d;
|
|
86109
|
+
return __generator(this, function (_e) {
|
|
86110
|
+
switch (_e.label) {
|
|
86111
|
+
case 0:
|
|
86112
|
+
customData = __assign({}, metadata);
|
|
86113
|
+
_a = [__assign({}, this.getOrigins())];
|
|
86114
|
+
_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() };
|
|
86115
|
+
return [4, this.getClientId()];
|
|
86116
|
+
case 1: return [2, __assign.apply(void 0, _a.concat([(_b.clientId = _e.sent(), _b)]))];
|
|
86117
|
+
}
|
|
86118
|
+
});
|
|
86119
|
+
});
|
|
86120
|
+
};
|
|
86121
|
+
CaseAssistClient.prototype.getClientId = function () {
|
|
86122
|
+
return this.coveoAnalyticsClient instanceof CoveoAnalyticsClient
|
|
86123
|
+
? this.coveoAnalyticsClient.getCurrentVisitorId()
|
|
86124
|
+
: undefined;
|
|
86125
|
+
};
|
|
86126
|
+
CaseAssistClient.prototype.getOrigins = function () {
|
|
86127
|
+
var _a, _b, _c, _d, _e;
|
|
86128
|
+
return {
|
|
86129
|
+
originContext: (_b = (_a = this.provider) === null || _a === void 0 ? void 0 : _a.getOriginContext) === null || _b === void 0 ? void 0 : _b.call(_a),
|
|
86130
|
+
originLevel1: (_c = this.provider) === null || _c === void 0 ? void 0 : _c.getOriginLevel1(),
|
|
86131
|
+
originLevel2: (_d = this.provider) === null || _d === void 0 ? void 0 : _d.getOriginLevel2(),
|
|
86132
|
+
originLevel3: (_e = this.provider) === null || _e === void 0 ? void 0 : _e.getOriginLevel3(),
|
|
86133
|
+
};
|
|
86134
|
+
};
|
|
86135
|
+
CaseAssistClient.prototype.logClickEvent = function (event, info, identifier, metadata) {
|
|
86136
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
86137
|
+
var payload, _a;
|
|
86138
|
+
var _b, _c;
|
|
86139
|
+
return __generator(this, function (_d) {
|
|
86140
|
+
switch (_d.label) {
|
|
86141
|
+
case 0:
|
|
86142
|
+
_a = [__assign({}, info)];
|
|
86143
|
+
return [4, this.getBaseEventRequest(__assign(__assign({}, identifier), metadata))];
|
|
86144
|
+
case 1:
|
|
86145
|
+
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 }]);
|
|
86146
|
+
return [2, this.coveoAnalyticsClient.sendClickEvent(payload)];
|
|
86147
|
+
}
|
|
86148
|
+
});
|
|
86149
|
+
});
|
|
86150
|
+
};
|
|
86002
86151
|
return CaseAssistClient;
|
|
86003
86152
|
}());
|
|
86004
86153
|
|
|
@@ -86042,6 +86191,20 @@ var CoveoInsightClient = (function () {
|
|
|
86042
86191
|
}
|
|
86043
86192
|
return this.logSearchEvent(exports.SearchPageEvents.interfaceLoad);
|
|
86044
86193
|
};
|
|
86194
|
+
CoveoInsightClient.prototype.logRecentQueryClick = function (metadata) {
|
|
86195
|
+
if (metadata) {
|
|
86196
|
+
var metadataToSend = generateMetadataToSend(metadata);
|
|
86197
|
+
return this.logSearchEvent(exports.SearchPageEvents.recentQueryClick, metadataToSend);
|
|
86198
|
+
}
|
|
86199
|
+
return this.logSearchEvent(exports.SearchPageEvents.recentQueryClick);
|
|
86200
|
+
};
|
|
86201
|
+
CoveoInsightClient.prototype.logClearRecentQueries = function (metadata) {
|
|
86202
|
+
if (metadata) {
|
|
86203
|
+
var metadataToSend = generateMetadataToSend(metadata);
|
|
86204
|
+
return this.logCustomEvent(exports.SearchPageEvents.clearRecentQueries, metadataToSend);
|
|
86205
|
+
}
|
|
86206
|
+
return this.logCustomEvent(exports.SearchPageEvents.clearRecentQueries);
|
|
86207
|
+
};
|
|
86045
86208
|
CoveoInsightClient.prototype.logInterfaceChange = function (metadata) {
|
|
86046
86209
|
var metadataToSend = generateMetadataToSend(metadata);
|
|
86047
86210
|
return this.logSearchEvent(exports.SearchPageEvents.interfaceChange, metadataToSend);
|
|
@@ -86373,15 +86536,15 @@ var CoveoInsightClient = (function () {
|
|
|
86373
86536
|
});
|
|
86374
86537
|
};
|
|
86375
86538
|
CoveoInsightClient.prototype.getBaseSearchEventRequest = function (event, metadata) {
|
|
86376
|
-
var _a, _b;
|
|
86377
86539
|
return __awaiter(this, void 0, void 0, function () {
|
|
86378
|
-
var
|
|
86540
|
+
var _a;
|
|
86541
|
+
var _b, _c;
|
|
86379
86542
|
return __generator(this, function (_d) {
|
|
86380
86543
|
switch (_d.label) {
|
|
86381
86544
|
case 0:
|
|
86382
|
-
|
|
86383
|
-
return [4, this.getBaseEventRequest(__assign(__assign({}, metadata), (
|
|
86384
|
-
case 1: return [2, __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0,
|
|
86545
|
+
_a = [{}];
|
|
86546
|
+
return [4, this.getBaseEventRequest(__assign(__assign({}, metadata), (_c = (_b = this.provider).getGeneratedAnswerMetadata) === null || _c === void 0 ? void 0 : _c.call(_b)))];
|
|
86547
|
+
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 }])];
|
|
86385
86548
|
}
|
|
86386
86549
|
});
|
|
86387
86550
|
});
|