@snabcentr/client-core 3.5.0 → 3.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- import { HttpClient } from '@angular/common/http';
1
+ import { HttpClient, HttpErrorResponse } from '@angular/common/http';
2
2
  import { inject, Injectable } from '@angular/core';
3
- import { map, of, tap } from 'rxjs';
3
+ import { catchError, distinctUntilChanged, first, map, of, switchMap, tap, throwError } from 'rxjs';
4
4
  import { ScCachedItem } from '../../catalog/classes/sc-cached-item';
5
5
  import { loadingPlaceholder } from '../../order/tokens/sc-order-loader.token';
6
6
  import { IS_BROWSER } from '../../providers/ssr.providers';
@@ -51,7 +51,7 @@ export class ScCartService {
51
51
  this.userMetrikaService = inject(ScUserMetrikaService);
52
52
  if (this.isBrowser) {
53
53
  this.cartCachedItem$ = new ScCachedItem(Infinity, this.getCartData$(), loadingPlaceholder);
54
- this.user$.subscribe(() => {
54
+ this.user$.pipe(distinctUntilChanged((previous, current) => previous.id === current.id)).subscribe(() => {
55
55
  this.cartCachedItem$.update();
56
56
  });
57
57
  }
@@ -63,7 +63,16 @@ export class ScCartService {
63
63
  * Создаёт запрос получения содержимого корзины и обновляет корзину, возвращая {@link Observable} содержимого корзины.
64
64
  */
65
65
  getCartData$() {
66
- return this.http.get(`${this.urls.apiUrl}/cart`).pipe(map((cartDTO) => new ScCart(cartDTO)));
66
+ return this.user$.pipe(first(), switchMap((user) => this.http.get(`${this.urls.apiUrl}/cart`).pipe(map((cartDTO) => new ScCart(cartDTO)),
67
+ // TODO: Пересмотреть механизмы перехвата HTTP-ошибок 401/403/0 централизованно (с использованием interceptors).
68
+ catchError((error) => {
69
+ if (user.isGuest && error instanceof HttpErrorResponse && [0, 401, 403].includes(error.status)) {
70
+ // Для гостя в неавторизованных/сетевых кейсах отдаём пустую корзину,
71
+ // чтобы не пробрасывать ошибку во все подписки UI.
72
+ return of(new ScCart());
73
+ }
74
+ return throwError(() => error);
75
+ }))));
67
76
  }
68
77
  /**
69
78
  * Возвращает полную информацию о корзине (контекст загрузчика).
@@ -191,4 +200,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
191
200
  providedIn: 'root',
192
201
  }]
193
202
  }], ctorParameters: () => [] });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jYXJ0L3NlcnZpY2VzL3NjLWNhcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQU9wRSxPQUFPLEVBQUUsa0JBQWtCLEVBQWtCLE1BQU0sMENBQTBDLENBQUM7QUFDOUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRzFDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUF5Q3RCOztPQUVHO0lBQ0g7UUF0Q0E7O1dBRUc7UUFDYyxjQUFTLEdBQVksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXpE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QUFFO1NBQzNELENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksa0JBQWtCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sbUJBQW1CLEVBQUU7WUFDekMsWUFBWSxFQUFFLE1BQU07U0FDdkIsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxtQkFBbUIsQ0FBQyxJQUFvQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN6RSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDO2dCQUN6QyxNQUFNLEVBQUUsc0JBQXNCLENBQUMsYUFBYTthQUMvQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQzsrR0E5TVEsYUFBYTttSEFBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIG9mLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NDYWNoZWRJdGVtIH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9jbGFzc2VzL3NjLWNhY2hlZC1pdGVtJztcbmltcG9ydCB7IFNjSVVybHMgfSBmcm9tICcuLi8uLi9jb25maWcvc2MtaS11cmxzJztcbmltcG9ydCB7IFNjVXBsb2FkZWRGaWxlIH0gZnJvbSAnLi4vLi4vY29udGFjdHMvZHRvL3NjLXVwbG9hZGVkLWZpbGUnO1xuaW1wb3J0IHsgU2NPcmRlciB9IGZyb20gJy4uLy4uL29yZGVyL2NsYXNzZXMvc2Mtb3JkZXInO1xuaW1wb3J0IHsgU2NPcmRlckl0ZW0gfSBmcm9tICcuLi8uLi9vcmRlci9jbGFzc2VzL3NjLW9yZGVyLWl0ZW0nO1xuaW1wb3J0IHsgU2NJTmV3T3JkZXJJdGVtQmFzZSB9IGZyb20gJy4uLy4uL29yZGVyL2ludGVybmFsL3NjLWktbmV3LW9yZGVyLWl0ZW0tYmFzZSc7XG5pbXBvcnQgeyBTY0lPcmRlckVkaXRvckxvYWRlciB9IGZyb20gJy4uLy4uL29yZGVyL2ludGVybmFsL3NjLWktb3JkZXItbG9hZGVyJztcbmltcG9ydCB7IGxvYWRpbmdQbGFjZWhvbGRlciwgU2NPcmRlckxvYWRpbmcgfSBmcm9tICcuLi8uLi9vcmRlci90b2tlbnMvc2Mtb3JkZXItbG9hZGVyLnRva2VuJztcbmltcG9ydCB7IElTX0JST1dTRVIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc3NyLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBTQ19VUkxTIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLXVybHMnO1xuaW1wb3J0IHsgU2NVSVNlcnZpY2UgfSBmcm9tICcuLi8uLi91aS9zZXJ2aWNlcy9zYy11aS5zZXJ2aWNlJztcbmltcG9ydCB7IFNjVXNlciB9IGZyb20gJy4uLy4uL3VzZXIvZHRvL3NjLXVzZXInO1xuaW1wb3J0IHsgU0NfVVNFUl9JTkZPIH0gZnJvbSAnLi4vLi4vdXNlci90b2tlbnMvc2MtdXNlci1wcm92aWRlcnMnO1xuaW1wb3J0IHsgU2NVc2VyTWV0cmlrYUdvYWxzRW51bSB9IGZyb20gJy4uLy4uL3VzZXItbWV0cmlrYS9lbnVtcy9zYy11c2VyLW1ldHJpa2EtZ29hbHMtZW51bSc7XG5pbXBvcnQgeyBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXItbWV0cmlrYS9zZXJ2aWNlcy9zYy11c2VyLW1ldHJpa2Euc2VydmljZSc7XG5pbXBvcnQgeyBTY1dhcmVob3VzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi93YXJlaG91c2UnO1xuaW1wb3J0IHsgU2NDYXJ0IH0gZnJvbSAnLi4vY2xhc3Nlcy9zYy1jYXJ0JztcbmltcG9ydCB7IFNjU3VtIH0gZnJvbSAnLi4vY2xhc3Nlcy9zYy1zdW0nO1xuaW1wb3J0IHsgU2NJQ2FydCB9IGZyb20gJy4uL2ludGVybmFsL3NjLWktY2FydCc7XG5cbi8qKlxuICog0JTQsNC90L3Ri9C1INC+INGB0LXRgNCy0LjRgdC1INC60L7RgNC30LjQvdGLLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY0NhcnRTZXJ2aWNlIGltcGxlbWVudHMgU2NJT3JkZXJFZGl0b3JMb2FkZXI8U2NPcmRlckl0ZW0sIFNjQ2FydD4ge1xuICAgIC8qKlxuICAgICAqIHtAbGluayBSZXBsYXlTdWJqZWN0fSDQtNC70Y8g0YHQvtC00LXRgNC20LjQvNC+0LPQviDQutC+0YDQt9C40L3Riy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNhcnRDYWNoZWRJdGVtJDogU2NDYWNoZWRJdGVtPFNjQ2FydCwgU2NPcmRlckxvYWRpbmc+O1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDRgdC60YDQuNC/0YIg0LLRi9C/0L7Qu9C90Y/QtdGC0YHRjyDQsiDQsdGA0LDRg9C30LXRgNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNCcm93c2VyOiBib29sZWFuID0gaW5qZWN0KElTX0JST1dTRVIpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC00LDQvdC90YvRhSDQviDRgtC10LrRg9GJ0LXQvCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxTY1VzZXI+ID0gaW5qZWN0KFNDX1VTRVJfSU5GTyk7XG5cbiAgICAvKipcbiAgICAgKiBIVFRQLdC60LvQuNC10L3Rgi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC/0YDQuNC70L7QttC10L3QuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyA9IGluamVjdChTQ19VUkxTKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBIFVJLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdWlTZXJ2aWNlOiBTY1VJU2VydmljZSA9IGluamVjdChTY1VJU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgdC+INGB0LrQu9Cw0LTQsNC80LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB3YXJlaG91c2VTZXJ2aWNlOiBTY1dhcmVob3VzZVNlcnZpY2UgPSBpbmplY3QoU2NXYXJlaG91c2VTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZSA9IGluamVjdChTY1VzZXJNZXRyaWthU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjQ2FydFNlcnZpY2V9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICB0aGlzLmNhcnRDYWNoZWRJdGVtJCA9IG5ldyBTY0NhY2hlZEl0ZW0oSW5maW5pdHksIHRoaXMuZ2V0Q2FydERhdGEkKCksIGxvYWRpbmdQbGFjZWhvbGRlcik7XG4gICAgICAgICAgICB0aGlzLnVzZXIkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0Q2FjaGVkSXRlbSQudXBkYXRlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FydENhY2hlZEl0ZW0kID0gbmV3IFNjQ2FjaGVkSXRlbShJbmZpbml0eSwgb2YobmV3IFNjQ2FydCgpKSwgbG9hZGluZ1BsYWNlaG9sZGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDQv9C+0LvRg9GH0LXQvdC40Y8g0YHQvtC00LXRgNC20LjQvNC+0LPQviDQutC+0YDQt9C40L3RiyDQuCDQvtCx0L3QvtCy0LvRj9C10YIg0LrQvtGA0LfQuNC90YMsINCy0L7Qt9Cy0YDQsNGJ0LDRjyB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQvtC00LXRgNC20LjQvNC+0LPQviDQutC+0YDQt9C40L3Riy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldENhcnREYXRhJCgpOiBPYnNlcnZhYmxlPFNjQ2FydD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxTY0lDYXJ0PihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXJ0YCkucGlwZShtYXAoKGNhcnREVE8pID0+IG5ldyBTY0NhcnQoY2FydERUTykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9C+0LvQvdGD0Y4g0LjQvdGE0L7RgNC80LDRhtC40Y4g0L4g0LrQvtGA0LfQuNC90LUgKNC60L7QvdGC0LXQutGB0YIg0LfQsNCz0YDRg9C30YfQuNC60LApLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQkKCk6IE9ic2VydmFibGU8U2NDYXJ0IHwgU2NPcmRlckxvYWRpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FydENhY2hlZEl0ZW0kLml0ZW0kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtGA0LfQuNC90YsuXG4gICAgICovXG4gICAgcHVibGljIGdldEl0ZW1zJCgpOiBPYnNlcnZhYmxlPFNjT3JkZXJJdGVtW10gfCBTY09yZGVyTG9hZGluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQkKCkucGlwZShtYXAoKGNhcnQpID0+IChjYXJ0ID09PSBsb2FkaW5nUGxhY2Vob2xkZXIgPyBsb2FkaW5nUGxhY2Vob2xkZXIgOiAoY2FydCBhcyBTY0NhcnQpLml0ZW1zKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCU0L7QsdCw0LLQu9GP0LXRgiDQv9GA0L7QtNGD0LrRgiDQsiDQutC+0YDQt9C40L3Rgy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRhINCU0LDQvdC90YvQtSDQtNC+0LHQsNCy0LvRj9C10LzQvtCz0L4g0L/RgNC+0LTRg9C60YLQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkUHJvZHVjdCQoZGF0YTogU2NJTmV3T3JkZXJJdGVtQmFzZSk6IE9ic2VydmFibGU8U2NDYXJ0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8U2NJQ2FydD4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2FydGAsIGRhdGEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGNhcnREVE8pID0+IG5ldyBTY0NhcnQoY2FydERUTykpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5wcm9kdWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLmNhcnRJdGVtQWRkZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgcHJvZHVjdF9pZDogZGF0YS5wcm9kdWN0SWQgfSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoKGNhcnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRDYWNoZWRJdGVtJC5zZXRWYWx1ZShjYXJ0KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JjQt9C80LXQvdGP0LXRgiDQv9GA0L7QtNGD0LrRgiDQsiDQutC+0YDQt9C40L3QtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQv9C+0LfQuNGG0LjQuC5cbiAgICAgKiBAcGFyYW0gcGF0Y2gg0KfQsNGB0YLQuNGH0L3Ri9C1INC00LDQvdC90YvQtSDQtNC70Y8g0L7QsdC90L7QstC70LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZVByb2R1Y3QkKGlkOiBzdHJpbmcsIHBhdGNoOiBPbWl0PFNjSU5ld09yZGVySXRlbUJhc2UsICdwcm9kdWN0SWQnPik6IE9ic2VydmFibGU8U2NDYXJ0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8U2NJQ2FydD4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2FydC8ke2lkfWAsIHBhdGNoKS5waXBlKFxuICAgICAgICAgICAgbWFwKChjYXJ0RFRPKSA9PiBuZXcgU2NDYXJ0KGNhcnREVE8pKSxcbiAgICAgICAgICAgIHRhcCgoY2FydCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FydENhY2hlZEl0ZW0kLnNldFZhbHVlKGNhcnQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQv9GA0L7QtNGD0LrRgiDQuNC3INC60L7RgNC30LjQvdGLLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW0g0KPQtNCw0LvRj9C10LzQsNGPINC/0L7Qt9C40YbQuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGVQcm9kdWN0JChpdGVtOiBTY09yZGVySXRlbSk6IE9ic2VydmFibGU8U2NDYXJ0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFNjSUNhcnQ+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhcnQvJHtpdGVtLmlkfWApLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGNhcnREVE8pID0+IG5ldyBTY0NhcnQoY2FydERUTykpLFxuICAgICAgICAgICAgdGFwKChjYXJ0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0Q2FjaGVkSXRlbSQuc2V0VmFsdWUoY2FydCk7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0uY2FydEl0ZW1EZWxldGVkLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgcHJvZHVjdF9pZDogaXRlbS5wcm9kdWN0LmlkIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDQvtGH0LjRgdGC0LrQuCDQutC+0YDQt9C40L3Riy5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xlYXJDYXJ0JCgpOiBPYnNlcnZhYmxlPHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTx1bmRlZmluZWQ+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhcnRgKS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5jYXJ0Q2xlYXJlZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVpU2VydmljZS5yZW1vdmVBbGxOZXdPcmRlcnNNZXRhZGF0YSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FydENhY2hlZEl0ZW0kLnNldFZhbHVlKG5ldyBTY0NhcnQoKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHQvdC+0LLQu9GP0LXRgiDQutC+0YDQt9C40L3Rgy5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlQ2FydCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJ0Q2FjaGVkSXRlbSQudXBkYXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INC/0L7Qt9C40YbQuNC5INCyINC60L7RgNC30LjQvdC1INGBINGC0L7QstCw0YDQsNC80LgsINC60L7RgtC+0YDRi9C1INCx0YvQu9C4INGD0LTQsNC70LXQvdGLINC40Lcg0L/RgNCw0LnRgS3Qu9C40YLQsCDQuCDQsdC+0LvRjNGI0LUg0L3QtSDQv9GA0L7QtNCw0Y7RgtGB0Y8uXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROdWxsQ2FydEl0ZW1zJCgpOiBPYnNlcnZhYmxlPFNjT3JkZXJJdGVtW10gfCBTY09yZGVyTG9hZGluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQkKCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoY2FydCkgPT4gKGNhcnQgPT09IGxvYWRpbmdQbGFjZWhvbGRlciA/IGxvYWRpbmdQbGFjZWhvbGRlciA6IChjYXJ0IGFzIFNjQ2FydCkuaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnByb2R1Y3QuaXNOdWxsIHx8IGl0ZW0ucHJvZHVjdC5pc0hpZGRlbikpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC+0LHRitC10LrRgiB7QGxpbmsgU2NDYXJ0fSDQutC+0YDQt9C40L3Riywg0YHQvtC30LTQsNC90L3Ri9C5INC40Lcg0L7QsdGK0LXQutGC0LAg0LfQsNC60LDQt9CwLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9yZGVyINCU0LDQvdC90YvQtSDQviDQt9Cw0LrQsNC30LUuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgICBwdWJsaWMgZ2V0Q2FydEJ5T3JkZXIob3JkZXI6IFNjT3JkZXIpOiBTY0NhcnQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IG9yZGVyLnByb2R1Y3RzLFxuICAgICAgICAgICAgcmVzdWx0U3VtOiB7IHJ1Yjogb3JkZXIuc3VtIH0sXG4gICAgICAgICAgICBkaXJlY3Rpb25zU3VtOiB7IFtvcmRlci5zYWxlc0RpcmVjdGlvbi5pZF06IG5ldyBTY1N1bShvcmRlci5zdW0pIH0sXG4gICAgICAgIH0gYXMgU2NDYXJ0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0YDQuNC80LXRgCBDU1Yg0YTQsNC50LvQsCDQtNC70Y8g0LTQvtCx0LDQstC70LXQvdC40Y8g0L/RgNC+0LTRg9C60YLQvtCyINCyINC60L7RgNC30LjQvdGDLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXJ0Q3N2RXhhbXBsZSQoKTogT2JzZXJ2YWJsZTxCbG9iPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQoYCR7dGhpcy51cmxzLmFwaVVybH0vY2FydC9jc3YvZXhhbXBsZWAsIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShtYXAoKGJsb2IpID0+IG5ldyBCbG9iKFtibG9iXSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JTQvtCx0LDQstC70Y/QtdGCINGC0L7QstCw0YDRiyDQsiDQutC+0YDQt9C40L3RgyDQuNC3INGE0LDQudC70LAgQ1NWLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGUg0JfQsNCz0YDRg9C20LDQtdC80YvQuSDRhNCw0LnQuyDQsiDRhNC+0YDQvNCw0YLQtSBiYXNlNjQuXG4gICAgICovXG4gICAgcHVibGljIGFkZFByb2R1Y3RzRnJvbUNzdiQoZmlsZTogU2NVcGxvYWRlZEZpbGUpOiBPYnNlcnZhYmxlPFNjQ2FydD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8U2NJQ2FydD4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2FydC9jc3ZgLCB7IGZpbGUgfSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoY2FydERUTykgPT4gbmV3IFNjQ2FydChjYXJ0RFRPKSksXG4gICAgICAgICAgICB0YXAoKGNhcnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRDYWNoZWRJdGVtJC5zZXRWYWx1ZShjYXJ0KTtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5jYXJ0Q3N2VXBsb2FkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jYXJ0L3NlcnZpY2VzL3NjLWNhcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFPcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFrQixNQUFNLDBDQUEwQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUcxQzs7R0FFRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBeUN0Qjs7T0FF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O0lBRUQ7Ozs7T0FJRztJQUNJLG1CQUFtQixDQUFDLElBQW9CO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3pFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDckMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDVCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxhQUFhO2FBQy9DLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOytHQS9OUSxhQUFhO21IQUFiLGFBQWEsY0FGVixNQUFNOzs0RkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlyc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjQ2FjaGVkSXRlbSB9IGZyb20gJy4uLy4uL2NhdGFsb2cvY2xhc3Nlcy9zYy1jYWNoZWQtaXRlbSc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NjLWktdXJscyc7XG5pbXBvcnQgeyBTY1VwbG9hZGVkRmlsZSB9IGZyb20gJy4uLy4uL2NvbnRhY3RzL2R0by9zYy11cGxvYWRlZC1maWxlJztcbmltcG9ydCB7IFNjT3JkZXIgfSBmcm9tICcuLi8uLi9vcmRlci9jbGFzc2VzL3NjLW9yZGVyJztcbmltcG9ydCB7IFNjT3JkZXJJdGVtIH0gZnJvbSAnLi4vLi4vb3JkZXIvY2xhc3Nlcy9zYy1vcmRlci1pdGVtJztcbmltcG9ydCB7IFNjSU5ld09yZGVySXRlbUJhc2UgfSBmcm9tICcuLi8uLi9vcmRlci9pbnRlcm5hbC9zYy1pLW5ldy1vcmRlci1pdGVtLWJhc2UnO1xuaW1wb3J0IHsgU2NJT3JkZXJFZGl0b3JMb2FkZXIgfSBmcm9tICcuLi8uLi9vcmRlci9pbnRlcm5hbC9zYy1pLW9yZGVyLWxvYWRlcic7XG5pbXBvcnQgeyBsb2FkaW5nUGxhY2Vob2xkZXIsIFNjT3JkZXJMb2FkaW5nIH0gZnJvbSAnLi4vLi4vb3JkZXIvdG9rZW5zL3NjLW9yZGVyLWxvYWRlci50b2tlbic7XG5pbXBvcnQgeyBJU19CUk9XU0VSIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3Nzci5wcm92aWRlcnMnO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy11cmxzJztcbmltcG9ydCB7IFNjVUlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdWkvc2VydmljZXMvc2MtdWkuc2VydmljZSc7XG5pbXBvcnQgeyBTY1VzZXIgfSBmcm9tICcuLi8uLi91c2VyL2R0by9zYy11c2VyJztcbmltcG9ydCB7IFNDX1VTRVJfSU5GTyB9IGZyb20gJy4uLy4uL3VzZXIvdG9rZW5zL3NjLXVzZXItcHJvdmlkZXJzJztcbmltcG9ydCB7IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0gfSBmcm9tICcuLi8uLi91c2VyLW1ldHJpa2EvZW51bXMvc2MtdXNlci1tZXRyaWthLWdvYWxzLWVudW0nO1xuaW1wb3J0IHsgU2NVc2VyTWV0cmlrYVNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLW1ldHJpa2Evc2VydmljZXMvc2MtdXNlci1tZXRyaWthLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NXYXJlaG91c2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd2FyZWhvdXNlJztcbmltcG9ydCB7IFNjQ2FydCB9IGZyb20gJy4uL2NsYXNzZXMvc2MtY2FydCc7XG5pbXBvcnQgeyBTY1N1bSB9IGZyb20gJy4uL2NsYXNzZXMvc2Mtc3VtJztcbmltcG9ydCB7IFNjSUNhcnQgfSBmcm9tICcuLi9pbnRlcm5hbC9zYy1pLWNhcnQnO1xuXG4vKipcbiAqINCU0LDQvdC90YvQtSDQviDRgdC10YDQstC40YHQtSDQutC+0YDQt9C40L3Riy5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NDYXJ0U2VydmljZSBpbXBsZW1lbnRzIFNjSU9yZGVyRWRpdG9yTG9hZGVyPFNjT3JkZXJJdGVtLCBTY0NhcnQ+IHtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgUmVwbGF5U3ViamVjdH0g0LTQu9GPINGB0L7QtNC10YDQttC40LzQvtCz0L4g0LrQvtGA0LfQuNC90YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjYXJ0Q2FjaGVkSXRlbSQ6IFNjQ2FjaGVkSXRlbTxTY0NhcnQsIFNjT3JkZXJMb2FkaW5nPjtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0YHQutGA0LjQv9GCINCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0LIg0LHRgNCw0YPQt9C10YDQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzQnJvd3NlcjogYm9vbGVhbiA9IGluamVjdChJU19CUk9XU0VSKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQtNCw0L3QvdGL0YUg0L4g0YLQtdC60YPRidC10Lwg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlciQ6IE9ic2VydmFibGU8U2NVc2VyPiA9IGluamVjdChTQ19VU0VSX0lORk8pO1xuXG4gICAgLyoqXG4gICAgICogSFRUUC3QutC70LjQtdC90YIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQv9GA0LjQu9C+0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMgPSBpbmplY3QoU0NfVVJMUyk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSBVSS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVpU2VydmljZTogU2NVSVNlcnZpY2UgPSBpbmplY3QoU2NVSVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YHQviDRgdC60LvQsNC00LDQvNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgd2FyZWhvdXNlU2VydmljZTogU2NXYXJlaG91c2VTZXJ2aWNlID0gaW5qZWN0KFNjV2FyZWhvdXNlU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGB0LHQvtGA0LAg0LzQtdGC0YDQuNC6INC+INC00LXQudGB0YLQstC40Y/RhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJNZXRyaWthU2VydmljZTogU2NVc2VyTWV0cmlrYVNlcnZpY2UgPSBpbmplY3QoU2NVc2VyTWV0cmlrYVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0NhcnRTZXJ2aWNlfS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgdGhpcy5jYXJ0Q2FjaGVkSXRlbSQgPSBuZXcgU2NDYWNoZWRJdGVtKEluZmluaXR5LCB0aGlzLmdldENhcnREYXRhJCgpLCBsb2FkaW5nUGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgdGhpcy51c2VyJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2aW91cywgY3VycmVudCkgPT4gcHJldmlvdXMuaWQgPT09IGN1cnJlbnQuaWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FydENhY2hlZEl0ZW0kLnVwZGF0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhcnRDYWNoZWRJdGVtJCA9IG5ldyBTY0NhY2hlZEl0ZW0oSW5maW5pdHksIG9mKG5ldyBTY0NhcnQoKSksIGxvYWRpbmdQbGFjZWhvbGRlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L7QtNC10YDQttC40LzQvtCz0L4g0LrQvtGA0LfQuNC90Ysg0Lgg0L7QsdC90L7QstC70Y/QtdGCINC60L7RgNC30LjQvdGDLCDQstC+0LfQstGA0LDRidCw0Y8ge0BsaW5rIE9ic2VydmFibGV9INGB0L7QtNC10YDQttC40LzQvtCz0L4g0LrQvtGA0LfQuNC90YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDYXJ0RGF0YSQoKTogT2JzZXJ2YWJsZTxTY0NhcnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlciQucGlwZShcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHVzZXIpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5odHRwLmdldDxTY0lDYXJ0PihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXJ0YCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKChjYXJ0RFRPKSA9PiBuZXcgU2NDYXJ0KGNhcnREVE8pKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzog0J/QtdGA0LXRgdC80L7RgtGA0LXRgtGMINC80LXRhdCw0L3QuNC30LzRiyDQv9C10YDQtdGF0LLQsNGC0LAgSFRUUC3QvtGI0LjQsdC+0LogNDAxLzQwMy8wINGG0LXQvdGC0YDQsNC70LjQt9C+0LLQsNC90L3QviAo0YEg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQvCBpbnRlcmNlcHRvcnMpLlxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXIuaXNHdWVzdCAmJiBlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlICYmIFswLCA0MDEsIDQwM10uaW5jbHVkZXMoZXJyb3Iuc3RhdHVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vINCU0LvRjyDQs9C+0YHRgtGPINCyINC90LXQsNCy0YLQvtGA0LjQt9C+0LLQsNC90L3Ri9GFL9GB0LXRgtC10LLRi9GFINC60LXQudGB0LDRhSDQvtGC0LTQsNGR0Lwg0L/Rg9GB0YLRg9GOINC60L7RgNC30LjQvdGDLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vINGH0YLQvtCx0Ysg0L3QtSDQv9GA0L7QsdGA0LDRgdGL0LLQsNGC0Ywg0L7RiNC40LHQutGDINCy0L4g0LLRgdC1INC/0L7QtNC/0LjRgdC60LggVUkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKG5ldyBTY0NhcnQoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/QvtC70L3Rg9GOINC40L3RhNC+0YDQvNCw0YbQuNGOINC+INC60L7RgNC30LjQvdC1ICjQutC+0L3RgtC10LrRgdGCINC30LDQs9GA0YPQt9GH0LjQutCwKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0JCgpOiBPYnNlcnZhYmxlPFNjQ2FydCB8IFNjT3JkZXJMb2FkaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcnRDYWNoZWRJdGVtJC5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC/0LjRgdC+0Log0Y3Qu9C10LzQtdC90YLQvtCyINC60L7RgNC30LjQvdGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJdGVtcyQoKTogT2JzZXJ2YWJsZTxTY09yZGVySXRlbVtdIHwgU2NPcmRlckxvYWRpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0JCgpLnBpcGUobWFwKChjYXJ0KSA9PiAoY2FydCA9PT0gbG9hZGluZ1BsYWNlaG9sZGVyID8gbG9hZGluZ1BsYWNlaG9sZGVyIDogKGNhcnQgYXMgU2NDYXJ0KS5pdGVtcykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQlNC+0LHQsNCy0LvRj9C10YIg0L/RgNC+0LTRg9C60YIg0LIg0LrQvtGA0LfQuNC90YMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0YSDQlNCw0L3QvdGL0LUg0LTQvtCx0LDQstC70Y/QtdC80L7Qs9C+INC/0YDQvtC00YPQutGC0LAuXG4gICAgICovXG4gICAgcHVibGljIGFkZFByb2R1Y3QkKGRhdGE6IFNjSU5ld09yZGVySXRlbUJhc2UpOiBPYnNlcnZhYmxlPFNjQ2FydD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPFNjSUNhcnQ+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhcnRgLCBkYXRhKS5waXBlKFxuICAgICAgICAgICAgbWFwKChjYXJ0RFRPKSA9PiBuZXcgU2NDYXJ0KGNhcnREVE8pKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEucHJvZHVjdElkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5jYXJ0SXRlbUFkZGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IHByb2R1Y3RfaWQ6IGRhdGEucHJvZHVjdElkIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKChjYXJ0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0Q2FjaGVkSXRlbSQuc2V0VmFsdWUoY2FydCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCY0LfQvNC10L3Rj9C10YIg0L/RgNC+0LTRg9C60YIg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L/QvtC30LjRhtC40LguXG4gICAgICogQHBhcmFtIHBhdGNoINCn0LDRgdGC0LjRh9C90YvQtSDQtNCw0L3QvdGL0LUg0LTQu9GPINC+0LHQvdC+0LLQu9C10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVQcm9kdWN0JChpZDogc3RyaW5nLCBwYXRjaDogT21pdDxTY0lOZXdPcmRlckl0ZW1CYXNlLCAncHJvZHVjdElkJz4pOiBPYnNlcnZhYmxlPFNjQ2FydD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPFNjSUNhcnQ+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhcnQvJHtpZH1gLCBwYXRjaCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoY2FydERUTykgPT4gbmV3IFNjQ2FydChjYXJ0RFRPKSksXG4gICAgICAgICAgICB0YXAoKGNhcnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRDYWNoZWRJdGVtJC5zZXRWYWx1ZShjYXJ0KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0L/RgNC+0LTRg9C60YIg0LjQtyDQutC+0YDQt9C40L3Riy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtINCj0LTQsNC70Y/QtdC80LDRjyDQv9C+0LfQuNGG0LjRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlUHJvZHVjdCQoaXRlbTogU2NPcmRlckl0ZW0pOiBPYnNlcnZhYmxlPFNjQ2FydD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxTY0lDYXJ0PihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXJ0LyR7aXRlbS5pZH1gKS5waXBlKFxuICAgICAgICAgICAgbWFwKChjYXJ0RFRPKSA9PiBuZXcgU2NDYXJ0KGNhcnREVE8pKSxcbiAgICAgICAgICAgIHRhcCgoY2FydCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FydENhY2hlZEl0ZW0kLnNldFZhbHVlKGNhcnQpO1xuICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLmNhcnRJdGVtRGVsZXRlZCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IHByb2R1Y3RfaWQ6IGl0ZW0ucHJvZHVjdC5pZCB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L7Rh9C40YHRgtC60Lgg0LrQvtGA0LfQuNC90YsuXG4gICAgICovXG4gICAgcHVibGljIGNsZWFyQ2FydCQoKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8dW5kZWZpbmVkPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXJ0YCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0uY2FydENsZWFyZWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51aVNlcnZpY2UucmVtb3ZlQWxsTmV3T3JkZXJzTWV0YWRhdGEoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRDYWNoZWRJdGVtJC5zZXRWYWx1ZShuZXcgU2NDYXJ0KCkpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0L3QvtCy0LvRj9C10YIg0LrQvtGA0LfQuNC90YMuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZUNhcnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FydENhY2hlZEl0ZW0kLnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDQv9C+0LfQuNGG0LjQuSDQsiDQutC+0YDQt9C40L3QtSDRgSDRgtC+0LLQsNGA0LDQvNC4LCDQutC+0YLQvtGA0YvQtSDQsdGL0LvQuCDRg9C00LDQu9C10L3RiyDQuNC3INC/0YDQsNC50YEt0LvQuNGC0LAg0Lgg0LHQvtC70YzRiNC1INC90LUg0L/RgNC+0LTQsNGO0YLRgdGPLlxuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0TnVsbENhcnRJdGVtcyQoKTogT2JzZXJ2YWJsZTxTY09yZGVySXRlbVtdIHwgU2NPcmRlckxvYWRpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0JCgpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGNhcnQpID0+IChjYXJ0ID09PSBsb2FkaW5nUGxhY2Vob2xkZXIgPyBsb2FkaW5nUGxhY2Vob2xkZXIgOiAoY2FydCBhcyBTY0NhcnQpLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5wcm9kdWN0LmlzTnVsbCB8fCBpdGVtLnByb2R1Y3QuaXNIaWRkZW4pKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvtCx0YrQtdC60YIge0BsaW5rIFNjQ2FydH0g0LrQvtGA0LfQuNC90YssINGB0L7Qt9C00LDQvdC90YvQuSDQuNC3INC+0LHRitC10LrRgtCwINC30LDQutCw0LfQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcmRlciDQlNCw0L3QvdGL0LUg0L4g0LfQsNC60LDQt9C1LlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gICAgcHVibGljIGdldENhcnRCeU9yZGVyKG9yZGVyOiBTY09yZGVyKTogU2NDYXJ0IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBvcmRlci5wcm9kdWN0cyxcbiAgICAgICAgICAgIHJlc3VsdFN1bTogeyBydWI6IG9yZGVyLnN1bSB9LFxuICAgICAgICAgICAgZGlyZWN0aW9uc1N1bTogeyBbb3JkZXIuc2FsZXNEaXJlY3Rpb24uaWRdOiBuZXcgU2NTdW0ob3JkZXIuc3VtKSB9LFxuICAgICAgICB9IGFzIFNjQ2FydDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GA0LjQvNC10YAgQ1NWINGE0LDQudC70LAg0LTQu9GPINC00L7QsdCw0LLQu9C10L3QuNGPINC/0YDQvtC00YPQutGC0L7QsiDQsiDQutC+0YDQt9C40L3Rgy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2FydENzdkV4YW1wbGUkKCk6IE9ic2VydmFibGU8QmxvYj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KGAke3RoaXMudXJscy5hcGlVcmx9L2NhcnQvY3N2L2V4YW1wbGVgLCB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKChibG9iKSA9PiBuZXcgQmxvYihbYmxvYl0sIHsgdHlwZTogJ3RleHQvY3N2JyB9KSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCU0L7QsdCw0LLQu9GP0LXRgiDRgtC+0LLQsNGA0Ysg0LIg0LrQvtGA0LfQuNC90YMg0LjQtyDRhNCw0LnQu9CwIENTVi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlINCX0LDQs9GA0YPQttCw0LXQvNGL0Lkg0YTQsNC50Lsg0LIg0YTQvtGA0LzQsNGC0LUgYmFzZTY0LlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRQcm9kdWN0c0Zyb21Dc3YkKGZpbGU6IFNjVXBsb2FkZWRGaWxlKTogT2JzZXJ2YWJsZTxTY0NhcnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFNjSUNhcnQ+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhcnQvY3N2YCwgeyBmaWxlIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGNhcnREVE8pID0+IG5ldyBTY0NhcnQoY2FydERUTykpLFxuICAgICAgICAgICAgdGFwKChjYXJ0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0Q2FjaGVkSXRlbSQuc2V0VmFsdWUoY2FydCk7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0uY2FydENzdlVwbG9hZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -1,8 +1,7 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { ActivatedRoute } from '@angular/router';
4
- import { tuiIsPresent } from '@taiga-ui/cdk';
5
- import { filter, map, shareReplay, switchMap } from 'rxjs';
3
+ import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
4
+ import { filter, of, shareReplay, startWith, switchMap } from 'rxjs';
6
5
  import { ScCatalogService } from '../catalog/services/sc-catalog.service';
7
6
  import { scGetCurrentRoute } from '../helpers';
8
7
  /**
@@ -12,11 +11,18 @@ export const SC_CATEGORY_INFO = new InjectionToken('A stream with current catego
12
11
  /**
13
12
  * Фабрика создания потока данных о категории.
14
13
  *
14
+ * @param router Сервис для работы с маршрутом.
15
15
  * @param route Маршрут.
16
16
  * @param catalogService Сервис для работы с каталогом.
17
17
  */
18
- function categoryFactory(route, catalogService) {
19
- return scGetCurrentRoute(route).paramMap.pipe(map((parameters) => parameters.get('categoryIdOrSlug')), filter(tuiIsPresent), switchMap((categoryId) => catalogService.getCategoryCached$(categoryId).pipe(shareReplay())), takeUntilDestroyed());
18
+ function categoryFactory(router, route, catalogService) {
19
+ return router.events.pipe(filter((event) => event instanceof NavigationEnd)).pipe(startWith(null), switchMap(() => {
20
+ const categoryIdOrSlug = scGetCurrentRoute(route).snapshot.paramMap.get('categoryIdOrSlug');
21
+ if (categoryIdOrSlug) {
22
+ return catalogService.getCategoryCached$(categoryIdOrSlug);
23
+ }
24
+ return of(null);
25
+ }), shareReplay({ bufferSize: 1, refCount: true }), takeUntilDestroyed());
20
26
  }
21
27
  /**
22
28
  * Провайдеры потока данных о категории.
@@ -24,8 +30,8 @@ function categoryFactory(route, catalogService) {
24
30
  export const CATEGORY_PROVIDERS = [
25
31
  {
26
32
  provide: SC_CATEGORY_INFO,
27
- deps: [ActivatedRoute, ScCatalogService],
33
+ deps: [Router, ActivatedRoute, ScCatalogService],
28
34
  useFactory: categoryFactory,
29
35
  },
30
36
  ];
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcnkucHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9wcm92aWRlcnMvc2MtY2F0ZWdvcnkucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBZ0MsNENBQTRDLENBQUMsQ0FBQztBQUVoSTs7Ozs7R0FLRztBQUNILFNBQVMsZUFBZSxDQUFDLEtBQXFCLEVBQUUsY0FBZ0M7SUFDNUUsT0FBTyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUN2RCxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQ3BCLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQzVGLGtCQUFrQixFQUFFLENBQ3ZCLENBQUM7QUFDTixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUMxQztRQUNJLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLGdCQUFnQixDQUFDO1FBQ3hDLFVBQVUsRUFBRSxlQUFlO0tBQzlCO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgdHVpSXNQcmVzZW50IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0NhdGVnb3J5IH0gZnJvbSAnLi4vY2F0YWxvZy9kdG8vc2MtY2F0ZWdvcnknO1xuaW1wb3J0IHsgU2NDYXRhbG9nU2VydmljZSB9IGZyb20gJy4uL2NhdGFsb2cvc2VydmljZXMvc2MtY2F0YWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IHNjR2V0Q3VycmVudFJvdXRlIH0gZnJvbSAnLi4vaGVscGVycyc7XG5cbi8qKlxuICog0KLQvtC60LXQvSDQv9C+0YLQvtC60LAg0LTQsNC90L3Ri9GFINC+INC60LDRgtC10LPQvtGA0LjQuC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNDX0NBVEVHT1JZX0lORk8gPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTxTY0NhdGVnb3J5IHwgbnVsbD4+KCdBIHN0cmVhbSB3aXRoIGN1cnJlbnQgY2F0ZWdvcnkgaW5mb3JtYXRpb24nKTtcblxuLyoqXG4gKiDQpNCw0LHRgNC40LrQsCDRgdC+0LfQtNCw0L3QuNGPINC/0L7RgtC+0LrQsCDQtNCw0L3QvdGL0YUg0L4g0LrQsNGC0LXQs9C+0YDQuNC4LlxuICpcbiAqIEBwYXJhbSByb3V0ZSDQnNCw0YDRiNGA0YPRgi5cbiAqIEBwYXJhbSBjYXRhbG9nU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gKi9cbmZ1bmN0aW9uIGNhdGVnb3J5RmFjdG9yeShyb3V0ZTogQWN0aXZhdGVkUm91dGUsIGNhdGFsb2dTZXJ2aWNlOiBTY0NhdGFsb2dTZXJ2aWNlKTogT2JzZXJ2YWJsZTxTY0NhdGVnb3J5IHwgbnVsbD4ge1xuICAgIHJldHVybiBzY0dldEN1cnJlbnRSb3V0ZShyb3V0ZSkucGFyYW1NYXAucGlwZShcbiAgICAgICAgbWFwKChwYXJhbWV0ZXJzKSA9PiBwYXJhbWV0ZXJzLmdldCgnY2F0ZWdvcnlJZE9yU2x1ZycpKSxcbiAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgIHN3aXRjaE1hcCgoY2F0ZWdvcnlJZCkgPT4gY2F0YWxvZ1NlcnZpY2UuZ2V0Q2F0ZWdvcnlDYWNoZWQkKGNhdGVnb3J5SWQpLnBpcGUoc2hhcmVSZXBsYXkoKSkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICk7XG59XG5cbi8qKlxuICog0J/RgNC+0LLQsNC50LTQtdGA0Ysg0L/QvtGC0L7QutCwINC00LDQvdC90YvRhSDQviDQutCw0YLQtdCz0L7RgNC40LguXG4gKi9cbmV4cG9ydCBjb25zdCBDQVRFR09SWV9QUk9WSURFUlM6IFByb3ZpZGVyW10gPSBbXG4gICAge1xuICAgICAgICBwcm92aWRlOiBTQ19DQVRFR09SWV9JTkZPLFxuICAgICAgICBkZXBzOiBbQWN0aXZhdGVkUm91dGUsIFNjQ2F0YWxvZ1NlcnZpY2VdLFxuICAgICAgICB1c2VGYWN0b3J5OiBjYXRlZ29yeUZhY3RvcnksXG4gICAgfSxcbl07XG4iXX0=
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcnkucHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9wcm92aWRlcnMvc2MtY2F0ZWdvcnkucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWdDLDRDQUE0QyxDQUFDLENBQUM7QUFFaEk7Ozs7OztHQU1HO0FBQ0gsU0FBUyxlQUFlLENBQUMsTUFBYyxFQUFFLEtBQXFCLEVBQUUsY0FBZ0M7SUFDNUYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDN0UsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDWCxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFNUYsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25CLE9BQU8sY0FBYyxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQzlDLGtCQUFrQixFQUFFLENBQ3ZCLENBQUM7QUFDTixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBZTtJQUMxQztRQUNJLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQztRQUNoRCxVQUFVLEVBQUUsZUFBZTtLQUM5QjtDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjQ2F0ZWdvcnkgfSBmcm9tICcuLi9jYXRhbG9nL2R0by9zYy1jYXRlZ29yeSc7XG5pbXBvcnQgeyBTY0NhdGFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vY2F0YWxvZy9zZXJ2aWNlcy9zYy1jYXRhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgc2NHZXRDdXJyZW50Um91dGUgfSBmcm9tICcuLi9oZWxwZXJzJztcblxuLyoqXG4gKiDQotC+0LrQtdC9INC/0L7RgtC+0LrQsCDQtNCw0L3QvdGL0YUg0L4g0LrQsNGC0LXQs9C+0YDQuNC4LlxuICovXG5leHBvcnQgY29uc3QgU0NfQ0FURUdPUllfSU5GTyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPFNjQ2F0ZWdvcnkgfCBudWxsPj4oJ0Egc3RyZWFtIHdpdGggY3VycmVudCBjYXRlZ29yeSBpbmZvcm1hdGlvbicpO1xuXG4vKipcbiAqINCk0LDQsdGA0LjQutCwINGB0L7Qt9C00LDQvdC40Y8g0L/QvtGC0L7QutCwINC00LDQvdC90YvRhSDQviDQutCw0YLQtdCz0L7RgNC40LguXG4gKlxuICogQHBhcmFtIHJvdXRlciDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQvNCw0YDRiNGA0YPRgtC+0LwuXG4gKiBAcGFyYW0gcm91dGUg0JzQsNGA0YjRgNGD0YIuXG4gKiBAcGFyYW0gY2F0YWxvZ1NlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LrQsNGC0LDQu9C+0LPQvtC8LlxuICovXG5mdW5jdGlvbiBjYXRlZ29yeUZhY3Rvcnkocm91dGVyOiBSb3V0ZXIsIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgY2F0YWxvZ1NlcnZpY2U6IFNjQ2F0YWxvZ1NlcnZpY2UpOiBPYnNlcnZhYmxlPFNjQ2F0ZWdvcnkgfCBudWxsPiB7XG4gICAgcmV0dXJuIHJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKS5waXBlKFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yeUlkT3JTbHVnID0gc2NHZXRDdXJyZW50Um91dGUocm91dGUpLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnY2F0ZWdvcnlJZE9yU2x1ZycpO1xuXG4gICAgICAgICAgICBpZiAoY2F0ZWdvcnlJZE9yU2x1Zykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYXRhbG9nU2VydmljZS5nZXRDYXRlZ29yeUNhY2hlZCQoY2F0ZWdvcnlJZE9yU2x1Zyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgKTtcbn1cblxuLyoqXG4gKiDQn9GA0L7QstCw0LnQtNC10YDRiyDQv9C+0YLQvtC60LAg0LTQsNC90L3Ri9GFINC+INC60LDRgtC10LPQvtGA0LjQuC5cbiAqL1xuZXhwb3J0IGNvbnN0IENBVEVHT1JZX1BST1ZJREVSUzogUHJvdmlkZXJbXSA9IFtcbiAgICB7XG4gICAgICAgIHByb3ZpZGU6IFNDX0NBVEVHT1JZX0lORk8sXG4gICAgICAgIGRlcHM6IFtSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBTY0NhdGFsb2dTZXJ2aWNlXSxcbiAgICAgICAgdXNlRmFjdG9yeTogY2F0ZWdvcnlGYWN0b3J5LFxuICAgIH0sXG5dO1xuIl19
@@ -5,16 +5,16 @@ import { InjectionToken, inject, PLATFORM_ID, Injectable, Inject, Optional, Even
5
5
  import { WA_LOCAL_STORAGE, WA_USER_AGENT, WA_WINDOW } from '@ng-web-apis/common';
6
6
  import { filterByKey, toValue, WA_STORAGE_EVENT, StorageService } from '@ng-web-apis/storage';
7
7
  import * as i1 from 'rxjs';
8
- import { startWith, Subject, ReplaySubject, partition, combineLatest, map, debounceTime, switchMap, of, tap, filter, shareReplay, distinctUntilChanged, BehaviorSubject, materialize, dematerialize, merge, distinctUntilKeyChanged, skip, first, expand, takeWhile, toArray, catchError, throwError, concatMap, finalize, takeUntil, interval, share, scan } from 'rxjs';
8
+ import { startWith, Subject, ReplaySubject, partition, combineLatest, map, debounceTime, switchMap, of, tap, filter, shareReplay, distinctUntilChanged, BehaviorSubject, materialize, dematerialize, merge, distinctUntilKeyChanged, skip, first, catchError, throwError, expand, takeWhile, toArray, concatMap, finalize, takeUntil, interval, share, scan } from 'rxjs';
9
9
  import { isPlatformBrowser, isPlatformServer, DOCUMENT, formatDate } from '@angular/common';
10
10
  import * as i1$1 from '@angular/common/http';
11
- import { HttpContextToken, HttpContext, HttpHeaders, HttpClient, HttpParams, HttpResponse, HttpErrorResponse } from '@angular/common/http';
11
+ import { HttpContextToken, HttpContext, HttpHeaders, HttpClient, HttpParams, HttpErrorResponse, HttpResponse } from '@angular/common/http';
12
12
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
13
13
  import { tuiIsPresent, TuiDay, tuiPure, TUI_TRUE_HANDLER } from '@taiga-ui/cdk';
14
14
  import { tuiCleanObject } from '@taiga-ui/addon-doc/utils';
15
15
  import { __decorate } from 'tslib';
16
16
  import * as i2 from '@angular/router';
17
- import { ActivatedRoute, Router, NavigationEnd } from '@angular/router';
17
+ import { NavigationEnd, Router, ActivatedRoute } from '@angular/router';
18
18
  import { objectToSnake, objectToCamel, toSnake } from 'ts-case-convert';
19
19
  import { Meta, Title } from '@angular/platform-browser';
20
20
 
@@ -2783,7 +2783,7 @@ class ScCartService {
2783
2783
  this.userMetrikaService = inject(ScUserMetrikaService);
2784
2784
  if (this.isBrowser) {
2785
2785
  this.cartCachedItem$ = new ScCachedItem(Infinity, this.getCartData$(), loadingPlaceholder);
2786
- this.user$.subscribe(() => {
2786
+ this.user$.pipe(distinctUntilChanged((previous, current) => previous.id === current.id)).subscribe(() => {
2787
2787
  this.cartCachedItem$.update();
2788
2788
  });
2789
2789
  }
@@ -2795,7 +2795,16 @@ class ScCartService {
2795
2795
  * Создаёт запрос получения содержимого корзины и обновляет корзину, возвращая {@link Observable} содержимого корзины.
2796
2796
  */
2797
2797
  getCartData$() {
2798
- return this.http.get(`${this.urls.apiUrl}/cart`).pipe(map((cartDTO) => new ScCart(cartDTO)));
2798
+ return this.user$.pipe(first(), switchMap((user) => this.http.get(`${this.urls.apiUrl}/cart`).pipe(map((cartDTO) => new ScCart(cartDTO)),
2799
+ // TODO: Пересмотреть механизмы перехвата HTTP-ошибок 401/403/0 централизованно (с использованием interceptors).
2800
+ catchError((error) => {
2801
+ if (user.isGuest && error instanceof HttpErrorResponse && [0, 401, 403].includes(error.status)) {
2802
+ // Для гостя в неавторизованных/сетевых кейсах отдаём пустую корзину,
2803
+ // чтобы не пробрасывать ошибку во все подписки UI.
2804
+ return of(new ScCart());
2805
+ }
2806
+ return throwError(() => error);
2807
+ }))));
2799
2808
  }
2800
2809
  /**
2801
2810
  * Возвращает полную информацию о корзине (контекст загрузчика).
@@ -4286,11 +4295,18 @@ const SC_CATEGORY_INFO = new InjectionToken('A stream with current category info
4286
4295
  /**
4287
4296
  * Фабрика создания потока данных о категории.
4288
4297
  *
4298
+ * @param router Сервис для работы с маршрутом.
4289
4299
  * @param route Маршрут.
4290
4300
  * @param catalogService Сервис для работы с каталогом.
4291
4301
  */
4292
- function categoryFactory(route, catalogService) {
4293
- return scGetCurrentRoute(route).paramMap.pipe(map((parameters) => parameters.get('categoryIdOrSlug')), filter(tuiIsPresent), switchMap((categoryId) => catalogService.getCategoryCached$(categoryId).pipe(shareReplay())), takeUntilDestroyed());
4302
+ function categoryFactory(router, route, catalogService) {
4303
+ return router.events.pipe(filter((event) => event instanceof NavigationEnd)).pipe(startWith(null), switchMap(() => {
4304
+ const categoryIdOrSlug = scGetCurrentRoute(route).snapshot.paramMap.get('categoryIdOrSlug');
4305
+ if (categoryIdOrSlug) {
4306
+ return catalogService.getCategoryCached$(categoryIdOrSlug);
4307
+ }
4308
+ return of(null);
4309
+ }), shareReplay({ bufferSize: 1, refCount: true }), takeUntilDestroyed());
4294
4310
  }
4295
4311
  /**
4296
4312
  * Провайдеры потока данных о категории.
@@ -4298,7 +4314,7 @@ function categoryFactory(route, catalogService) {
4298
4314
  const CATEGORY_PROVIDERS = [
4299
4315
  {
4300
4316
  provide: SC_CATEGORY_INFO,
4301
- deps: [ActivatedRoute, ScCatalogService],
4317
+ deps: [Router, ActivatedRoute, ScCatalogService],
4302
4318
  useFactory: categoryFactory,
4303
4319
  },
4304
4320
  ];