@searchspring/snap-controller 0.43.0 → 0.44.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.
- package/dist/cjs/Abstract/AbstractController.d.ts +3 -1
- package/dist/cjs/Abstract/AbstractController.d.ts.map +1 -1
- package/dist/cjs/Abstract/AbstractController.js +12 -4
- package/dist/cjs/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/cjs/Autocomplete/AutocompleteController.js +67 -44
- package/dist/cjs/Finder/FinderController.d.ts.map +1 -1
- package/dist/cjs/Finder/FinderController.js +36 -21
- package/dist/cjs/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/cjs/Recommendation/RecommendationController.js +36 -21
- package/dist/cjs/Search/SearchController.d.ts +1 -0
- package/dist/cjs/Search/SearchController.d.ts.map +1 -1
- package/dist/cjs/Search/SearchController.js +81 -39
- package/dist/cjs/types.d.ts +3 -3
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/Abstract/AbstractController.d.ts +3 -1
- package/dist/esm/Abstract/AbstractController.d.ts.map +1 -1
- package/dist/esm/Abstract/AbstractController.js +12 -4
- package/dist/esm/Autocomplete/AutocompleteController.d.ts.map +1 -1
- package/dist/esm/Autocomplete/AutocompleteController.js +67 -44
- package/dist/esm/Finder/FinderController.d.ts.map +1 -1
- package/dist/esm/Finder/FinderController.js +36 -21
- package/dist/esm/Recommendation/RecommendationController.d.ts.map +1 -1
- package/dist/esm/Recommendation/RecommendationController.js +36 -21
- package/dist/esm/Search/SearchController.d.ts +1 -0
- package/dist/esm/Search/SearchController.d.ts.map +1 -1
- package/dist/esm/Search/SearchController.js +79 -38
- package/dist/esm/types.d.ts +3 -3
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +11 -10
|
@@ -74,8 +74,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
74
74
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
75
75
|
};
|
|
76
76
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
77
|
-
exports.getStorableRequestParams = exports.SearchController = void 0;
|
|
77
|
+
exports.generateHrefSelector = exports.getStorableRequestParams = exports.SearchController = void 0;
|
|
78
78
|
var deepmerge_1 = __importDefault(require("deepmerge"));
|
|
79
|
+
var css_escape_1 = __importDefault(require("css.escape"));
|
|
79
80
|
var AbstractController_1 = require("../Abstract/AbstractController");
|
|
80
81
|
var snap_store_mobx_1 = require("@searchspring/snap-store-mobx");
|
|
81
82
|
var getParams_1 = require("../utils/getParams");
|
|
@@ -111,17 +112,26 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
111
112
|
click: function (e, result) {
|
|
112
113
|
var _a, _b;
|
|
113
114
|
var target = e.target;
|
|
114
|
-
var
|
|
115
|
+
var resultHref = (_a = result.mappings.core) === null || _a === void 0 ? void 0 : _a.url;
|
|
116
|
+
var elemHref = target === null || target === void 0 ? void 0 : target.getAttribute('href');
|
|
117
|
+
// the href that should be used for restoration - if the elemHref contains the resultHref - use resultHref
|
|
118
|
+
var storedHref = (elemHref === null || elemHref === void 0 ? void 0 : elemHref.indexOf(resultHref)) != -1 ? resultHref : elemHref || resultHref;
|
|
115
119
|
var scrollMap = {};
|
|
116
120
|
// generate the selector using element class and parent classes
|
|
117
|
-
var selector = generateHrefSelector(target,
|
|
121
|
+
var selector = generateHrefSelector(target, storedHref);
|
|
118
122
|
var domRect = selector ? (_b = document === null || document === void 0 ? void 0 : document.querySelector(selector)) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect() : undefined;
|
|
119
123
|
// store element position data to scrollMap
|
|
120
|
-
if (selector
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
124
|
+
if (selector || storedHref || domRect) {
|
|
125
|
+
try {
|
|
126
|
+
var stringyParams = JSON.parse(_this.storage.get('lastStringyParams'));
|
|
127
|
+
var storableRequestParams = getStorableRequestParams(stringyParams);
|
|
128
|
+
var storableStringyParams = JSON.stringify(storableRequestParams);
|
|
129
|
+
scrollMap[storableStringyParams] = { domRect: domRect, href: storedHref, selector: selector };
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
// failed to get lastStringParams
|
|
133
|
+
_this.log.warn('Failed to save scollMap!', err);
|
|
134
|
+
}
|
|
125
135
|
}
|
|
126
136
|
// store position data or empty object
|
|
127
137
|
_this.storage.set('scrollMap', scrollMap);
|
|
@@ -130,7 +140,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
130
140
|
var event = _this.tracker.track.product.click({
|
|
131
141
|
intellisuggestData: intellisuggestData,
|
|
132
142
|
intellisuggestSignature: intellisuggestSignature,
|
|
133
|
-
href:
|
|
143
|
+
href: elemHref || resultHref,
|
|
134
144
|
});
|
|
135
145
|
_this.eventManager.fire('track.product.click', { controller: _this, event: e, result: result, trackEvent: event });
|
|
136
146
|
return event;
|
|
@@ -337,29 +347,44 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
337
347
|
case 26:
|
|
338
348
|
err_4 = _x.sent();
|
|
339
349
|
if (err_4) {
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
350
|
+
if (err_4.err && err_4.fetchDetails) {
|
|
351
|
+
switch (err_4.fetchDetails.status) {
|
|
352
|
+
case 429: {
|
|
353
|
+
this.store.error = {
|
|
354
|
+
code: 429,
|
|
355
|
+
type: snap_store_mobx_1.ErrorType.WARNING,
|
|
356
|
+
message: 'Too many requests try again later',
|
|
357
|
+
};
|
|
358
|
+
break;
|
|
359
|
+
}
|
|
360
|
+
case 500: {
|
|
361
|
+
this.store.error = {
|
|
362
|
+
code: 500,
|
|
363
|
+
type: snap_store_mobx_1.ErrorType.ERROR,
|
|
364
|
+
message: 'Invalid Search Request or Service Unavailable',
|
|
365
|
+
};
|
|
366
|
+
break;
|
|
367
|
+
}
|
|
368
|
+
default: {
|
|
369
|
+
this.store.error = {
|
|
370
|
+
type: snap_store_mobx_1.ErrorType.ERROR,
|
|
371
|
+
message: err_4.err.message,
|
|
372
|
+
};
|
|
373
|
+
break;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
this.log.error(this.store.error);
|
|
377
|
+
this.handleError(err_4.err, err_4.fetchDetails);
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
this.store.error = {
|
|
381
|
+
type: snap_store_mobx_1.ErrorType.ERROR,
|
|
382
|
+
message: "Something went wrong... - ".concat(err_4),
|
|
383
|
+
};
|
|
384
|
+
this.log.error(err_4);
|
|
385
|
+
this.handleError(err_4);
|
|
360
386
|
}
|
|
361
387
|
this.store.loading = false;
|
|
362
|
-
this.handleError(err_4);
|
|
363
388
|
}
|
|
364
389
|
return [3 /*break*/, 27];
|
|
365
390
|
case 27: return [2 /*return*/];
|
|
@@ -459,7 +484,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
459
484
|
case 0:
|
|
460
485
|
scrollToPosition = function () {
|
|
461
486
|
return new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
|
|
462
|
-
var offset, maxCheckTime, checkTime, maxScrolls, maxCheckCount, scrollBackCount, scrolledElem, checkAndScroll;
|
|
487
|
+
var offset, maxCheckTime, checkTime, maxScrolls, maxCheckCount, scrollBackCount, checkCount, scrolledElem, checkAndScroll;
|
|
463
488
|
var _a;
|
|
464
489
|
return __generator(this, function (_b) {
|
|
465
490
|
switch (_b.label) {
|
|
@@ -468,15 +493,21 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
468
493
|
maxCheckTime = 500;
|
|
469
494
|
checkTime = 50;
|
|
470
495
|
maxScrolls = Math.ceil(maxCheckTime / checkTime);
|
|
471
|
-
maxCheckCount = maxScrolls +
|
|
496
|
+
maxCheckCount = maxScrolls + 2;
|
|
472
497
|
scrollBackCount = 0;
|
|
498
|
+
checkCount = 0;
|
|
473
499
|
scrolledElem = undefined;
|
|
474
500
|
checkAndScroll = function () {
|
|
475
501
|
var elem = document.querySelector(element === null || element === void 0 ? void 0 : element.selector);
|
|
476
|
-
if (elem)
|
|
502
|
+
if (elem) {
|
|
477
503
|
scrollBackCount++;
|
|
478
|
-
|
|
504
|
+
}
|
|
505
|
+
else {
|
|
506
|
+
checkCount++;
|
|
507
|
+
}
|
|
508
|
+
if (elem) {
|
|
479
509
|
var y = elem.getBoundingClientRect().y;
|
|
510
|
+
// if the offset is off, we need to scroll into position (can be caused by lazy loaded images)
|
|
480
511
|
if (y > offset + 1 || y < offset - 1) {
|
|
481
512
|
elem.scrollIntoView();
|
|
482
513
|
// after scrolling into view, use top value with offset (for when element at bottom)
|
|
@@ -490,7 +521,7 @@ var SearchController = /** @class */ (function (_super) {
|
|
|
490
521
|
};
|
|
491
522
|
_b.label = 1;
|
|
492
523
|
case 1:
|
|
493
|
-
if (!(checkAndScroll() || scrollBackCount <= maxScrolls)) return [3 /*break*/, 3];
|
|
524
|
+
if (!(checkAndScroll() || (scrollBackCount <= maxScrolls && checkCount <= maxCheckCount))) return [3 /*break*/, 3];
|
|
494
525
|
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, checkTime); })];
|
|
495
526
|
case 2:
|
|
496
527
|
_b.sent();
|
|
@@ -598,17 +629,28 @@ function generateHrefSelector(element, href, levels) {
|
|
|
598
629
|
if (levels === void 0) { levels = 7; }
|
|
599
630
|
var level = 0;
|
|
600
631
|
var elem = element;
|
|
601
|
-
while (elem && level
|
|
632
|
+
while (elem && level <= levels) {
|
|
602
633
|
// check within
|
|
603
|
-
var
|
|
604
|
-
if (
|
|
605
|
-
|
|
634
|
+
var innerHrefElem = elem.querySelector("[href*=\"".concat(href, "\"]"));
|
|
635
|
+
if (innerHrefElem) {
|
|
636
|
+
// innerHrefElem was found! now get selectors up to elem that contained it
|
|
637
|
+
var selector = '';
|
|
638
|
+
var parentElem = innerHrefElem;
|
|
639
|
+
while (parentElem && parentElem != elem.parentElement) {
|
|
640
|
+
var classNames = parentElem.classList.value.trim().split(' ');
|
|
641
|
+
// document.querySelector does not appreciate special characters - must escape them
|
|
642
|
+
var escapedClassSelector = classNames.reduce(function (classes, classname) { return (classname.trim() ? "".concat(classes, ".").concat((0, css_escape_1.default)(classname.trim())) : classes); }, '');
|
|
643
|
+
selector = "".concat(parentElem.tagName).concat(escapedClassSelector).concat(selector ? " ".concat(selector) : '');
|
|
644
|
+
parentElem = parentElem.parentElement;
|
|
645
|
+
}
|
|
646
|
+
return "".concat(selector, "[href*=\"").concat(href, "\"]");
|
|
606
647
|
}
|
|
607
648
|
elem = elem.parentElement;
|
|
608
649
|
level++;
|
|
609
650
|
}
|
|
610
651
|
return;
|
|
611
652
|
}
|
|
653
|
+
exports.generateHrefSelector = generateHrefSelector;
|
|
612
654
|
function backFillSize(pages, pageSize) {
|
|
613
655
|
var totalResults = pages * pageSize;
|
|
614
656
|
var numPages = Math.ceil(totalResults / API_LIMIT);
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -28,9 +28,9 @@ export declare type RestorePositionObj = {
|
|
|
28
28
|
element?: ElementPositionObj;
|
|
29
29
|
};
|
|
30
30
|
export declare type ElementPositionObj = {
|
|
31
|
-
href
|
|
32
|
-
selector
|
|
33
|
-
domRect
|
|
31
|
+
href?: string;
|
|
32
|
+
selector?: string;
|
|
33
|
+
domRect?: DOMRect;
|
|
34
34
|
};
|
|
35
35
|
export declare enum ControllerTypes {
|
|
36
36
|
search = "search",
|
package/dist/cjs/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACxI,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAEjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EACX,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,oBAAY,cAAc,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAChG,oBAAY,cAAc,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAExE,oBAAY,eAAe,GAAG;IAC7B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,oBAAY,cAAc,GAAG;IAC5B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC3B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC;IACb,QAAQ,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAChC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,9 @@ export declare abstract class AbstractController {
|
|
|
25
25
|
};
|
|
26
26
|
protected _initialized: boolean;
|
|
27
27
|
get initialized(): boolean;
|
|
28
|
-
handleError: (err: unknown
|
|
28
|
+
handleError: (err: unknown, details?: {
|
|
29
|
+
[any: string]: unknown;
|
|
30
|
+
} | undefined) => void;
|
|
29
31
|
constructor(config: ControllerConfig, { client, store, urlManager, eventManager, profiler, logger, tracker }: ControllerServices, context?: ContextVariables);
|
|
30
32
|
createTargeter(target: Target, onTarget: OnTarget, document?: Document): DomTargeter | undefined;
|
|
31
33
|
addTargeter(target: DomTargeter): DomTargeter | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEpH,8BAAsB,kBAAkB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,SAAc;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAE1B,SAAS,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;KAC3B,CAAM;IAEP,SAAS,CAAC,YAAY,UAAS;IAE/B,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEM,WAAW,QAAS,OAAO,
|
|
1
|
+
{"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../../src/Abstract/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEpH,8BAAsB,kBAAkB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,SAAc;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAE1B,SAAS,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;KAC3B,CAAM;IAEP,SAAS,CAAC,YAAY,UAAS;IAE/B,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEM,WAAW,QAAS,OAAO;;sBAAyC,IAAI,CAoD7E;gBAGD,MAAM,EAAE,gBAAgB,EACxB,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,GAAE,gBAAqB;IA2DxB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS;IAIhG,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS;IASnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD3B,QAAQ,IAAI,IAAI;aAMP,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAIpD,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAoC1C"}
|
|
@@ -4,7 +4,7 @@ export class AbstractController {
|
|
|
4
4
|
this.type = 'abstract';
|
|
5
5
|
this.targeters = {};
|
|
6
6
|
this._initialized = false;
|
|
7
|
-
this.handleError = (err) => {
|
|
7
|
+
this.handleError = (err, details) => {
|
|
8
8
|
let event;
|
|
9
9
|
if (err instanceof ErrorEvent) {
|
|
10
10
|
event = err;
|
|
@@ -12,11 +12,12 @@ export class AbstractController {
|
|
|
12
12
|
else if (err instanceof Error) {
|
|
13
13
|
event = new ErrorEvent('error', {
|
|
14
14
|
error: err,
|
|
15
|
+
message: err.message,
|
|
15
16
|
});
|
|
16
17
|
}
|
|
17
|
-
else if (typeof err === 'string') {
|
|
18
|
+
else if (typeof err === 'string' || typeof err == 'number') {
|
|
18
19
|
event = new ErrorEvent('error', {
|
|
19
|
-
error: new Error(err),
|
|
20
|
+
error: new Error(err.toString()),
|
|
20
21
|
});
|
|
21
22
|
}
|
|
22
23
|
else if (typeof err === 'object' && Object.keys(err).length) {
|
|
@@ -30,12 +31,19 @@ export class AbstractController {
|
|
|
30
31
|
if (event) {
|
|
31
32
|
const { filename, colno, lineno, error: { stack }, message, timeStamp, } = event;
|
|
32
33
|
const beaconPayload = {
|
|
33
|
-
filename
|
|
34
|
+
filename,
|
|
34
35
|
stack,
|
|
35
36
|
message,
|
|
36
37
|
colno,
|
|
37
38
|
lineno,
|
|
38
39
|
errortimestamp: timeStamp,
|
|
40
|
+
details,
|
|
41
|
+
context: {
|
|
42
|
+
controller: {
|
|
43
|
+
id: this.id,
|
|
44
|
+
type: this.type,
|
|
45
|
+
},
|
|
46
|
+
},
|
|
39
47
|
};
|
|
40
48
|
this.tracker.track.error(beaconPayload);
|
|
41
49
|
this.eventManager.fire('error', { controller: this, error: err });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,4BAA4B,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEnJ,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AA0B/B,aAAK,wBAAwB,GAAG;IAC/B,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;KAC5C,CAAC;CACF,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,kBAAkB;IACtD,IAAI,kBAAgC;IACnC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,YAAY,CAAC;gBAG5B,MAAM,EAAE,4BAA4B,EACpC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA6D3B,KAAK,EAAE,wBAAwB,CAO7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CA0CrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,GAAG,SAAS,CAAC;wBAkDpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;mCAgDhD,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI;uBAqBtD,aAAa,KAAG,IAAI;;;;
|
|
1
|
+
{"version":3,"file":"AutocompleteController.d.ts","sourceRoot":"","sources":["../../../src/Autocomplete/AutocompleteController.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,4BAA4B,EAAkD,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEnJ,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAG1E,eAAO,MAAM,WAAW,MAAM,CAAC;AA0B/B,aAAK,wBAAwB,GAAG;IAC/B,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;KAC5C,CAAC;CACF,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,kBAAkB;IACtD,IAAI,kBAAgC;IACnC,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,YAAY,CAAC;gBAG5B,MAAM,EAAE,4BAA4B,EACpC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA6D3B,KAAK,EAAE,wBAAwB,CAO7B;IAEF,IAAI,MAAM,IAAI,wBAAwB,CA0CrC;IAEK,UAAU,CAAC,YAAY,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhE,KAAK,IAAI,IAAI;IASb,QAAQ;;0BAEc,aAAa,KAAG,QAAQ,OAAO,GAAG,SAAS,CAAC;wBAkDpD,aAAa,KAAG,IAAI;uBAMrB,UAAU,KAAG,IAAI;4BAQN,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,QAAQ,IAAI,CAAC;mCAgDhD,MAAM,WAAW,CAAC,gBAAgB,CAAC,KAAG,IAAI;uBAqBtD,aAAa,KAAG,IAAI;;;;uBAwDpB,UAAU,KAAG,IAAI;;MAS5B;IAEF,MAAM,IAAI,IAAI;IAgBR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6E3B,cAAc,QAAa,QAAQ,IAAI,CAAC,CAwBtC;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAmI9B;CACF"}
|
|
@@ -56,9 +56,9 @@ export class AutocompleteController extends AbstractController {
|
|
|
56
56
|
await timeout(INPUT_DELAY);
|
|
57
57
|
}
|
|
58
58
|
if (this.config.settings.integratedSpellCorrection) {
|
|
59
|
-
//
|
|
60
|
-
if (
|
|
61
|
-
actionUrl = actionUrl?.set(PARAM_FALLBACK_QUERY, this.store.
|
|
59
|
+
//set fallbackQuery to the correctedQuery
|
|
60
|
+
if (this.store.search.correctedQuery) {
|
|
61
|
+
actionUrl = actionUrl?.set(PARAM_FALLBACK_QUERY, this.store.search.correctedQuery.string);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
else if (this.store.search.originalQuery) {
|
|
@@ -114,9 +114,9 @@ export class AutocompleteController extends AbstractController {
|
|
|
114
114
|
await timeout(INPUT_DELAY);
|
|
115
115
|
}
|
|
116
116
|
if (this.config.settings.integratedSpellCorrection) {
|
|
117
|
-
//
|
|
118
|
-
if (
|
|
119
|
-
addHiddenFormInput(form, PARAM_FALLBACK_QUERY, this.store.
|
|
117
|
+
//set fallbackQuery to the correctedQuery
|
|
118
|
+
if (this.store.search.correctedQuery) {
|
|
119
|
+
addHiddenFormInput(form, PARAM_FALLBACK_QUERY, this.store.search.correctedQuery.string);
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
else if (this.store.search.originalQuery) {
|
|
@@ -173,8 +173,8 @@ export class AutocompleteController extends AbstractController {
|
|
|
173
173
|
this.setFocused(e.target);
|
|
174
174
|
}
|
|
175
175
|
const value = e.target.value;
|
|
176
|
-
// prevent search when value is unchanged
|
|
177
|
-
if (this.store.state.input == value && this.store.loaded) {
|
|
176
|
+
// prevent search when value is unchanged or empty
|
|
177
|
+
if (((!this.store.state.input && !value) || this.store.state.input == value) && this.store.loaded) {
|
|
178
178
|
return;
|
|
179
179
|
}
|
|
180
180
|
this.store.state.input = value;
|
|
@@ -184,25 +184,24 @@ export class AutocompleteController extends AbstractController {
|
|
|
184
184
|
input.value = value;
|
|
185
185
|
});
|
|
186
186
|
}
|
|
187
|
+
// TODO cancel any current requests?
|
|
187
188
|
clearTimeout(this.handlers.input.timeoutDelay);
|
|
188
|
-
|
|
189
|
+
const trendingResultsEnabled = this.store.trending?.length && this.config.settings?.trending?.showResults;
|
|
190
|
+
const historyResultsEnabled = this.store.history?.length && this.config.settings?.history?.showResults;
|
|
191
|
+
this.urlManager.reset().go();
|
|
189
192
|
if (!value) {
|
|
190
|
-
//
|
|
191
|
-
// reset the store (in case input was just cleared)
|
|
193
|
+
// there is no input value - reset state of store
|
|
192
194
|
this.store.reset();
|
|
193
|
-
|
|
195
|
+
// show results for trending or history (if configured) - trending has priority
|
|
196
|
+
if (trendingResultsEnabled) {
|
|
194
197
|
this.store.trending[0].preview();
|
|
195
198
|
}
|
|
196
|
-
else if (
|
|
199
|
+
else if (historyResultsEnabled) {
|
|
197
200
|
this.store.history[0].preview();
|
|
198
201
|
}
|
|
199
|
-
else {
|
|
200
|
-
// reset urlManager when a preview is not available to do so
|
|
201
|
-
this.urlManager.reset().go();
|
|
202
|
-
}
|
|
203
202
|
}
|
|
204
203
|
else {
|
|
205
|
-
|
|
204
|
+
// new query in the input - trigger a new search via UrlManager
|
|
206
205
|
this.handlers.input.timeoutDelay = setTimeout(() => {
|
|
207
206
|
this.store.state.locks.terms.unlock();
|
|
208
207
|
this.store.state.locks.facets.unlock();
|
|
@@ -247,7 +246,12 @@ export class AutocompleteController extends AbstractController {
|
|
|
247
246
|
this.store.updateTrendingTerms(terms);
|
|
248
247
|
};
|
|
249
248
|
this.search = async () => {
|
|
249
|
+
// if urlManager has no query, there will be no need to get params and no query
|
|
250
|
+
if (!this.urlManager.state.query) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
250
253
|
const params = this.params;
|
|
254
|
+
// if params have no query do not search
|
|
251
255
|
if (!params?.search?.query?.string) {
|
|
252
256
|
return;
|
|
253
257
|
}
|
|
@@ -324,29 +328,44 @@ export class AutocompleteController extends AbstractController {
|
|
|
324
328
|
}
|
|
325
329
|
catch (err) {
|
|
326
330
|
if (err) {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
331
|
+
if (err.err && err.fetchDetails) {
|
|
332
|
+
switch (err.fetchDetails.status) {
|
|
333
|
+
case 429: {
|
|
334
|
+
this.store.error = {
|
|
335
|
+
code: 429,
|
|
336
|
+
type: ErrorType.WARNING,
|
|
337
|
+
message: 'Too many requests try again later',
|
|
338
|
+
};
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
case 500: {
|
|
342
|
+
this.store.error = {
|
|
343
|
+
code: 500,
|
|
344
|
+
type: ErrorType.ERROR,
|
|
345
|
+
message: 'Invalid Search Request or Service Unavailable',
|
|
346
|
+
};
|
|
347
|
+
break;
|
|
348
|
+
}
|
|
349
|
+
default: {
|
|
350
|
+
this.store.error = {
|
|
351
|
+
type: ErrorType.ERROR,
|
|
352
|
+
message: err.err.message,
|
|
353
|
+
};
|
|
354
|
+
break;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
this.log.error(this.store.error);
|
|
358
|
+
this.handleError(err.err, err.fetchDetails);
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
this.store.error = {
|
|
362
|
+
type: ErrorType.ERROR,
|
|
363
|
+
message: `Something went wrong... - ${err}`,
|
|
364
|
+
};
|
|
365
|
+
this.log.error(err);
|
|
366
|
+
this.handleError(err);
|
|
347
367
|
}
|
|
348
368
|
this.store.loading = false;
|
|
349
|
-
this.handleError(err);
|
|
350
369
|
}
|
|
351
370
|
}
|
|
352
371
|
};
|
|
@@ -508,6 +527,7 @@ export class AutocompleteController extends AbstractController {
|
|
|
508
527
|
else if (form) {
|
|
509
528
|
form.addEventListener('submit', this.handlers.input.formSubmit);
|
|
510
529
|
formActionUrl = form.action || '';
|
|
530
|
+
// serializeForm will include additional form element in our urlManager as globals
|
|
511
531
|
if (this.config.settings?.serializeForm) {
|
|
512
532
|
bindFormParameters(form, this.handlers.input.formElementChange, function (elem) {
|
|
513
533
|
return elem != input;
|
|
@@ -528,10 +548,12 @@ export class AutocompleteController extends AbstractController {
|
|
|
528
548
|
};
|
|
529
549
|
}));
|
|
530
550
|
}
|
|
531
|
-
if
|
|
551
|
+
// if the input is currently focused, trigger setFocues which will eventually trigger keyup - but not if loading
|
|
552
|
+
if (document.activeElement === input && !this.store.loading) {
|
|
532
553
|
this.setFocused(input);
|
|
533
554
|
}
|
|
534
555
|
});
|
|
556
|
+
// get trending terms - this is at the bottom because urlManager changes need to be in place before creating the store
|
|
535
557
|
if (this.config.settings?.trending?.limit && this.config.settings?.trending?.limit > 0 && !this.store.trending?.length) {
|
|
536
558
|
this.searchTrending();
|
|
537
559
|
}
|
|
@@ -554,7 +576,7 @@ async function timeout(time) {
|
|
|
554
576
|
});
|
|
555
577
|
}
|
|
556
578
|
// for grabbing other parameters from the form and using them in UrlManager
|
|
557
|
-
const
|
|
579
|
+
const INPUT_TYPE_BLOCKLIST = ['file', 'reset', 'submit', 'button', 'image', 'password'];
|
|
558
580
|
function getFormParameters(form, filterFn) {
|
|
559
581
|
const parameters = {};
|
|
560
582
|
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
@@ -563,7 +585,7 @@ function getFormParameters(form, filterFn) {
|
|
|
563
585
|
if (typeof filterFn == 'function' && !filterFn(elem)) {
|
|
564
586
|
continue;
|
|
565
587
|
}
|
|
566
|
-
if (elem.name && !
|
|
588
|
+
if (elem.name && !INPUT_TYPE_BLOCKLIST.includes(elem.type)) {
|
|
567
589
|
if ((elem.type != 'checkbox' && elem.type != 'radio') || elem.checked) {
|
|
568
590
|
parameters[elem.name] = elem.value;
|
|
569
591
|
}
|
|
@@ -572,6 +594,7 @@ function getFormParameters(form, filterFn) {
|
|
|
572
594
|
}
|
|
573
595
|
return parameters;
|
|
574
596
|
}
|
|
597
|
+
// this picks up changes to the form
|
|
575
598
|
function bindFormParameters(form, fn, filterFn) {
|
|
576
599
|
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
577
600
|
for (let i = form.elements.length - 1; i >= 0; i--) {
|
|
@@ -579,7 +602,7 @@ function bindFormParameters(form, fn, filterFn) {
|
|
|
579
602
|
if (typeof filterFn == 'function' && !filterFn(elem)) {
|
|
580
603
|
continue;
|
|
581
604
|
}
|
|
582
|
-
if (elem.name && !
|
|
605
|
+
if (elem.name && !INPUT_TYPE_BLOCKLIST.includes(elem.type)) {
|
|
583
606
|
elem.addEventListener('change', fn);
|
|
584
607
|
}
|
|
585
608
|
}
|
|
@@ -589,7 +612,7 @@ function unbindFormParameters(form, fn) {
|
|
|
589
612
|
if (typeof form == 'object' && form.nodeName == 'FORM') {
|
|
590
613
|
for (let i = form.elements.length - 1; i >= 0; i--) {
|
|
591
614
|
const elem = form.elements[i];
|
|
592
|
-
if (elem.name && !
|
|
615
|
+
if (elem.name && !INPUT_TYPE_BLOCKLIST.includes(elem.type)) {
|
|
593
616
|
elem.removeEventListener('change', fn);
|
|
594
617
|
}
|
|
595
618
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAmC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiB9H,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;gBAGtC,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA2C3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAe5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"FinderController.d.ts","sourceRoot":"","sources":["../../../src/Finder/FinderController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAmC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAiB9H,qBAAa,gBAAiB,SAAQ,kBAAkB;IAChD,IAAI,kBAA0B;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;gBAGtC,MAAM,EAAE,sBAAsB,EAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA2C3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+BhC;IAED,IAAI,QAAa,QAAQ,IAAI,CAAC,CAe5B;IAEF,KAAK,QAAO,IAAI,CAId;IAEF,MAAM,QAAa,QAAQ,IAAI,CAAC,CAkI9B;CACF"}
|
|
@@ -125,29 +125,44 @@ export class FinderController extends AbstractController {
|
|
|
125
125
|
}
|
|
126
126
|
catch (err) {
|
|
127
127
|
if (err) {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
128
|
+
if (err.err && err.fetchDetails) {
|
|
129
|
+
switch (err.fetchDetails.status) {
|
|
130
|
+
case 429: {
|
|
131
|
+
this.store.error = {
|
|
132
|
+
code: 429,
|
|
133
|
+
type: ErrorType.WARNING,
|
|
134
|
+
message: 'Too many requests try again later',
|
|
135
|
+
};
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
case 500: {
|
|
139
|
+
this.store.error = {
|
|
140
|
+
code: 500,
|
|
141
|
+
type: ErrorType.ERROR,
|
|
142
|
+
message: 'Invalid Search Request or Service Unavailable',
|
|
143
|
+
};
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
default: {
|
|
147
|
+
this.store.error = {
|
|
148
|
+
type: ErrorType.ERROR,
|
|
149
|
+
message: err.err.message,
|
|
150
|
+
};
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
this.log.error(this.store.error);
|
|
155
|
+
this.handleError(err.err, err.fetchDetails);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
this.store.error = {
|
|
159
|
+
type: ErrorType.ERROR,
|
|
160
|
+
message: `Something went wrong... - ${err}`,
|
|
161
|
+
};
|
|
162
|
+
this.log.error(err);
|
|
163
|
+
this.handleError(err);
|
|
148
164
|
}
|
|
149
165
|
this.store.loading = false;
|
|
150
|
-
this.handleError(err);
|
|
151
166
|
}
|
|
152
167
|
}
|
|
153
168
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,aAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QAC/D,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QACjD,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KACrD,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,aAAK,6BAA6B,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,UAAU,CAAC,EAAE,WAAW,CAAC;QACzB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,UAAU,CAAC,EAAE,WAAW,CAAC;YAAC,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,CAAC,CAAC;KAC7E,CAKC;gBAGD,MAAM,EAAE,8BAA8B,EACtC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA8B3B,KAAK,EAAE,0BAA0B,CAiM5B;IAEL,IAAI,MAAM,IAAI,6BAA6B,CA0B1C;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"RecommendationController.d.ts","sourceRoot":"","sources":["../../../src/Recommendation/RecommendationController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,KAAK,EAAE,8BAA8B,EAAkC,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErI,aAAK,0BAA0B,GAAG;IACjC,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QAC/D,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;QACjD,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,SAAS,CAAC;KACrD,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,WAAW,GAAG,SAAS,CAAC;IAClD,UAAU,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,WAAW,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,aAAK,6BAA6B,GAAG;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAUF,qBAAa,wBAAyB,SAAQ,kBAAkB;IACxD,IAAI,kBAAkC;IACrC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,8BAA8B,CAAC;IAE/C,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,UAAU,CAAC,EAAE,WAAW,CAAC;QACzB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,UAAU,CAAC,EAAE,WAAW,CAAC;YAAC,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,CAAC,CAAC;KAC7E,CAKC;gBAGD,MAAM,EAAE,8BAA8B,EACtC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAC1F,OAAO,CAAC,EAAE,gBAAgB;IA8B3B,KAAK,EAAE,0BAA0B,CAiM5B;IAEL,IAAI,MAAM,IAAI,6BAA6B,CA0B1C;IAED,MAAM,QAAa,QAAQ,IAAI,CAAC,CAuH9B;CACF"}
|