@snabcentr/client-core 3.8.0 → 3.9.1
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/catalog/services/sc-catalog-redirect.service.d.ts +14 -3
- package/config/sc-i-company-base-info.d.ts +26 -1
- package/esm2022/catalog/services/sc-catalog-redirect.service.mjs +44 -10
- package/esm2022/config/sc-i-company-base-info.mjs +1 -1
- package/esm2022/providers/ssr.providers.mjs +7 -1
- package/fesm2022/snabcentr-client-core.mjs +48 -9
- package/fesm2022/snabcentr-client-core.mjs.map +1 -1
- package/package.json +1 -1
- package/providers/ssr.providers.d.ts +6 -0
- package/release_notes.tmp +2 -4
|
@@ -4,10 +4,11 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
* Сервис редиректа на родительскую категорию при недоступности (HTTP 404) товара или категории.
|
|
5
5
|
*
|
|
6
6
|
* Запрашивает у бэкенда родительскую категорию недоступной сущности и выполняет редирект:
|
|
7
|
-
* - на сервере (SSR) — выставляет HTTP-статус 302 и заголовок `Location` для корректного редиректа поисковых ботов;
|
|
8
|
-
* -
|
|
7
|
+
* - на сервере (SSR) при доступном {@link RESPONSE} — выставляет HTTP-статус 302 и заголовок `Location` для корректного редиректа поисковых ботов;
|
|
8
|
+
* - на сервере без {@link RESPONSE} (например, dev-сервер `ng serve`) — завершает поток ошибкой 404, чтобы отобразилась страница ошибки;
|
|
9
|
+
* - в браузере — выполняет полную навигацию на родительскую категорию.
|
|
9
10
|
*
|
|
10
|
-
* Если родительская категория не найдена, поток завершается ошибкой {@link HttpErrorResponse},
|
|
11
|
+
* Если родительская категория не найдена, поток также завершается ошибкой {@link HttpErrorResponse},
|
|
11
12
|
* чтобы вызывающий код отобразил страницу ошибки.
|
|
12
13
|
*/
|
|
13
14
|
export declare class ScCatalogRedirectService {
|
|
@@ -29,8 +30,18 @@ export declare class ScCatalogRedirectService {
|
|
|
29
30
|
private readonly isServer;
|
|
30
31
|
/**
|
|
31
32
|
* Данные об ответе на запрос (доступны только на сервере при SSR).
|
|
33
|
+
*
|
|
34
|
+
* Angular 21 (миграция SSR): {@link RESPONSE} — кастомный Express-токен, который провайдится в `server.ts`
|
|
35
|
+
* через CommonEngine. На upgrade-ветке `server.ts` остался на CommonEngine, поэтому при слиянии здесь
|
|
36
|
+
* ничего менять не нужно. Если `server.ts` мигрируют на `AngularNodeAppEngine` + `createNodeRequestHandler`,
|
|
37
|
+
* замените {@link RESPONSE} на нативный `RESPONSE_INIT` (`InjectionToken<ResponseInit | null>` из `@angular/core`);
|
|
38
|
+
* см. серверную ветку в {@link redirectToParentCategory$}.
|
|
32
39
|
*/
|
|
33
40
|
private readonly response;
|
|
41
|
+
/**
|
|
42
|
+
* Документ текущей страницы.
|
|
43
|
+
*/
|
|
44
|
+
private readonly document;
|
|
34
45
|
/**
|
|
35
46
|
* Выполняет редирект на родительскую категорию недоступной категории.
|
|
36
47
|
*
|
|
@@ -9,7 +9,32 @@ export interface ScICompanyBaseInfo {
|
|
|
9
9
|
/**
|
|
10
10
|
* Адрес компании.
|
|
11
11
|
*/
|
|
12
|
-
readonly address:
|
|
12
|
+
readonly address: {
|
|
13
|
+
/**
|
|
14
|
+
* Страна.
|
|
15
|
+
*/
|
|
16
|
+
readonly country: string;
|
|
17
|
+
/**
|
|
18
|
+
* Регион.
|
|
19
|
+
*/
|
|
20
|
+
readonly region: string;
|
|
21
|
+
/**
|
|
22
|
+
* Населенный пункт.
|
|
23
|
+
*/
|
|
24
|
+
readonly locality: string;
|
|
25
|
+
/**
|
|
26
|
+
* Улица, дом, корпус, строение и т. п. (то есть адрес с точностью до здания).
|
|
27
|
+
*/
|
|
28
|
+
readonly streetAddress: string;
|
|
29
|
+
/**
|
|
30
|
+
* Подъезд, этаж, офис и т. п. (то есть сведения о местонахождении внутри здания), название торгового или бизнес-центра, а также любое описание, не являющееся точным адресом.
|
|
31
|
+
*/
|
|
32
|
+
readonly extendedAddress?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Почтовый индекс.
|
|
35
|
+
*/
|
|
36
|
+
readonly postalCode: string;
|
|
37
|
+
};
|
|
13
38
|
/**
|
|
14
39
|
* Юридический адрес компании.
|
|
15
40
|
*/
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
1
2
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
2
3
|
import { inject, Injectable } from '@angular/core';
|
|
3
4
|
import { Router } from '@angular/router';
|
|
4
5
|
import { tuiIsPresent } from '@taiga-ui/cdk';
|
|
5
|
-
import { EMPTY,
|
|
6
|
+
import { EMPTY, switchMap, throwError } from 'rxjs';
|
|
6
7
|
import { IS_SERVER, RESPONSE } from '../../providers/ssr.providers';
|
|
7
8
|
import { SC_ID_OR_SLUG_IN_ROUTE } from '../../tokens/sc-id-or-slug-in-route';
|
|
8
9
|
import { ScCatalogService } from './sc-catalog.service';
|
|
@@ -11,10 +12,11 @@ import * as i0 from "@angular/core";
|
|
|
11
12
|
* Сервис редиректа на родительскую категорию при недоступности (HTTP 404) товара или категории.
|
|
12
13
|
*
|
|
13
14
|
* Запрашивает у бэкенда родительскую категорию недоступной сущности и выполняет редирект:
|
|
14
|
-
* - на сервере (SSR) — выставляет HTTP-статус 302 и заголовок `Location` для корректного редиректа поисковых ботов;
|
|
15
|
-
* -
|
|
15
|
+
* - на сервере (SSR) при доступном {@link RESPONSE} — выставляет HTTP-статус 302 и заголовок `Location` для корректного редиректа поисковых ботов;
|
|
16
|
+
* - на сервере без {@link RESPONSE} (например, dev-сервер `ng serve`) — завершает поток ошибкой 404, чтобы отобразилась страница ошибки;
|
|
17
|
+
* - в браузере — выполняет полную навигацию на родительскую категорию.
|
|
16
18
|
*
|
|
17
|
-
* Если родительская категория не найдена, поток завершается ошибкой {@link HttpErrorResponse},
|
|
19
|
+
* Если родительская категория не найдена, поток также завершается ошибкой {@link HttpErrorResponse},
|
|
18
20
|
* чтобы вызывающий код отобразил страницу ошибки.
|
|
19
21
|
*/
|
|
20
22
|
export class ScCatalogRedirectService {
|
|
@@ -37,8 +39,18 @@ export class ScCatalogRedirectService {
|
|
|
37
39
|
this.isServer = inject(IS_SERVER);
|
|
38
40
|
/**
|
|
39
41
|
* Данные об ответе на запрос (доступны только на сервере при SSR).
|
|
42
|
+
*
|
|
43
|
+
* Angular 21 (миграция SSR): {@link RESPONSE} — кастомный Express-токен, который провайдится в `server.ts`
|
|
44
|
+
* через CommonEngine. На upgrade-ветке `server.ts` остался на CommonEngine, поэтому при слиянии здесь
|
|
45
|
+
* ничего менять не нужно. Если `server.ts` мигрируют на `AngularNodeAppEngine` + `createNodeRequestHandler`,
|
|
46
|
+
* замените {@link RESPONSE} на нативный `RESPONSE_INIT` (`InjectionToken<ResponseInit | null>` из `@angular/core`);
|
|
47
|
+
* см. серверную ветку в {@link redirectToParentCategory$}.
|
|
40
48
|
*/
|
|
41
49
|
this.response = inject(RESPONSE, { optional: true });
|
|
50
|
+
/**
|
|
51
|
+
* Документ текущей страницы.
|
|
52
|
+
*/
|
|
53
|
+
this.document = inject(DOCUMENT);
|
|
42
54
|
}
|
|
43
55
|
/**
|
|
44
56
|
* Выполняет редирект на родительскую категорию недоступной категории.
|
|
@@ -73,13 +85,35 @@ export class ScCatalogRedirectService {
|
|
|
73
85
|
return throwError(() => new HttpErrorResponse({ status: 404 }));
|
|
74
86
|
}
|
|
75
87
|
const urlTree = this.router.createUrlTree(['/catalog', target]);
|
|
88
|
+
const targetUrl = this.router.serializeUrl(urlTree);
|
|
76
89
|
if (this.isServer) {
|
|
77
|
-
// SSR: выставляем 302 и заголовок Location для корректного редиректа поисковых ботов.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
90
|
+
// SSR с доступным RESPONSE (прод-сервер): выставляем 302 и заголовок Location для корректного редиректа поисковых ботов.
|
|
91
|
+
//
|
|
92
|
+
// Angular 21 (миграция SSR): при переходе server.ts на AngularNodeAppEngine выставляйте статус/заголовок
|
|
93
|
+
// через нативный RESPONSE_INIT вместо Express-методов response.setHeader/response.status:
|
|
94
|
+
// if (this.responseInit) { this.responseInit.status = 302; (this.responseInit.headers as Record<string, string>)['Location'] = targetUrl; }
|
|
95
|
+
if (this.response) {
|
|
96
|
+
this.response.setHeader('Location', targetUrl);
|
|
97
|
+
this.response.status(302);
|
|
98
|
+
return EMPTY;
|
|
99
|
+
}
|
|
100
|
+
// SSR без RESPONSE (например, dev-сервер ng serve): серверный редирект невозможен,
|
|
101
|
+
// поэтому отображаем страницу ошибки, как до внедрения редиректа, вместо бесконечного лоадера.
|
|
102
|
+
//
|
|
103
|
+
// Angular 21 (миграция SSR): этот фолбэк нужен, пока ng serve не исполняет server.ts (он на CommonEngine).
|
|
104
|
+
// После миграции server.ts на createNodeRequestHandler dev-сервер начнёт исполнять server.ts, и RESPONSE/RESPONSE_INIT
|
|
105
|
+
// станет доступен в ng serve — тогда эту ветку с throwError(404) можно удалить.
|
|
106
|
+
return throwError(() => new HttpErrorResponse({ status: 404 }));
|
|
81
107
|
}
|
|
82
|
-
|
|
108
|
+
// Браузер: поток данных категории (SC_CATEGORY_INFO) завершается ошибкой при 404 и не возобновляется
|
|
109
|
+
// при навигации в рамках того же маршрута, поэтому редирект выполняется полной перезагрузкой страницы.
|
|
110
|
+
// location.replace не добавляет запись в историю, чтобы кнопка «Назад» не возвращала на недоступную страницу.
|
|
111
|
+
//
|
|
112
|
+
// Angular 21 (миграция SSR): эту строку апгрейд НЕ снимает — причина в рантайме приложения (мёртвый поток
|
|
113
|
+
// SC_CATEGORY_INFO при SPA-навигации), а не в SSR. Вернуть SPA-навигацию (router.navigateByUrl) можно только
|
|
114
|
+
// сделав SC_CATEGORY_INFO устойчивым к 404 (ловить ошибку внутри switchMap) либо унеся редирект в guard + RedirectCommand.
|
|
115
|
+
this.document.location.replace(targetUrl);
|
|
116
|
+
return EMPTY;
|
|
83
117
|
}));
|
|
84
118
|
}
|
|
85
119
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScCatalogRedirectService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -91,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
91
125
|
providedIn: 'root',
|
|
92
126
|
}]
|
|
93
127
|
}] });
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy1yZWRpcmVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jYXRhbG9nL3NlcnZpY2VzL3NjLWNhdGFsb2ctcmVkaXJlY3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBYyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRXhEOzs7Ozs7Ozs7R0FTRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFIckM7UUFJSTs7V0FFRztRQUNjLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFM0Q7O1dBRUc7UUFDYyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpDOztXQUVHO1FBQ2MsYUFBUSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRTNEOztXQUVHO1FBQ2MsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU5Qzs7V0FFRztRQUNjLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7S0FxRHBFO0lBbkRHOzs7OztPQUtHO0lBQ0kseUJBQXlCLENBQUMsZ0JBQWlDO1FBQzlELE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLHdCQUF3QixDQUFDLGVBQWdDO1FBQzVELE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyx5QkFBeUIsQ0FBQyxlQUFzRDtRQUNwRixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQ3ZCLFNBQVMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQ3pCLDREQUE0RDtZQUM1RCxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTdDLGtFQUFrRTtZQUNsRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksaUJBQWlCLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBRWhFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNoQixzRkFBc0Y7Z0JBQ3RGLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUN4RSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFM0IsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOytHQTVFUSx3QkFBd0I7bUhBQXhCLHdCQUF3QixjQUZyQixNQUFNOzs0RkFFVCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0dWlJc1ByZXNlbnQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IEVNUFRZLCBmcm9tLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSVNfU0VSVkVSLCBSRVNQT05TRSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9zc3IucHJvdmlkZXJzJztcbmltcG9ydCB7IFNDX0lEX09SX1NMVUdfSU5fUk9VVEUgfSBmcm9tICcuLi8uLi90b2tlbnMvc2MtaWQtb3Itc2x1Zy1pbi1yb3V0ZSc7XG5pbXBvcnQgeyBTY0lQYXJlbnRDYXRlZ29yeVJlZGlyZWN0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zYy1pLXBhcmVudC1jYXRlZ29yeS1yZWRpcmVjdCc7XG5pbXBvcnQgeyBTY0NhdGFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9zYy1jYXRhbG9nLnNlcnZpY2UnO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDRgNC10LTQuNGA0LXQutGC0LAg0L3QsCDRgNC+0LTQuNGC0LXQu9GM0YHQutGD0Y4g0LrQsNGC0LXQs9C+0YDQuNGOINC/0YDQuCDQvdC10LTQvtGB0YLRg9C/0L3QvtGB0YLQuCAoSFRUUCA0MDQpINGC0L7QstCw0YDQsCDQuNC70Lgg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICpcbiAqINCX0LDQv9GA0LDRiNC40LLQsNC10YIg0YMg0LHRjdC60LXQvdC00LAg0YDQvtC00LjRgtC10LvRjNGB0LrRg9GOINC60LDRgtC10LPQvtGA0LjRjiDQvdC10LTQvtGB0YLRg9C/0L3QvtC5INGB0YPRidC90L7RgdGC0Lgg0Lgg0LLRi9C/0L7Qu9C90Y/QtdGCINGA0LXQtNC40YDQtdC60YI6XG4gKiAtINC90LAg0YHQtdGA0LLQtdGA0LUgKFNTUikg4oCUINCy0YvRgdGC0LDQstC70Y/QtdGCIEhUVFAt0YHRgtCw0YLRg9GBIDMwMiDQuCDQt9Cw0LPQvtC70L7QstC+0LogYExvY2F0aW9uYCDQtNC70Y8g0LrQvtGA0YDQtdC60YLQvdC+0LPQviDRgNC10LTQuNGA0LXQutGC0LAg0L/QvtC40YHQutC+0LLRi9GFINCx0L7RgtC+0LI7XG4gKiAtINCyINCx0YDQsNGD0LfQtdGA0LUg4oCUINCy0YvQv9C+0LvQvdGP0LXRgiDQvdCw0LLQuNCz0LDRhtC40Y4g0YHRgNC10LTRgdGC0LLQsNC80Lgge0BsaW5rIFJvdXRlcn0uXG4gKlxuICog0JXRgdC70Lgg0YDQvtC00LjRgtC10LvRjNGB0LrQsNGPINC60LDRgtC10LPQvtGA0LjRjyDQvdC1INC90LDQudC00LXQvdCwLCDQv9C+0YLQvtC6INC30LDQstC10YDRiNCw0LXRgtGB0Y8g0L7RiNC40LHQutC+0Lkge0BsaW5rIEh0dHBFcnJvclJlc3BvbnNlfSxcbiAqINGH0YLQvtCx0Ysg0LLRi9C30YvQstCw0Y7RidC40Lkg0LrQvtC0INC+0YLQvtCx0YDQsNC30LjQuyDRgdGC0YDQsNC90LjRhtGDINC+0YjQuNCx0LrQuC5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NDYXRhbG9nUmVkaXJlY3RTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nU2VydmljZSA9IGluamVjdChTY0NhdGFsb2dTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQvNCw0YDRiNGA0YPRgtC40LfQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0Log0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQsCDQuNC70Lggc2x1ZyDQsiDQvNCw0YDRiNGA0YPRgtCw0YUg0YLQvtCy0LDRgNC+0LIg0Lgg0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWRPclNsdWcgPSBpbmplY3QoU0NfSURfT1JfU0xVR19JTl9ST1VURSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INGC0LXQutGD0YnQuNC5INGB0LrRgNC40L/RgiDQuNGB0L/QvtC70L3Rj9C10YLRgdGPINC90LAg0YHQtdGA0LLQtdGA0LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc1NlcnZlciA9IGluamVjdChJU19TRVJWRVIpO1xuXG4gICAgLyoqXG4gICAgICog0JTQsNC90L3Ri9C1INC+0LEg0L7RgtCy0LXRgtC1INC90LAg0LfQsNC/0YDQvtGBICjQtNC+0YHRgtGD0L/QvdGLINGC0L7Qu9GM0LrQviDQvdCwINGB0LXRgNCy0LXRgNC1INC/0YDQuCBTU1IpLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzcG9uc2UgPSBpbmplY3QoUkVTUE9OU0UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQktGL0L/QvtC70L3Rj9C10YIg0YDQtdC00LjRgNC10LrRgiDQvdCwINGA0L7QtNC40YLQtdC70YzRgdC60YPRjiDQutCw0YLQtdCz0L7RgNC40Y4g0L3QtdC00L7RgdGC0YPQv9C90L7QuSDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQvdC10LTQvtGB0YLRg9C/0L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKiBAcmV0dXJucyDQn9C+0YLQvtC6LCDQt9Cw0LLQtdGA0YjQsNGO0YnQuNC50YHRjyDQv9C+0YHQu9C1INGA0LXQtNC40YDQtdC60YLQsC4g0K3QvNC40YLQuNGCINC+0YjQuNCx0LrRgyB7QGxpbmsgSHR0cEVycm9yUmVzcG9uc2V9LCDQtdGB0LvQuCDRgNC+0LTQuNGC0LXQu9GM0YHQutCw0Y8g0LrQsNGC0LXQs9C+0YDQuNGPINC90LUg0L3QsNC50LTQtdC90LAuXG4gICAgICovXG4gICAgcHVibGljIHJlZGlyZWN0VG9DYXRlZ29yeVBhcmVudCQoY2F0ZWdvcnlJZE9yU2x1ZzogbnVtYmVyIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxuZXZlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWRpcmVjdFRvUGFyZW50Q2F0ZWdvcnkkKHRoaXMuY2F0YWxvZ1NlcnZpY2UuZ2V0Q2F0ZWdvcnlQYXJlbnRDYXRlZ29yeSQoY2F0ZWdvcnlJZE9yU2x1ZykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0YvQv9C+0LvQvdGP0LXRgiDRgNC10LTQuNGA0LXQutGCINC90LAg0YDQvtC00LjRgtC10LvRjNGB0LrRg9GOINC60LDRgtC10LPQvtGA0LjRjiDQvdC10LTQvtGB0YLRg9C/0L3QvtCz0L4g0YLQvtCy0LDRgNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2R1Y3RJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQvdC10LTQvtGB0YLRg9C/0L3QvtCz0L4g0YLQvtCy0LDRgNCwLlxuICAgICAqIEByZXR1cm5zINCf0L7RgtC+0LosINC30LDQstC10YDRiNCw0Y7RidC40LnRgdGPINC/0L7RgdC70LUg0YDQtdC00LjRgNC10LrRgtCwLiDQrdC80LjRgtC40YIg0L7RiNC40LHQutGDIHtAbGluayBIdHRwRXJyb3JSZXNwb25zZX0sINC10YHQu9C4INGA0L7QtNC40YLQtdC70YzRgdC60LDRjyDQutCw0YLQtdCz0L7RgNC40Y8g0L3QtSDQvdCw0LnQtNC10L3QsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVkaXJlY3RUb1Byb2R1Y3RQYXJlbnQkKHByb2R1Y3RJZE9yU2x1ZzogbnVtYmVyIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxuZXZlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWRpcmVjdFRvUGFyZW50Q2F0ZWdvcnkkKHRoaXMuY2F0YWxvZ1NlcnZpY2UuZ2V0UHJvZHVjdFBhcmVudENhdGVnb3J5JChwcm9kdWN0SWRPclNsdWcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0L/QvtC70L3Rj9C10YIg0YDQtdC00LjRgNC10LrRgiDQvdCwINC/0L7Qu9GD0YfQtdC90L3Rg9GOINGA0L7QtNC40YLQtdC70YzRgdC60YPRjiDQutCw0YLQtdCz0L7RgNC40Y4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyZW50Q2F0ZWdvcnkkINCf0L7RgtC+0Log0YEg0LTQsNC90L3Ri9C80Lgg0YDQvtC00LjRgtC10LvRjNGB0LrQvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKiBAcmV0dXJucyDQn9C+0YLQvtC6LCDQt9Cw0LLQtdGA0YjQsNGO0YnQuNC50YHRjyDQv9C+0YHQu9C1INGA0LXQtNC40YDQtdC60YLQsC4g0K3QvNC40YLQuNGCINC+0YjQuNCx0LrRgyB7QGxpbmsgSHR0cEVycm9yUmVzcG9uc2V9INGBINC60L7QtNC+0LwgNDA0LCDQtdGB0LvQuCDRgNC+0LTQuNGC0LXQu9GM0YHQutCw0Y8g0LrQsNGC0LXQs9C+0YDQuNGPINC90LUg0L3QsNC50LTQtdC90LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWRpcmVjdFRvUGFyZW50Q2F0ZWdvcnkkKHBhcmVudENhdGVnb3J5JDogT2JzZXJ2YWJsZTxTY0lQYXJlbnRDYXRlZ29yeVJlZGlyZWN0Pik6IE9ic2VydmFibGU8bmV2ZXI+IHtcbiAgICAgICAgcmV0dXJuIHBhcmVudENhdGVnb3J5JC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChwYXJlbnRDYXRlZ29yeSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHBhcmVudENhdGVnb3J5W3RoaXMuaWRPclNsdWddO1xuXG4gICAgICAgICAgICAgICAgLy8g0KDQvtC00LjRgtC10LvRjNGB0LrQsNGPINC60LDRgtC10LPQvtGA0LjRjyDQvdC1INC90LDQudC00LXQvdCwIOKAlCDQvtGC0L7QsdGA0LDQttCw0LXQvCDRgdGC0YDQsNC90LjRhtGDINC+0YjQuNCx0LrQuC5cbiAgICAgICAgICAgICAgICBpZiAoIXR1aUlzUHJlc2VudCh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7IHN0YXR1czogNDA0IH0pKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCB1cmxUcmVlID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy9jYXRhbG9nJywgdGFyZ2V0XSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NlcnZlcikge1xuICAgICAgICAgICAgICAgICAgICAvLyBTU1I6INCy0YvRgdGC0LDQstC70Y/QtdC8IDMwMiDQuCDQt9Cw0LPQvtC70L7QstC+0LogTG9jYXRpb24g0LTQu9GPINC60L7RgNGA0LXQutGC0L3QvtCz0L4g0YDQtdC00LjRgNC10LrRgtCwINC/0L7QuNGB0LrQvtCy0YvRhSDQsdC+0YLQvtCyLlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlPy5zZXRIZWFkZXIoJ0xvY2F0aW9uJywgdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKHVybFRyZWUpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZT8uc3RhdHVzKDMwMik7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBmcm9tKHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsVHJlZSwgeyByZXBsYWNlVXJsOiB0cnVlIH0pKS5waXBlKHN3aXRjaE1hcCgoKSA9PiBFTVBUWSkpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy1yZWRpcmVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jYXRhbG9nL3NlcnZpY2VzL3NjLWNhdGFsb2ctcmVkaXJlY3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLEtBQUssRUFBYyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRXhEOzs7Ozs7Ozs7O0dBVUc7QUFJSCxNQUFNLE9BQU8sd0JBQXdCO0lBSHJDO1FBSUk7O1dBRUc7UUFDYyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTNEOztXQUVHO1FBQ2MsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV6Qzs7V0FFRztRQUNjLGFBQVEsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUUzRDs7V0FFRztRQUNjLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUM7Ozs7Ozs7O1dBUUc7UUFDYyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWpFOztXQUVHO1FBQ2MsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztLQThFaEQ7SUE1RUc7Ozs7O09BS0c7SUFDSSx5QkFBeUIsQ0FBQyxnQkFBaUM7UUFDOUQsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksd0JBQXdCLENBQUMsZUFBZ0M7UUFDNUQsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLHlCQUF5QixDQUFDLGVBQXNEO1FBQ3BGLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FDdkIsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDekIsNERBQTREO1lBQzVELE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFN0Msa0VBQWtFO1lBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFFaEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFcEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLHlIQUF5SDtnQkFDekgsRUFBRTtnQkFDRix5R0FBeUc7Z0JBQ3pHLDBGQUEwRjtnQkFDMUYsOElBQThJO2dCQUM5SSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO29CQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFFMUIsT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUM7Z0JBRUQsbUZBQW1GO2dCQUNuRiwrRkFBK0Y7Z0JBQy9GLEVBQUU7Z0JBQ0YsMkdBQTJHO2dCQUMzRyx1SEFBdUg7Z0JBQ3ZILGdGQUFnRjtnQkFDaEYsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUVELHFHQUFxRztZQUNyRyx1R0FBdUc7WUFDdkcsOEdBQThHO1lBQzlHLEVBQUU7WUFDRiwwR0FBMEc7WUFDMUcsNkdBQTZHO1lBQzdHLDJIQUEySDtZQUMzSCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFMUMsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7K0dBaEhRLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnJCLE1BQU07OzRGQUVULHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHR1aUlzUHJlc2VudCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIHN3aXRjaE1hcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJU19TRVJWRVIsIFJFU1BPTlNFIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3Nzci5wcm92aWRlcnMnO1xuaW1wb3J0IHsgU0NfSURfT1JfU0xVR19JTl9ST1VURSB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy1pZC1vci1zbHVnLWluLXJvdXRlJztcbmltcG9ydCB7IFNjSVBhcmVudENhdGVnb3J5UmVkaXJlY3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktcGFyZW50LWNhdGVnb3J5LXJlZGlyZWN0JztcbmltcG9ydCB7IFNjQ2F0YWxvZ1NlcnZpY2UgfSBmcm9tICcuL3NjLWNhdGFsb2cuc2VydmljZSc7XG5cbi8qKlxuICog0KHQtdGA0LLQuNGBINGA0LXQtNC40YDQtdC60YLQsCDQvdCwINGA0L7QtNC40YLQtdC70YzRgdC60YPRjiDQutCw0YLQtdCz0L7RgNC40Y4g0L/RgNC4INC90LXQtNC+0YHRgtGD0L/QvdC+0YHRgtC4IChIVFRQIDQwNCkg0YLQvtCy0LDRgNCwINC40LvQuCDQutCw0YLQtdCz0L7RgNC40LguXG4gKlxuICog0JfQsNC/0YDQsNGI0LjQstCw0LXRgiDRgyDQsdGN0LrQtdC90LTQsCDRgNC+0LTQuNGC0LXQu9GM0YHQutGD0Y4g0LrQsNGC0LXQs9C+0YDQuNGOINC90LXQtNC+0YHRgtGD0L/QvdC+0Lkg0YHRg9GJ0L3QvtGB0YLQuCDQuCDQstGL0L/QvtC70L3Rj9C10YIg0YDQtdC00LjRgNC10LrRgjpcbiAqIC0g0L3QsCDRgdC10YDQstC10YDQtSAoU1NSKSDQv9GA0Lgg0LTQvtGB0YLRg9C/0L3QvtC8IHtAbGluayBSRVNQT05TRX0g4oCUINCy0YvRgdGC0LDQstC70Y/QtdGCIEhUVFAt0YHRgtCw0YLRg9GBIDMwMiDQuCDQt9Cw0LPQvtC70L7QstC+0LogYExvY2F0aW9uYCDQtNC70Y8g0LrQvtGA0YDQtdC60YLQvdC+0LPQviDRgNC10LTQuNGA0LXQutGC0LAg0L/QvtC40YHQutC+0LLRi9GFINCx0L7RgtC+0LI7XG4gKiAtINC90LAg0YHQtdGA0LLQtdGA0LUg0LHQtdC3IHtAbGluayBSRVNQT05TRX0gKNC90LDQv9GA0LjQvNC10YAsIGRldi3RgdC10YDQstC10YAgYG5nIHNlcnZlYCkg4oCUINC30LDQstC10YDRiNCw0LXRgiDQv9C+0YLQvtC6INC+0YjQuNCx0LrQvtC5IDQwNCwg0YfRgtC+0LHRiyDQvtGC0L7QsdGA0LDQt9C40LvQsNGB0Ywg0YHRgtGA0LDQvdC40YbQsCDQvtGI0LjQsdC60Lg7XG4gKiAtINCyINCx0YDQsNGD0LfQtdGA0LUg4oCUINCy0YvQv9C+0LvQvdGP0LXRgiDQv9C+0LvQvdGD0Y4g0L3QsNCy0LjQs9Cw0YbQuNGOINC90LAg0YDQvtC00LjRgtC10LvRjNGB0LrRg9GOINC60LDRgtC10LPQvtGA0LjRji5cbiAqXG4gKiDQldGB0LvQuCDRgNC+0LTQuNGC0LXQu9GM0YHQutCw0Y8g0LrQsNGC0LXQs9C+0YDQuNGPINC90LUg0L3QsNC50LTQtdC90LAsINC/0L7RgtC+0Log0YLQsNC60LbQtSDQt9Cw0LLQtdGA0YjQsNC10YLRgdGPINC+0YjQuNCx0LrQvtC5IHtAbGluayBIdHRwRXJyb3JSZXNwb25zZX0sXG4gKiDRh9GC0L7QsdGLINCy0YvQt9GL0LLQsNGO0YnQuNC5INC60L7QtCDQvtGC0L7QsdGA0LDQt9C40Lsg0YHRgtGA0LDQvdC40YbRgyDQvtGI0LjQsdC60LguXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2F0YWxvZ1JlZGlyZWN0U2VydmljZSB7XG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LrQsNGC0LDQu9C+0LPQvtC8LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0YWxvZ1NlcnZpY2UgPSBpbmplY3QoU2NDYXRhbG9nU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LzQsNGA0YjRgNGD0YLQuNC30LDRhtC40LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0LAg0LjQu9C4IHNsdWcg0LIg0LzQsNGA0YjRgNGD0YLQsNGFINGC0L7QstCw0YDQvtCyINC4INC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlkT3JTbHVnID0gaW5qZWN0KFNDX0lEX09SX1NMVUdfSU5fUk9VVEUpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDRgtC10LrRg9GJ0LjQuSDRgdC60YDQuNC/0YIg0LjRgdC/0L7Qu9C90Y/QtdGC0YHRjyDQvdCwINGB0LXRgNCy0LXRgNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNTZXJ2ZXIgPSBpbmplY3QoSVNfU0VSVkVSKTtcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQvtCxINC+0YLQstC10YLQtSDQvdCwINC30LDQv9GA0L7RgSAo0LTQvtGB0YLRg9C/0L3RiyDRgtC+0LvRjNC60L4g0L3QsCDRgdC10YDQstC10YDQtSDQv9GA0LggU1NSKS5cbiAgICAgKlxuICAgICAqIEFuZ3VsYXIgMjEgKNC80LjQs9GA0LDRhtC40Y8gU1NSKToge0BsaW5rIFJFU1BPTlNFfSDigJQg0LrQsNGB0YLQvtC80L3Ri9C5IEV4cHJlc3Mt0YLQvtC60LXQvSwg0LrQvtGC0L7RgNGL0Lkg0L/RgNC+0LLQsNC50LTQuNGC0YHRjyDQsiBgc2VydmVyLnRzYFxuICAgICAqINGH0LXRgNC10LcgQ29tbW9uRW5naW5lLiDQndCwIHVwZ3JhZGUt0LLQtdGC0LrQtSBgc2VydmVyLnRzYCDQvtGB0YLQsNC70YHRjyDQvdCwIENvbW1vbkVuZ2luZSwg0L/QvtGN0YLQvtC80YMg0L/RgNC4INGB0LvQuNGP0L3QuNC4INC30LTQtdGB0YxcbiAgICAgKiDQvdC40YfQtdCz0L4g0LzQtdC90Y/RgtGMINC90LUg0L3Rg9C20L3Qvi4g0JXRgdC70LggYHNlcnZlci50c2Ag0LzQuNCz0YDQuNGA0YPRjtGCINC90LAgYEFuZ3VsYXJOb2RlQXBwRW5naW5lYCArIGBjcmVhdGVOb2RlUmVxdWVzdEhhbmRsZXJgLFxuICAgICAqINC30LDQvNC10L3QuNGC0LUge0BsaW5rIFJFU1BPTlNFfSDQvdCwINC90LDRgtC40LLQvdGL0LkgYFJFU1BPTlNFX0lOSVRgIChgSW5qZWN0aW9uVG9rZW48UmVzcG9uc2VJbml0IHwgbnVsbD5gINC40LcgYEBhbmd1bGFyL2NvcmVgKTtcbiAgICAgKiDRgdC8LiDRgdC10YDQstC10YDQvdGD0Y4g0LLQtdGC0LrRgyDQsiB7QGxpbmsgcmVkaXJlY3RUb1BhcmVudENhdGVnb3J5JH0uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNwb25zZSA9IGluamVjdChSRVNQT05TRSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIC8qKlxuICAgICAqINCU0L7QutGD0LzQtdC90YIg0YLQtdC60YPRidC10Lkg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICAgIC8qKlxuICAgICAqINCS0YvQv9C+0LvQvdGP0LXRgiDRgNC10LTQuNGA0LXQutGCINC90LAg0YDQvtC00LjRgtC10LvRjNGB0LrRg9GOINC60LDRgtC10LPQvtGA0LjRjiDQvdC10LTQvtGB0YLRg9C/0L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC90LXQtNC+0YHRgtGD0L/QvdC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqIEByZXR1cm5zINCf0L7RgtC+0LosINC30LDQstC10YDRiNCw0Y7RidC40LnRgdGPINC/0L7RgdC70LUg0YDQtdC00LjRgNC10LrRgtCwLiDQrdC80LjRgtC40YIg0L7RiNC40LHQutGDIHtAbGluayBIdHRwRXJyb3JSZXNwb25zZX0sINC10YHQu9C4INGA0L7QtNC40YLQtdC70YzRgdC60LDRjyDQutCw0YLQtdCz0L7RgNC40Y8g0L3QtSDQvdCw0LnQtNC10L3QsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVkaXJlY3RUb0NhdGVnb3J5UGFyZW50JChjYXRlZ29yeUlkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPG5ldmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZGlyZWN0VG9QYXJlbnRDYXRlZ29yeSQodGhpcy5jYXRhbG9nU2VydmljZS5nZXRDYXRlZ29yeVBhcmVudENhdGVnb3J5JChjYXRlZ29yeUlkT3JTbHVnKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLRi9C/0L7Qu9C90Y/QtdGCINGA0LXQtNC40YDQtdC60YIg0L3QsCDRgNC+0LTQuNGC0LXQu9GM0YHQutGD0Y4g0LrQsNGC0LXQs9C+0YDQuNGOINC90LXQtNC+0YHRgtGD0L/QvdC+0LPQviDRgtC+0LLQsNGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdElkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC90LXQtNC+0YHRgtGD0L/QvdC+0LPQviDRgtC+0LLQsNGA0LAuXG4gICAgICogQHJldHVybnMg0J/QvtGC0L7Quiwg0LfQsNCy0LXRgNGI0LDRjtGJ0LjQudGB0Y8g0L/QvtGB0LvQtSDRgNC10LTQuNGA0LXQutGC0LAuINCt0LzQuNGC0LjRgiDQvtGI0LjQsdC60YMge0BsaW5rIEh0dHBFcnJvclJlc3BvbnNlfSwg0LXRgdC70Lgg0YDQvtC00LjRgtC10LvRjNGB0LrQsNGPINC60LDRgtC10LPQvtGA0LjRjyDQvdC1INC90LDQudC00LXQvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWRpcmVjdFRvUHJvZHVjdFBhcmVudCQocHJvZHVjdElkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPG5ldmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZGlyZWN0VG9QYXJlbnRDYXRlZ29yeSQodGhpcy5jYXRhbG9nU2VydmljZS5nZXRQcm9kdWN0UGFyZW50Q2F0ZWdvcnkkKHByb2R1Y3RJZE9yU2x1ZykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0YvQv9C+0LvQvdGP0LXRgiDRgNC10LTQuNGA0LXQutGCINC90LAg0L/QvtC70YPRh9C10L3QvdGD0Y4g0YDQvtC00LjRgtC10LvRjNGB0LrRg9GOINC60LDRgtC10LPQvtGA0LjRji5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJlbnRDYXRlZ29yeSQg0J/QvtGC0L7QuiDRgSDQtNCw0L3QvdGL0LzQuCDRgNC+0LTQuNGC0LXQu9GM0YHQutC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqIEByZXR1cm5zINCf0L7RgtC+0LosINC30LDQstC10YDRiNCw0Y7RidC40LnRgdGPINC/0L7RgdC70LUg0YDQtdC00LjRgNC10LrRgtCwLiDQrdC80LjRgtC40YIg0L7RiNC40LHQutGDIHtAbGluayBIdHRwRXJyb3JSZXNwb25zZX0g0YEg0LrQvtC00L7QvCA0MDQsINC10YHQu9C4INGA0L7QtNC40YLQtdC70YzRgdC60LDRjyDQutCw0YLQtdCz0L7RgNC40Y8g0L3QtSDQvdCw0LnQtNC10L3QsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlZGlyZWN0VG9QYXJlbnRDYXRlZ29yeSQocGFyZW50Q2F0ZWdvcnkkOiBPYnNlcnZhYmxlPFNjSVBhcmVudENhdGVnb3J5UmVkaXJlY3Q+KTogT2JzZXJ2YWJsZTxuZXZlcj4ge1xuICAgICAgICByZXR1cm4gcGFyZW50Q2F0ZWdvcnkkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHBhcmVudENhdGVnb3J5KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gcGFyZW50Q2F0ZWdvcnlbdGhpcy5pZE9yU2x1Z107XG5cbiAgICAgICAgICAgICAgICAvLyDQoNC+0LTQuNGC0LXQu9GM0YHQutCw0Y8g0LrQsNGC0LXQs9C+0YDQuNGPINC90LUg0L3QsNC50LTQtdC90LAg4oCUINC+0YLQvtCx0YDQsNC20LDQtdC8INGB0YLRgNCw0L3QuNGG0YMg0L7RiNC40LHQutC4LlxuICAgICAgICAgICAgICAgIGlmICghdHVpSXNQcmVzZW50KHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEh0dHBFcnJvclJlc3BvbnNlKHsgc3RhdHVzOiA0MDQgfSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHVybFRyZWUgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnL2NhdGFsb2cnLCB0YXJnZXRdKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFVybCA9IHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh1cmxUcmVlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2VydmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNTUiDRgSDQtNC+0YHRgtGD0L/QvdGL0LwgUkVTUE9OU0UgKNC/0YDQvtC0LdGB0LXRgNCy0LXRgCk6INCy0YvRgdGC0LDQstC70Y/QtdC8IDMwMiDQuCDQt9Cw0LPQvtC70L7QstC+0LogTG9jYXRpb24g0LTQu9GPINC60L7RgNGA0LXQutGC0L3QvtCz0L4g0YDQtdC00LjRgNC10LrRgtCwINC/0L7QuNGB0LrQvtCy0YvRhSDQsdC+0YLQvtCyLlxuICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAvLyBBbmd1bGFyIDIxICjQvNC40LPRgNCw0YbQuNGPIFNTUik6INC/0YDQuCDQv9C10YDQtdGF0L7QtNC1IHNlcnZlci50cyDQvdCwIEFuZ3VsYXJOb2RlQXBwRW5naW5lINCy0YvRgdGC0LDQstC70Y/QudGC0LUg0YHRgtCw0YLRg9GBL9C30LDQs9C+0LvQvtCy0L7QulxuICAgICAgICAgICAgICAgICAgICAvLyDRh9C10YDQtdC3INC90LDRgtC40LLQvdGL0LkgUkVTUE9OU0VfSU5JVCDQstC80LXRgdGC0L4gRXhwcmVzcy3QvNC10YLQvtC00L7QsiByZXNwb25zZS5zZXRIZWFkZXIvcmVzcG9uc2Uuc3RhdHVzOlxuICAgICAgICAgICAgICAgICAgICAvLyAgIGlmICh0aGlzLnJlc3BvbnNlSW5pdCkgeyB0aGlzLnJlc3BvbnNlSW5pdC5zdGF0dXMgPSAzMDI7ICh0aGlzLnJlc3BvbnNlSW5pdC5oZWFkZXJzIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pWydMb2NhdGlvbiddID0gdGFyZ2V0VXJsOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlLnNldEhlYWRlcignTG9jYXRpb24nLCB0YXJnZXRVcmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZS5zdGF0dXMoMzAyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU1NSINCx0LXQtyBSRVNQT05TRSAo0L3QsNC/0YDQuNC80LXRgCwgZGV2LdGB0LXRgNCy0LXRgCBuZyBzZXJ2ZSk6INGB0LXRgNCy0LXRgNC90YvQuSDRgNC10LTQuNGA0LXQutGCINC90LXQstC+0LfQvNC+0LbQtdC9LFxuICAgICAgICAgICAgICAgICAgICAvLyDQv9C+0Y3RgtC+0LzRgyDQvtGC0L7QsdGA0LDQttCw0LXQvCDRgdGC0YDQsNC90LjRhtGDINC+0YjQuNCx0LrQuCwg0LrQsNC6INC00L4g0LLQvdC10LTRgNC10L3QuNGPINGA0LXQtNC40YDQtdC60YLQsCwg0LLQvNC10YHRgtC+INCx0LXRgdC60L7QvdC10YfQvdC+0LPQviDQu9C+0LDQtNC10YDQsC5cbiAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgLy8gQW5ndWxhciAyMSAo0LzQuNCz0YDQsNGG0LjRjyBTU1IpOiDRjdGC0L7RgiDRhNC+0LvQsdGN0Log0L3Rg9C20LXQvSwg0L/QvtC60LAgbmcgc2VydmUg0L3QtSDQuNGB0L/QvtC70L3Rj9C10YIgc2VydmVyLnRzICjQvtC9INC90LAgQ29tbW9uRW5naW5lKS5cbiAgICAgICAgICAgICAgICAgICAgLy8g0J/QvtGB0LvQtSDQvNC40LPRgNCw0YbQuNC4IHNlcnZlci50cyDQvdCwIGNyZWF0ZU5vZGVSZXF1ZXN0SGFuZGxlciBkZXYt0YHQtdGA0LLQtdGAINC90LDRh9C90ZHRgiDQuNGB0L/QvtC70L3Rj9GC0Ywgc2VydmVyLnRzLCDQuCBSRVNQT05TRS9SRVNQT05TRV9JTklUXG4gICAgICAgICAgICAgICAgICAgIC8vINGB0YLQsNC90LXRgiDQtNC+0YHRgtGD0L/QtdC9INCyIG5nIHNlcnZlIOKAlCDRgtC+0LPQtNCwINGN0YLRgyDQstC10YLQutGDINGBIHRocm93RXJyb3IoNDA0KSDQvNC+0LbQvdC+INGD0LTQsNC70LjRgtGMLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgSHR0cEVycm9yUmVzcG9uc2UoeyBzdGF0dXM6IDQwNCB9KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8g0JHRgNCw0YPQt9C10YA6INC/0L7RgtC+0Log0LTQsNC90L3Ri9GFINC60LDRgtC10LPQvtGA0LjQuCAoU0NfQ0FURUdPUllfSU5GTykg0LfQsNCy0LXRgNGI0LDQtdGC0YHRjyDQvtGI0LjQsdC60L7QuSDQv9GA0LggNDA0INC4INC90LUg0LLQvtC30L7QsdC90L7QstC70Y/QtdGC0YHRj1xuICAgICAgICAgICAgICAgIC8vINC/0YDQuCDQvdCw0LLQuNCz0LDRhtC40Lgg0LIg0YDQsNC80LrQsNGFINGC0L7Qs9C+INC20LUg0LzQsNGA0YjRgNGD0YLQsCwg0L/QvtGN0YLQvtC80YMg0YDQtdC00LjRgNC10LrRgiDQstGL0L/QvtC70L3Rj9C10YLRgdGPINC/0L7Qu9C90L7QuSDQv9C10YDQtdC30LDQs9GA0YPQt9C60L7QuSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uLnJlcGxhY2Ug0L3QtSDQtNC+0LHQsNCy0LvRj9C10YIg0LfQsNC/0LjRgdGMINCyINC40YHRgtC+0YDQuNGOLCDRh9GC0L7QsdGLINC60L3QvtC/0LrQsCDCq9Cd0LDQt9Cw0LTCuyDQvdC1INCy0L7Qt9Cy0YDQsNGJ0LDQu9CwINC90LAg0L3QtdC00L7RgdGC0YPQv9C90YPRjiDRgdGC0YDQsNC90LjRhtGDLlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gQW5ndWxhciAyMSAo0LzQuNCz0YDQsNGG0LjRjyBTU1IpOiDRjdGC0YMg0YHRgtGA0L7QutGDINCw0L/Qs9GA0LXQudC0INCd0JUg0YHQvdC40LzQsNC10YIg4oCUINC/0YDQuNGH0LjQvdCwINCyINGA0LDQvdGC0LDQudC80LUg0L/RgNC40LvQvtC20LXQvdC40Y8gKNC80ZHRgNGC0LLRi9C5INC/0L7RgtC+0LpcbiAgICAgICAgICAgICAgICAvLyBTQ19DQVRFR09SWV9JTkZPINC/0YDQuCBTUEEt0L3QsNCy0LjQs9Cw0YbQuNC4KSwg0LAg0L3QtSDQsiBTU1IuINCS0LXRgNC90YPRgtGMIFNQQS3QvdCw0LLQuNCz0LDRhtC40Y4gKHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKSDQvNC+0LbQvdC+INGC0L7Qu9GM0LrQvlxuICAgICAgICAgICAgICAgIC8vINGB0LTQtdC70LDQsiBTQ19DQVRFR09SWV9JTkZPINGD0YHRgtC+0LnRh9C40LLRi9C8INC6IDQwNCAo0LvQvtCy0LjRgtGMINC+0YjQuNCx0LrRgyDQstC90YPRgtGA0Lggc3dpdGNoTWFwKSDQu9C40LHQviDRg9C90LXRgdGPINGA0LXQtNC40YDQtdC60YIg0LIgZ3VhcmQgKyBSZWRpcmVjdENvbW1hbmQuXG4gICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudC5sb2NhdGlvbi5yZXBsYWNlKHRhcmdldFVybCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1jb21wYW55LWJhc2UtaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29uZmlnL3NjLWktY29tcGFueS1iYXNlLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog0JHQsNC30L7QstCw0Y8g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0LrQvtC80L/QsNC90LjQuC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY0lDb21wYW55QmFzZUluZm8ge1xuICAgIC8qKlxuICAgICAqINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQkNC00YDQtdGBINC60L7QvNC/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1jb21wYW55LWJhc2UtaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29uZmlnL3NjLWktY29tcGFueS1iYXNlLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog0JHQsNC30L7QstCw0Y8g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0LrQvtC80L/QsNC90LjQuC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY0lDb21wYW55QmFzZUluZm8ge1xuICAgIC8qKlxuICAgICAqINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQkNC00YDQtdGBINC60L7QvNC/0LDQvdC40LguXG4gICAgICovXG4gICAgcmVhZG9ubHkgYWRkcmVzczoge1xuICAgICAgICAvKipcbiAgICAgICAgICog0KHRgtGA0LDQvdCwLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgY291bnRyeTogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQoNC10LPQuNC+0L0uXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAgICAgICAvKipcbiAgICAgICAgICog0J3QsNGB0LXQu9C10L3QvdGL0Lkg0L/Rg9C90LrRgi5cbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGxvY2FsaXR5OiBzdHJpbmc7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCj0LvQuNGG0LAsINC00L7QvCwg0LrQvtGA0L/Rg9GBLCDRgdGC0YDQvtC10L3QuNC1INC4INGCLiDQvy4gKNGC0L4g0LXRgdGC0Ywg0LDQtNGA0LXRgSDRgSDRgtC+0YfQvdC+0YHRgtGM0Y4g0LTQviDQt9C00LDQvdC40Y8pLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgc3RyZWV0QWRkcmVzczogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQn9C+0LTRitC10LfQtCwg0Y3RgtCw0LYsINC+0YTQuNGBINC4INGCLiDQvy4gKNGC0L4g0LXRgdGC0Ywg0YHQstC10LTQtdC90LjRjyDQviDQvNC10YHRgtC+0L3QsNGF0L7QttC00LXQvdC40Lgg0LLQvdGD0YLRgNC4INC30LTQsNC90LjRjyksINC90LDQt9Cy0LDQvdC40LUg0YLQvtGA0LPQvtCy0L7Qs9C+INC40LvQuCDQsdC40LfQvdC10YEt0YbQtdC90YLRgNCwLCDQsCDRgtCw0LrQttC1INC70Y7QsdC+0LUg0L7Qv9C40YHQsNC90LjQtSwg0L3QtSDRj9Cy0LvRj9GO0YnQtdC10YHRjyDRgtC+0YfQvdGL0Lwg0LDQtNGA0LXRgdC+0LwuXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBleHRlbmRlZEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCf0L7Rh9GC0L7QstGL0Lkg0LjQvdC00LXQutGBLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgcG9zdGFsQ29kZTogc3RyaW5nO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiDQrtGA0LjQtNC40YfQtdGB0LrQuNC5INCw0LTRgNC10YEg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICByZWFkb25seSBsZWdhbEFkZHJlc3M6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCQ0LTRgNC10YHQsCDRgdC60LvQsNC00L7QsiDRgdCw0LzQvtCy0YvQstC+0LfQsCDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHdhcmVob3VzZUFkZHJlc3M6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICog0JDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0Ysg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICByZWFkb25seSBtYWlsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQotC10LvQtdGE0L7QvSDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHBob25lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQlNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9C5INGC0LXQu9C10YTQvtC9LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHNlY29uZGFyeVBob25lPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog0J7Qk9Cg0J0gKNCe0YHQvdC+0LLQvdC+0Lkg0LPQvtGB0YPQtNCw0YDRgdGC0LLQtdC90L3Ri9C5INGA0LXQs9C40YHRgtGA0LDRhtC40L7QvdC90YvQuSDQvdC+0LzQtdGAKS5cbiAgICAgKi9cbiAgICByZWFkb25seSBvZ3JuOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQmNCd0J0gKNCY0LTQtdC90YLQuNGE0LjQutCw0YbQuNC+0L3QvdGL0Lkg0L3QvtC80LXRgCDQvdCw0LvQvtCz0L7Qv9C70LDRgtC10LvRjNGJ0LjQutCwKS5cbiAgICAgKi9cbiAgICByZWFkb25seSBpbm46IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSBIUi3QvtGC0LTQtdC70LAg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICByZWFkb25seSBocj86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLIEhSLdC+0YLQtNC10LvQsCDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgbWFpbDogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQotC10LvQtdGE0L7QvSBIUi3QvtGC0LTQtdC70LAg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IHBob25lOiBzdHJpbmc7XG4gICAgfTtcbn1cbiJdfQ==
|
|
@@ -14,6 +14,12 @@ export const IS_SERVER = new InjectionToken('IS_SERVER', {
|
|
|
14
14
|
});
|
|
15
15
|
/**
|
|
16
16
|
* Токен для получения данных об ответе на запрос.
|
|
17
|
+
*
|
|
18
|
+
* Angular 21 (миграция SSR): это кастомный Express-токен, который провайдится в `server.ts` через CommonEngine.
|
|
19
|
+
* Фреймворк предоставляет нативный аналог `RESPONSE_INIT` (`InjectionToken<ResponseInit | null>` из `@angular/core`)
|
|
20
|
+
* для статуса и заголовков SSR-ответа. При миграции `server.ts` с CommonEngine на `AngularNodeAppEngine` +
|
|
21
|
+
* `createNodeRequestHandler` переходите на `RESPONSE_INIT` и откажитесь от этого токена. Пока `server.ts` на
|
|
22
|
+
* CommonEngine (как на upgrade-ветке `feature/12864_angular_upgrade`) — токен остаётся без изменений.
|
|
17
23
|
*/
|
|
18
24
|
export const RESPONSE = new InjectionToken('RESPONSE');
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NyLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvcHJvdmlkZXJzL3Nzci5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3BFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFVLFlBQVksRUFBRTtJQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0NBQ3hELENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUFVLFdBQVcsRUFBRTtJQUM5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0NBQ3ZELENBQUMsQ0FBQztBQUVIOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFXLFVBQVUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIsIGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5cbi8qKlxuICog0KLQvtC60LXQvSDQtNC70Y8g0L/QvtC70YPRh9C10L3QuNGPINC/0YDQuNC30L3QsNC60LAsINGH0YLQviDRgdC60YDQuNC/0YIg0LLRi9C/0L7Qu9C90Y/QtdGC0YHRjyDQsiDQsdGA0LDRg9C30LXRgNC1LlxuICovXG5leHBvcnQgY29uc3QgSVNfQlJPV1NFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPignSVNfQlJPV1NFUicsIHtcbiAgICBmYWN0b3J5OiAoKSA9PiBpc1BsYXRmb3JtQnJvd3NlcihpbmplY3QoUExBVEZPUk1fSUQpKSxcbn0pO1xuXG4vKipcbiAqINCi0L7QutC10L0g0LTQu9GPINC/0L7Qu9GD0YfQtdC90LjRjyDQv9GA0LjQt9C90LDQutCwLCDRh9GC0L4g0YHQutGA0LjQv9GCINCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0L3QsCDRgdC10YDQstC10YDQtS5cbiAqL1xuZXhwb3J0IGNvbnN0IElTX1NFUlZFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPignSVNfU0VSVkVSJywge1xuICAgIGZhY3Rvcnk6ICgpID0+IGlzUGxhdGZvcm1TZXJ2ZXIoaW5qZWN0KFBMQVRGT1JNX0lEKSksXG59KTtcblxuLyoqXG4gKiDQotC+0LrQtdC9INC00LvRjyDQv9C+0LvRg9GH0LXQvdC40Y8g0LTQsNC90L3Ri9GFINC+0LEg0L7RgtCy0LXRgtC1INC90LAg0LfQsNC/0YDQvtGBLlxuICpcbiAqIEFuZ3VsYXIgMjEgKNC80LjQs9GA0LDRhtC40Y8gU1NSKTog0Y3RgtC+INC60LDRgdGC0L7QvNC90YvQuSBFeHByZXNzLdGC0L7QutC10L0sINC60L7RgtC+0YDRi9C5INC/0YDQvtCy0LDQudC00LjRgtGB0Y8g0LIgYHNlcnZlci50c2Ag0YfQtdGA0LXQtyBDb21tb25FbmdpbmUuXG4gKiDQpNGA0LXQudC80LLQvtGA0Log0L/RgNC10LTQvtGB0YLQsNCy0LvRj9C10YIg0L3QsNGC0LjQstC90YvQuSDQsNC90LDQu9C+0LMgYFJFU1BPTlNFX0lOSVRgIChgSW5qZWN0aW9uVG9rZW48UmVzcG9uc2VJbml0IHwgbnVsbD5gINC40LcgYEBhbmd1bGFyL2NvcmVgKVxuICog0LTQu9GPINGB0YLQsNGC0YPRgdCwINC4INC30LDQs9C+0LvQvtCy0LrQvtCyIFNTUi3QvtGC0LLQtdGC0LAuINCf0YDQuCDQvNC40LPRgNCw0YbQuNC4IGBzZXJ2ZXIudHNgINGBIENvbW1vbkVuZ2luZSDQvdCwIGBBbmd1bGFyTm9kZUFwcEVuZ2luZWAgK1xuICogYGNyZWF0ZU5vZGVSZXF1ZXN0SGFuZGxlcmAg0L/QtdGA0LXRhdC+0LTQuNGC0LUg0L3QsCBgUkVTUE9OU0VfSU5JVGAg0Lgg0L7RgtC60LDQttC40YLQtdGB0Ywg0L7RgiDRjdGC0L7Qs9C+INGC0L7QutC10L3QsC4g0J/QvtC60LAgYHNlcnZlci50c2Ag0L3QsFxuICogQ29tbW9uRW5naW5lICjQutCw0Log0L3QsCB1cGdyYWRlLdCy0LXRgtC60LUgYGZlYXR1cmUvMTI4NjRfYW5ndWxhcl91cGdyYWRlYCkg4oCUINGC0L7QutC10L0g0L7RgdGC0LDRkdGC0YHRjyDQsdC10Lcg0LjQt9C80LXQvdC10L3QuNC5LlxuICovXG5leHBvcnQgY29uc3QgUkVTUE9OU0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48UmVzcG9uc2U+KCdSRVNQT05TRScpO1xuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i1 from 'rxjs';
|
|
2
|
-
import { of, startWith as startWith$1, Subject, ReplaySubject, partition, combineLatest, map as map$1, debounceTime, switchMap, tap, filter, shareReplay, distinctUntilChanged, BehaviorSubject, materialize, dematerialize, merge, distinctUntilKeyChanged, skip, first, catchError as catchError$1, throwError, expand, takeWhile, toArray, EMPTY,
|
|
2
|
+
import { of, startWith as startWith$1, Subject, ReplaySubject, partition, combineLatest, map as map$1, debounceTime, switchMap, tap, filter, shareReplay, distinctUntilChanged, BehaviorSubject, materialize, dematerialize, merge, distinctUntilKeyChanged, skip, first, catchError as catchError$1, throwError, expand, takeWhile, toArray, EMPTY, take, defaultIfEmpty, concatMap, finalize, takeUntil, interval, share, scan } from 'rxjs';
|
|
3
3
|
import { map, startWith, catchError } from 'rxjs/operators';
|
|
4
4
|
import { parseISO, parse, isValid, format } from 'date-fns';
|
|
5
5
|
import { isString, isNil, isMatch, isArray, get } from 'lodash-es';
|
|
@@ -269,6 +269,12 @@ const IS_SERVER = new InjectionToken('IS_SERVER', {
|
|
|
269
269
|
});
|
|
270
270
|
/**
|
|
271
271
|
* Токен для получения данных об ответе на запрос.
|
|
272
|
+
*
|
|
273
|
+
* Angular 21 (миграция SSR): это кастомный Express-токен, который провайдится в `server.ts` через CommonEngine.
|
|
274
|
+
* Фреймворк предоставляет нативный аналог `RESPONSE_INIT` (`InjectionToken<ResponseInit | null>` из `@angular/core`)
|
|
275
|
+
* для статуса и заголовков SSR-ответа. При миграции `server.ts` с CommonEngine на `AngularNodeAppEngine` +
|
|
276
|
+
* `createNodeRequestHandler` переходите на `RESPONSE_INIT` и откажитесь от этого токена. Пока `server.ts` на
|
|
277
|
+
* CommonEngine (как на upgrade-ветке `feature/12864_angular_upgrade`) — токен остаётся без изменений.
|
|
272
278
|
*/
|
|
273
279
|
const RESPONSE = new InjectionToken('RESPONSE');
|
|
274
280
|
|
|
@@ -3577,10 +3583,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3577
3583
|
* Сервис редиректа на родительскую категорию при недоступности (HTTP 404) товара или категории.
|
|
3578
3584
|
*
|
|
3579
3585
|
* Запрашивает у бэкенда родительскую категорию недоступной сущности и выполняет редирект:
|
|
3580
|
-
* - на сервере (SSR) — выставляет HTTP-статус 302 и заголовок `Location` для корректного редиректа поисковых ботов;
|
|
3581
|
-
* -
|
|
3586
|
+
* - на сервере (SSR) при доступном {@link RESPONSE} — выставляет HTTP-статус 302 и заголовок `Location` для корректного редиректа поисковых ботов;
|
|
3587
|
+
* - на сервере без {@link RESPONSE} (например, dev-сервер `ng serve`) — завершает поток ошибкой 404, чтобы отобразилась страница ошибки;
|
|
3588
|
+
* - в браузере — выполняет полную навигацию на родительскую категорию.
|
|
3582
3589
|
*
|
|
3583
|
-
* Если родительская категория не найдена, поток завершается ошибкой {@link HttpErrorResponse},
|
|
3590
|
+
* Если родительская категория не найдена, поток также завершается ошибкой {@link HttpErrorResponse},
|
|
3584
3591
|
* чтобы вызывающий код отобразил страницу ошибки.
|
|
3585
3592
|
*/
|
|
3586
3593
|
class ScCatalogRedirectService {
|
|
@@ -3603,8 +3610,18 @@ class ScCatalogRedirectService {
|
|
|
3603
3610
|
this.isServer = inject(IS_SERVER);
|
|
3604
3611
|
/**
|
|
3605
3612
|
* Данные об ответе на запрос (доступны только на сервере при SSR).
|
|
3613
|
+
*
|
|
3614
|
+
* Angular 21 (миграция SSR): {@link RESPONSE} — кастомный Express-токен, который провайдится в `server.ts`
|
|
3615
|
+
* через CommonEngine. На upgrade-ветке `server.ts` остался на CommonEngine, поэтому при слиянии здесь
|
|
3616
|
+
* ничего менять не нужно. Если `server.ts` мигрируют на `AngularNodeAppEngine` + `createNodeRequestHandler`,
|
|
3617
|
+
* замените {@link RESPONSE} на нативный `RESPONSE_INIT` (`InjectionToken<ResponseInit | null>` из `@angular/core`);
|
|
3618
|
+
* см. серверную ветку в {@link redirectToParentCategory$}.
|
|
3606
3619
|
*/
|
|
3607
3620
|
this.response = inject(RESPONSE, { optional: true });
|
|
3621
|
+
/**
|
|
3622
|
+
* Документ текущей страницы.
|
|
3623
|
+
*/
|
|
3624
|
+
this.document = inject(DOCUMENT);
|
|
3608
3625
|
}
|
|
3609
3626
|
/**
|
|
3610
3627
|
* Выполняет редирект на родительскую категорию недоступной категории.
|
|
@@ -3639,13 +3656,35 @@ class ScCatalogRedirectService {
|
|
|
3639
3656
|
return throwError(() => new HttpErrorResponse({ status: 404 }));
|
|
3640
3657
|
}
|
|
3641
3658
|
const urlTree = this.router.createUrlTree(['/catalog', target]);
|
|
3659
|
+
const targetUrl = this.router.serializeUrl(urlTree);
|
|
3642
3660
|
if (this.isServer) {
|
|
3643
|
-
// SSR: выставляем 302 и заголовок Location для корректного редиректа поисковых ботов.
|
|
3644
|
-
|
|
3645
|
-
|
|
3646
|
-
|
|
3661
|
+
// SSR с доступным RESPONSE (прод-сервер): выставляем 302 и заголовок Location для корректного редиректа поисковых ботов.
|
|
3662
|
+
//
|
|
3663
|
+
// Angular 21 (миграция SSR): при переходе server.ts на AngularNodeAppEngine выставляйте статус/заголовок
|
|
3664
|
+
// через нативный RESPONSE_INIT вместо Express-методов response.setHeader/response.status:
|
|
3665
|
+
// if (this.responseInit) { this.responseInit.status = 302; (this.responseInit.headers as Record<string, string>)['Location'] = targetUrl; }
|
|
3666
|
+
if (this.response) {
|
|
3667
|
+
this.response.setHeader('Location', targetUrl);
|
|
3668
|
+
this.response.status(302);
|
|
3669
|
+
return EMPTY;
|
|
3670
|
+
}
|
|
3671
|
+
// SSR без RESPONSE (например, dev-сервер ng serve): серверный редирект невозможен,
|
|
3672
|
+
// поэтому отображаем страницу ошибки, как до внедрения редиректа, вместо бесконечного лоадера.
|
|
3673
|
+
//
|
|
3674
|
+
// Angular 21 (миграция SSR): этот фолбэк нужен, пока ng serve не исполняет server.ts (он на CommonEngine).
|
|
3675
|
+
// После миграции server.ts на createNodeRequestHandler dev-сервер начнёт исполнять server.ts, и RESPONSE/RESPONSE_INIT
|
|
3676
|
+
// станет доступен в ng serve — тогда эту ветку с throwError(404) можно удалить.
|
|
3677
|
+
return throwError(() => new HttpErrorResponse({ status: 404 }));
|
|
3647
3678
|
}
|
|
3648
|
-
|
|
3679
|
+
// Браузер: поток данных категории (SC_CATEGORY_INFO) завершается ошибкой при 404 и не возобновляется
|
|
3680
|
+
// при навигации в рамках того же маршрута, поэтому редирект выполняется полной перезагрузкой страницы.
|
|
3681
|
+
// location.replace не добавляет запись в историю, чтобы кнопка «Назад» не возвращала на недоступную страницу.
|
|
3682
|
+
//
|
|
3683
|
+
// Angular 21 (миграция SSR): эту строку апгрейд НЕ снимает — причина в рантайме приложения (мёртвый поток
|
|
3684
|
+
// SC_CATEGORY_INFO при SPA-навигации), а не в SSR. Вернуть SPA-навигацию (router.navigateByUrl) можно только
|
|
3685
|
+
// сделав SC_CATEGORY_INFO устойчивым к 404 (ловить ошибку внутри switchMap) либо унеся редирект в guard + RedirectCommand.
|
|
3686
|
+
this.document.location.replace(targetUrl);
|
|
3687
|
+
return EMPTY;
|
|
3649
3688
|
}));
|
|
3650
3689
|
}
|
|
3651
3690
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScCatalogRedirectService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|