@snabcentr/client-core 4.5.0 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -4,7 +4,7 @@ import { map, startWith, catchError } from 'rxjs/operators';
|
|
|
4
4
|
import { parseISO, parse, isValid, format } from 'date-fns';
|
|
5
5
|
import { isString, isNil, isObject, isDate, isMatch, isArray, get, isNumber, isBoolean } from 'lodash-es';
|
|
6
6
|
import * as i0 from '@angular/core';
|
|
7
|
-
import { InjectionToken, inject, PLATFORM_ID, Inject, Optional, Injectable, EventEmitter, DestroyRef, LOCALE_ID, Pipe, RendererFactory2 } from '@angular/core';
|
|
7
|
+
import { InjectionToken, inject, PLATFORM_ID, Inject, Optional, Injectable, EventEmitter, DestroyRef, LOCALE_ID, Pipe, RESPONSE_INIT, RendererFactory2 } from '@angular/core';
|
|
8
8
|
import { WA_LOCAL_STORAGE, WA_USER_AGENT, WA_WINDOW } from '@ng-web-apis/common';
|
|
9
9
|
import { filterByKey, toValue, WA_STORAGE_EVENT, WaStorageService } from '@ng-web-apis/storage';
|
|
10
10
|
import { isPlatformBrowser, isPlatformServer, DOCUMENT, formatDate } from '@angular/common';
|
|
@@ -266,20 +266,6 @@ const IS_BROWSER = new InjectionToken('IS_BROWSER', {
|
|
|
266
266
|
const IS_SERVER = new InjectionToken('IS_SERVER', {
|
|
267
267
|
factory: () => isPlatformServer(inject(PLATFORM_ID)),
|
|
268
268
|
});
|
|
269
|
-
/**
|
|
270
|
-
* Токен для получения данных об ответе на запрос (Express `Response`), доступен только на сервере при SSR.
|
|
271
|
-
*
|
|
272
|
-
* Переходное состояние: `server.ts` приложений сейчас работает на `CommonEngine` из `@angular/ssr/node`,
|
|
273
|
-
* который провайдит этот кастомный токен per-request. `CommonEngine` помечен deprecated; целевой стек —
|
|
274
|
-
* `AngularNodeAppEngine` + `createNodeRequestHandler`. При миграции `server.ts` на этот стек откажитесь от
|
|
275
|
-
* данного токена в пользу нативного `RESPONSE_INIT` (`InjectionToken<ResponseInit | null>` из `@angular/core`):
|
|
276
|
-
* движок провайдит его автоматически и применяет `status`/`headers` к ответу после рендера. До миграции
|
|
277
|
-
* `server.ts` токен остаётся рабочим механизмом SSR-редиректов и менять его не требуется.
|
|
278
|
-
*
|
|
279
|
-
* @deprecated Переходный токен SSR-ответа: при миграции `server.ts` на `AngularNodeAppEngine` будет заменён
|
|
280
|
-
* нативным `RESPONSE_INIT`. Метка-напоминание; до миграции токен остаётся рабочим, удалять/менять не требуется.
|
|
281
|
-
*/
|
|
282
|
-
const RESPONSE = new InjectionToken('RESPONSE');
|
|
283
269
|
|
|
284
270
|
/**
|
|
285
271
|
* Токен внедрения заголовков ключей доступа к API.
|
|
@@ -3585,8 +3571,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
3585
3571
|
* Сервис редиректа на родительскую категорию при недоступности (HTTP 404) товара или категории.
|
|
3586
3572
|
*
|
|
3587
3573
|
* Запрашивает у бэкенда родительскую категорию недоступной сущности и выполняет редирект:
|
|
3588
|
-
* - на сервере (SSR) при доступном
|
|
3589
|
-
* - на сервере без
|
|
3574
|
+
* - на сервере (SSR, RenderMode.Server) при доступном `RESPONSE_INIT` — выставляет HTTP-статус 302 и заголовок `Location` для корректного редиректа поисковых ботов;
|
|
3575
|
+
* - на сервере без `RESPONSE_INIT` (Client/Prerender) — завершает поток ошибкой 404, чтобы отобразилась страница ошибки;
|
|
3590
3576
|
* - в браузере — выполняет полную навигацию на родительскую категорию.
|
|
3591
3577
|
*
|
|
3592
3578
|
* Если родительская категория не найдена, поток также завершается ошибкой {@link HttpErrorResponse},
|
|
@@ -3611,15 +3597,12 @@ class ScCatalogRedirectService {
|
|
|
3611
3597
|
*/
|
|
3612
3598
|
this.isServer = inject(IS_SERVER);
|
|
3613
3599
|
/**
|
|
3614
|
-
*
|
|
3600
|
+
* Инициализатор HTTP-ответа SSR (`status`/`headers`), доступен только при рендере на сервере (RenderMode.Server).
|
|
3615
3601
|
*
|
|
3616
|
-
*
|
|
3617
|
-
*
|
|
3618
|
-
* ничего менять не нужно. Если `server.ts` мигрируют на `AngularNodeAppEngine` + `createNodeRequestHandler`,
|
|
3619
|
-
* замените {@link RESPONSE} на нативный `RESPONSE_INIT` (`InjectionToken<ResponseInit | null>` из `@angular/core`);
|
|
3620
|
-
* см. серверную ветку в {@link redirectToParentCategory$}.
|
|
3602
|
+
* Провайдится движком `@angular/ssr` per-request. Мутации `status`/`headers` до завершения рендера
|
|
3603
|
+
* применяются движком при конструировании финального `Response`. В браузере, при Client/Prerender — `null`.
|
|
3621
3604
|
*/
|
|
3622
|
-
this.
|
|
3605
|
+
this.responseInit = inject(RESPONSE_INIT, { optional: true });
|
|
3623
3606
|
/**
|
|
3624
3607
|
* Документ текущей страницы.
|
|
3625
3608
|
*/
|
|
@@ -3660,22 +3643,17 @@ class ScCatalogRedirectService {
|
|
|
3660
3643
|
const urlTree = this.router.createUrlTree(['/catalog', target]);
|
|
3661
3644
|
const targetUrl = this.router.serializeUrl(urlTree);
|
|
3662
3645
|
if (this.isServer) {
|
|
3663
|
-
// SSR
|
|
3664
|
-
//
|
|
3665
|
-
|
|
3666
|
-
|
|
3667
|
-
|
|
3668
|
-
|
|
3669
|
-
this.
|
|
3670
|
-
this.response.status(302);
|
|
3646
|
+
// SSR в режиме сервера (RenderMode.Server): выставляем 302 и заголовок Location для корректного редиректа
|
|
3647
|
+
// поисковых ботов. responseInit.headers — инстанс Headers, заголовок ставим через .set().
|
|
3648
|
+
if (this.responseInit) {
|
|
3649
|
+
this.responseInit.status = 302;
|
|
3650
|
+
const headers = this.responseInit.headers instanceof Headers ? this.responseInit.headers : new Headers(this.responseInit.headers);
|
|
3651
|
+
headers.set('Location', targetUrl);
|
|
3652
|
+
this.responseInit.headers = headers;
|
|
3671
3653
|
return EMPTY;
|
|
3672
3654
|
}
|
|
3673
|
-
// SSR
|
|
3674
|
-
//
|
|
3675
|
-
//
|
|
3676
|
-
// Angular 21 (миграция SSR): этот фолбэк нужен, пока ng serve не исполняет server.ts (он на CommonEngine).
|
|
3677
|
-
// После миграции server.ts на createNodeRequestHandler dev-сервер начнёт исполнять server.ts, и RESPONSE/RESPONSE_INIT
|
|
3678
|
-
// станет доступен в ng serve — тогда эту ветку с throwError(404) можно удалить.
|
|
3655
|
+
// SSR в режиме Client/Prerender (RESPONSE_INIT отсутствует): серверный редирект невозможен —
|
|
3656
|
+
// завершаем потоком ошибки 404, чтобы отрисовалась страница ошибки, а не висел лоадер.
|
|
3679
3657
|
return throwError(() => new HttpErrorResponse({ status: 404 }));
|
|
3680
3658
|
}
|
|
3681
3659
|
// Браузер: поток данных категории (SC_CATEGORY_INFO) завершается ошибкой при 404 и не возобновляется
|
|
@@ -8519,5 +8497,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
8519
8497
|
* Generated bundle index. Do not edit.
|
|
8520
8498
|
*/
|
|
8521
8499
|
|
|
8522
|
-
export { CATEGORY_PROVIDERS, EMPTY_CART, IS_BROWSER, IS_RUNNING_ON_TERMINAL, IS_SERVER,
|
|
8500
|
+
export { CATEGORY_PROVIDERS, EMPTY_CART, IS_BROWSER, IS_RUNNING_ON_TERMINAL, IS_SERVER, SC_ACCESS_AUTH_TOKEN_STORAGE_KEY, SC_API_KEYS, SC_AUTH_ADD_HEADER_REQUIRED, SC_AUTH_AS_CLIENT_DEFAULT_OPTIONS, SC_AUTH_AS_CLIENT_OPTIONS, SC_CACHE_LIFETIME, SC_CACHE_SETTINGS, SC_CATALOG_ITEM_PAGE_META, SC_CATALOG_ROOT_PAGE_META, SC_CATEGORY_INFO, SC_COMPANY_INFO, SC_COMPANY_NAME, SC_CONFIGURATOR_COMPONENTS, SC_CONFIGURATOR_SETTINGS, SC_COUNT_FIRST_DISCOUNTED_PRODUCTS, SC_COUNT_LAST_NEWS, SC_DATE_FORMAT, SC_DEFAULT_PAGE_META, SC_FEEDBACK_API, SC_GUEST_ENDPOINTS_TOKEN, SC_GUEST_PARAMETER_NAME_TOKEN, SC_GUEST_TOKEN_STORAGE_KEY, SC_ID_OR_SLUG_IN_ROUTE, SC_IS_HEADER_REQUIRED, SC_IS_HIDDEN_ERROR_ALERT, SC_IS_HIDDEN_ERROR_ALERT_HTTP_CONTEXT, SC_IS_LOGOUT_REQUEST, SC_IS_REFRESH_REQUIRED, SC_LINEAR_VALUES, SC_LINEAR_VALUES_TOKEN, SC_MAX_LENGTH_SEARCH_TERM, SC_MIN_LENGTH_SEARCH_TERM, SC_NEXT_PAGE_PAGINATION_CLICK, SC_ORDER_LOADER, SC_ORDER_LOADING, SC_PATH_IMAGE_NOT_FOUND, SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS, SC_PRODUCT_PAGINATION_OPTIONS, SC_REFRESH_AUTH_TOKEN_STORAGE_KEY, SC_RELEASE, SC_UPDATE_INTERVAL, SC_URLS, SC_USER_INFO, SC_VACANCIES_DATA_SOURCE, SC_VIRTUAL_CATEGORY_INFO, SC_VIRTUAL_CATEGORY_PROVIDERS, SEARCH_TERM, SEARCH_TERM_PROVIDERS, ScAuthAsClientGuard, ScAuthInterceptor, ScAuthService, ScBanner, ScBannerService, ScCacheInterceptor, ScCacheSettings, ScCachedData, ScCachedItem, ScCart, ScCartService, ScCatalogFilterService, ScCatalogFormat, ScCatalogItem, ScCatalogRedirectService, ScCatalogService, ScCatalogableItem, ScCategory, ScClientType, ScCodedIdentity, ScConfiguratorService, ScContactsService, ScContragentService, ScConvertInterceptor, ScConvertersService, ScDateFormatInterceptor, ScDeletableNamedIdentity, ScDeliveryAddressService, ScDeliveryCost, ScDeliveryType, ScDocumentInfoNode, ScDocumentInfoTypesEnum, ScErrorRequestState, ScErrorsInterceptor, ScFavoriteService, ScFeedbackForms, ScFeedbackService, ScFilesService, ScFrequentlyAskedQuestionsService, ScGuestInterceptor, ScHiddenCatalogableItem, ScIBreadcrumbItem, ScISuggestionType, ScIconTypesEnum, ScIdOrSlugGuard, ScIdOrSlugPipe, ScIdentity, ScImage, ScImageHelper, ScLoadingRequestState, ScLocationsService, ScMediaImageTransformerPipe, ScMimeTypes, ScNamedIdentity, ScNews, ScNewsService, ScNotificationActionTypes, ScNotificationLevelNames, ScNotificationsService, ScOpfList, ScOptionsInterceptor, ScOrder, ScOrderBase, ScOrderDraft, ScOrderDraftShort, ScOrderDraftType, ScOrderDraftsService, ScOrderItem, ScOrderShort, ScOrderStateStatus, ScOrdersService, ScPaginationService, ScPaymentStatus, ScPaymentType, ScPhoneService, ScPrimaryCatalogableItem, ScProduct, ScProductTileType, ScQuestionnaireService, ScQuestionnaireStatusEnum, ScReclamationService, ScReclamationStatus, ScRecommendationService, ScReference, ScReferenceName, ScReferencesService, ScRequestStateStatusEnum, ScRequisitesService, ScRouteKeys, ScSearchService, ScSeoService, ScSocialType, ScSuccessRequestState, ScSuggestionService, ScSum, ScTokenService, ScUIService, ScUTMService, ScUnitsHelper, ScUpdatableNamedIdentity, ScUploadedFile, ScUser, ScUserMetadata, ScUserMetrikaGoalsEnum, ScUserMetrikaService, ScUserService, ScUserType, ScVCardService, ScVacanciesList, ScVacanciesService, ScVacancy, ScVerificationService, ScVirtualCategory, ScWarehouseService, SchemaOrgFactory, TERMINAL_PROVIDERS, USER_AGENT_TERMINAL, filterChangedByKey, isExpiredToken, loadingPlaceholder, mapRequestStateToDataOrNull, mapToRequestState, runningOnTerminalFactory, scGetCurrentRoute, scOrderIsLoaded, searchTermFactory };
|
|
8523
8501
|
//# sourceMappingURL=snabcentr-client-core.mjs.map
|