@snabcentr/client-core 2.63.0 → 2.63.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.
- package/esm2022/catalog/tokens/sc-count-first-discounted-products.mjs +5 -3
- package/esm2022/httpInterceptors/tokens/sc-guest-endpoints.mjs +5 -3
- package/esm2022/httpInterceptors/tokens/sc-guest-parameter-name.mjs +5 -3
- package/esm2022/providers/sc-id-or-slug-in-route.mjs +5 -3
- package/esm2022/providers/sc-product-pagination-options.mjs +8 -5
- package/esm2022/providers/ssr.providers.mjs +7 -4
- package/esm2022/services/sc-seo.service.mjs +28 -2
- package/esm2022/tokens/notification-options.mjs +5 -3
- package/esm2022/tokens/sc-date-format.mjs +3 -3
- package/esm2022/tokens/sc-default-page-meta.mjs +3 -3
- package/esm2022/tokens/sc-feedback-api.mjs +3 -3
- package/esm2022/tokens/sc-linear-values-token.mjs +5 -3
- package/esm2022/user/tokens/sc-user-providers.mjs +7 -6
- package/esm2022/warehouse/services/sc-warehouse.service.mjs +2 -2
- package/fesm2022/snabcentr-client-core.mjs +67 -19
- package/fesm2022/snabcentr-client-core.mjs.map +1 -1
- package/httpInterceptors/tokens/sc-guest-endpoints.d.ts +2 -1
- package/httpInterceptors/tokens/sc-guest-parameter-name.d.ts +2 -1
- package/package.json +1 -1
- package/providers/sc-id-or-slug-in-route.d.ts +1 -1
- package/services/sc-seo.service.d.ts +14 -0
- package/tokens/notification-options.d.ts +2 -1
- package/tokens/sc-default-page-meta.d.ts +2 -1
- package/tokens/sc-linear-values-token.d.ts +2 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, PLATFORM_ID, Injectable, Inject, Optional, LOCALE_ID, Pipe, EventEmitter, Component, ChangeDetectionStrategy, HostBinding, Input, NgModule } from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, PLATFORM_ID, Injectable, Inject, Optional, LOCALE_ID, Pipe, EventEmitter, Component, ChangeDetectionStrategy, HostBinding, Input, NgModule, RendererFactory2 } from '@angular/core';
|
|
3
3
|
import { WA_LOCAL_STORAGE, WA_USER_AGENT, WA_WINDOW } from '@ng-web-apis/common';
|
|
4
4
|
import { filterByKey, toValue, WA_STORAGE_EVENT, StorageService } from '@ng-web-apis/storage';
|
|
5
5
|
import * as i1 from 'rxjs';
|
|
6
6
|
import { startWith, Subject, ReplaySubject, partition, combineLatest, map, debounceTime, switchMap, of, tap, filter, shareReplay, distinctUntilChanged, distinctUntilKeyChanged, skip, first, BehaviorSubject, materialize, dematerialize, expand, takeWhile, toArray, catchError, throwError, concatMap, finalize, takeUntil, interval, share, scan } from 'rxjs';
|
|
7
7
|
import { isPlatformBrowser, isPlatformServer, DOCUMENT, formatDate } from '@angular/common';
|
|
8
|
-
import { tuiCreateTokenFromFactory, tuiCreateToken, tuiIsPresent, TuiDay, tuiPure, TUI_TRUE_HANDLER } from '@taiga-ui/cdk';
|
|
9
8
|
import * as i1$1 from '@angular/common/http';
|
|
10
9
|
import { HttpContextToken, HttpContext, HttpHeaders, HttpClient, HttpParams, HttpResponse, HttpErrorResponse } from '@angular/common/http';
|
|
11
10
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
11
|
+
import { tuiIsPresent, TuiDay, tuiPure, TUI_TRUE_HANDLER } from '@taiga-ui/cdk';
|
|
12
12
|
import { tuiCleanObject } from '@taiga-ui/addon-doc/utils';
|
|
13
13
|
import { __decorate } from 'tslib';
|
|
14
14
|
import * as i2 from '@angular/router';
|
|
@@ -64,11 +64,15 @@ const SC_REFRESH_AUTH_TOKEN_STORAGE_KEY = new InjectionToken('refreshAuthTokenSt
|
|
|
64
64
|
/**
|
|
65
65
|
* Токен для получения признака, что скрипт выполняется в браузере.
|
|
66
66
|
*/
|
|
67
|
-
const IS_BROWSER =
|
|
67
|
+
const IS_BROWSER = new InjectionToken('IS_BROWSER', {
|
|
68
|
+
factory: () => isPlatformBrowser(inject(PLATFORM_ID)),
|
|
69
|
+
});
|
|
68
70
|
/**
|
|
69
71
|
* Токен для получения признака, что скрипт выполняется на сервере.
|
|
70
72
|
*/
|
|
71
|
-
const IS_SERVER =
|
|
73
|
+
const IS_SERVER = new InjectionToken('IS_SERVER', {
|
|
74
|
+
factory: () => isPlatformServer(inject(PLATFORM_ID)),
|
|
75
|
+
});
|
|
72
76
|
/**
|
|
73
77
|
* Токен для получения данных об ответе на запрос.
|
|
74
78
|
*/
|
|
@@ -251,7 +255,9 @@ const SC_AUTH_AS_CLIENT_DEFAULT_OPTIONS = {
|
|
|
251
255
|
/**
|
|
252
256
|
* Параметры авторизации под клиентом.
|
|
253
257
|
*/
|
|
254
|
-
const SC_AUTH_AS_CLIENT_OPTIONS =
|
|
258
|
+
const SC_AUTH_AS_CLIENT_OPTIONS = new InjectionToken('SC_AUTH_AS_CLIENT_OPTIONS', {
|
|
259
|
+
factory: () => SC_AUTH_AS_CLIENT_DEFAULT_OPTIONS,
|
|
260
|
+
});
|
|
255
261
|
|
|
256
262
|
/**
|
|
257
263
|
* Токен внедрения времени жизни данных.
|
|
@@ -276,7 +282,7 @@ const SC_CONFIGURATOR_SETTINGS = new InjectionToken('SC_CONFIGURATOR_SETTINGS');
|
|
|
276
282
|
/**
|
|
277
283
|
* Токен внедрения мета-данных страницы по умолчанию.
|
|
278
284
|
*/
|
|
279
|
-
const SC_DEFAULT_PAGE_META =
|
|
285
|
+
const SC_DEFAULT_PAGE_META = new InjectionToken('SC_DEFAULT_PAGE_META');
|
|
280
286
|
|
|
281
287
|
/**
|
|
282
288
|
* Токен контекста запроса, указывающий на необходимость скрыть уведомление об ошибке.
|
|
@@ -294,7 +300,9 @@ const SC_LINEAR_VALUES = ['пог.м.', 'м.', 'м2'];
|
|
|
294
300
|
/**
|
|
295
301
|
* Токен единиц измерения линейной величины по умолчанию.
|
|
296
302
|
*/
|
|
297
|
-
const SC_LINEAR_VALUES_TOKEN =
|
|
303
|
+
const SC_LINEAR_VALUES_TOKEN = new InjectionToken('SC_LINEAR_VALUES_TOKEN', {
|
|
304
|
+
factory: () => SC_LINEAR_VALUES,
|
|
305
|
+
});
|
|
298
306
|
|
|
299
307
|
/**
|
|
300
308
|
* Токен внедрения пути до изображения 'Товар не найден'.
|
|
@@ -319,12 +327,12 @@ const SC_URLS = new InjectionToken('IUrls');
|
|
|
319
327
|
/**
|
|
320
328
|
* Токен внедрения данных API обратной связи.
|
|
321
329
|
*/
|
|
322
|
-
const SC_FEEDBACK_API =
|
|
330
|
+
const SC_FEEDBACK_API = new InjectionToken('SC_FEEDBACK_API');
|
|
323
331
|
|
|
324
332
|
/**
|
|
325
333
|
* Токен внедрения формата дат.
|
|
326
334
|
*/
|
|
327
|
-
const SC_DATE_FORMAT =
|
|
335
|
+
const SC_DATE_FORMAT = new InjectionToken('SC_DATE_FORMAT');
|
|
328
336
|
|
|
329
337
|
/**
|
|
330
338
|
* Перечисление названий целей метрики используемых для отслеживания действий пользователей.
|
|
@@ -1147,9 +1155,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
1147
1155
|
/**
|
|
1148
1156
|
* Токен потока данных о текущем пользователе.
|
|
1149
1157
|
*/
|
|
1150
|
-
const SC_USER_INFO =
|
|
1151
|
-
|
|
1152
|
-
|
|
1158
|
+
const SC_USER_INFO = new InjectionToken('SC_USER_INFO', {
|
|
1159
|
+
factory: () => inject(ScUserService)
|
|
1160
|
+
.getUserChange$()
|
|
1161
|
+
.pipe(distinctUntilChanged((previous, current) => !current.isGuest && previous.id === current.id), takeUntilDestroyed()),
|
|
1162
|
+
});
|
|
1153
1163
|
|
|
1154
1164
|
/**
|
|
1155
1165
|
* Сервис для работы с баннерами.
|
|
@@ -2438,7 +2448,7 @@ class ScWarehouseService {
|
|
|
2438
2448
|
*/
|
|
2439
2449
|
setWarehouseIdSelectChange(warehouseId) {
|
|
2440
2450
|
this.warehouseIdSelectSubject.next(warehouseId);
|
|
2441
|
-
// this.uiService.setSelectedWarehouseId(warehouseId);
|
|
2451
|
+
// TODO: Доработать this.uiService.setSelectedWarehouseId(warehouseId);
|
|
2442
2452
|
}
|
|
2443
2453
|
/**
|
|
2444
2454
|
* Возвращает {@link Observable} выбранного склада.
|
|
@@ -2829,7 +2839,9 @@ class ScVirtualCategory extends ScSeoResource {
|
|
|
2829
2839
|
/**
|
|
2830
2840
|
* Токен, указывающий число первых записей товаров со скидкой.
|
|
2831
2841
|
*/
|
|
2832
|
-
const SC_COUNT_FIRST_DISCOUNTED_PRODUCTS =
|
|
2842
|
+
const SC_COUNT_FIRST_DISCOUNTED_PRODUCTS = new InjectionToken('SC_COUNT_FIRST_DISCOUNTED_PRODUCTS', {
|
|
2843
|
+
factory: () => 10,
|
|
2844
|
+
});
|
|
2833
2845
|
|
|
2834
2846
|
/**
|
|
2835
2847
|
* Сервис для работы с фильтрами каталога.
|
|
@@ -2874,7 +2886,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
2874
2886
|
/**
|
|
2875
2887
|
* Токен определяющий, идентификатор или символьное обозначение (slug) используется для роутинга и маршрутизации.
|
|
2876
2888
|
*/
|
|
2877
|
-
const SC_ID_OR_SLUG_IN_ROUTE =
|
|
2889
|
+
const SC_ID_OR_SLUG_IN_ROUTE = new InjectionToken('SC_ID_OR_SLUG_IN_ROUTE', {
|
|
2890
|
+
factory: () => 'id',
|
|
2891
|
+
});
|
|
2878
2892
|
|
|
2879
2893
|
/**
|
|
2880
2894
|
* Пайп, возвращающий идентификатор или символьное обозначение (slug) исходя из настроек окружения
|
|
@@ -3765,11 +3779,15 @@ const SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS = {
|
|
|
3765
3779
|
/**
|
|
3766
3780
|
* Токен значений пагинации списка товаров в каталоге по умолчанию.
|
|
3767
3781
|
*/
|
|
3768
|
-
const SC_PRODUCT_PAGINATION_OPTIONS =
|
|
3782
|
+
const SC_PRODUCT_PAGINATION_OPTIONS = new InjectionToken('SC_PRODUCT_PAGINATION_OPTIONS', {
|
|
3783
|
+
factory: () => SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS,
|
|
3784
|
+
});
|
|
3769
3785
|
/**
|
|
3770
3786
|
* Токен {@link EventEmitter} событие нажатия на кнопку "Показать следующие позиции категории".
|
|
3771
3787
|
*/
|
|
3772
|
-
const SC_NEXT_PAGE_PAGINATION_CLICK =
|
|
3788
|
+
const SC_NEXT_PAGE_PAGINATION_CLICK = new InjectionToken('SC_NEXT_PAGE_PAGINATION_CLICK', {
|
|
3789
|
+
factory: () => new EventEmitter(),
|
|
3790
|
+
});
|
|
3773
3791
|
|
|
3774
3792
|
/**
|
|
3775
3793
|
* Сервис поиска по каталогу.
|
|
@@ -5019,12 +5037,16 @@ const SC_CACHE_SETTINGS = new HttpContextToken(() => new ScCacheSettings(false,
|
|
|
5019
5037
|
/**
|
|
5020
5038
|
* Токен списка URL, которые нужно кешировать для гостя.
|
|
5021
5039
|
*/
|
|
5022
|
-
const SC_GUEST_ENDPOINTS_TOKEN =
|
|
5040
|
+
const SC_GUEST_ENDPOINTS_TOKEN = new InjectionToken('SC_GUEST_ENDPOINTS_TOKEN', {
|
|
5041
|
+
factory: () => [],
|
|
5042
|
+
});
|
|
5023
5043
|
|
|
5024
5044
|
/**
|
|
5025
5045
|
* Токен имени параметра, при котором кешируются запросы у гостя.
|
|
5026
5046
|
*/
|
|
5027
|
-
const SC_GUEST_PARAMETER_NAME_TOKEN =
|
|
5047
|
+
const SC_GUEST_PARAMETER_NAME_TOKEN = new InjectionToken('SC_GUEST_PARAMETER_NAME_TOKEN', {
|
|
5048
|
+
factory: () => '',
|
|
5049
|
+
});
|
|
5028
5050
|
|
|
5029
5051
|
/**
|
|
5030
5052
|
* Перехватчик запросов для реализации аутентификации.
|
|
@@ -6893,6 +6915,14 @@ class ScSeoService {
|
|
|
6893
6915
|
* Объект {@link Document}, предоставляющий доступ к DOM страницы.
|
|
6894
6916
|
*/
|
|
6895
6917
|
this.document = inject(DOCUMENT);
|
|
6918
|
+
/**
|
|
6919
|
+
* Фабрика для создания экземпляров {@link Renderer2}.
|
|
6920
|
+
*/
|
|
6921
|
+
this.rendererFactory = inject(RendererFactory2);
|
|
6922
|
+
/**
|
|
6923
|
+
* Экземпляр {@link Renderer2} для безопасной работы с DOM.
|
|
6924
|
+
*/
|
|
6925
|
+
this.renderer = this.rendererFactory.createRenderer(null, null);
|
|
6896
6926
|
/**
|
|
6897
6927
|
* Название компании.
|
|
6898
6928
|
*/
|
|
@@ -7013,6 +7043,24 @@ class ScSeoService {
|
|
|
7013
7043
|
meta: seo?.meta,
|
|
7014
7044
|
};
|
|
7015
7045
|
}
|
|
7046
|
+
/**
|
|
7047
|
+
* Устанавливает тег канонической страницы <link rel="canonical" href="..." />.
|
|
7048
|
+
*
|
|
7049
|
+
* @param url URL который необходимо использовать в качестве ссылки.
|
|
7050
|
+
*/
|
|
7051
|
+
setCanonicalLink(url) {
|
|
7052
|
+
// Удаляем существующий link canonical.
|
|
7053
|
+
const existingLink = this.document.querySelector('link[rel="canonical"]');
|
|
7054
|
+
if (existingLink?.parentNode) {
|
|
7055
|
+
this.renderer.removeChild(existingLink.parentNode, existingLink);
|
|
7056
|
+
}
|
|
7057
|
+
// Создаём и устанавливаем новый тег.
|
|
7058
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
7059
|
+
const link = this.renderer.createElement('link');
|
|
7060
|
+
this.renderer.setAttribute(link, 'rel', 'canonical');
|
|
7061
|
+
this.renderer.setAttribute(link, 'href', url);
|
|
7062
|
+
this.renderer.appendChild(this.document.head, link);
|
|
7063
|
+
}
|
|
7016
7064
|
/**
|
|
7017
7065
|
* Устанавливает title-заголовок страницы.
|
|
7018
7066
|
*
|