@snabcentr/client-core 4.14.1 → 4.14.3
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.
|
@@ -2,7 +2,7 @@ import * as i1 from 'rxjs';
|
|
|
2
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, timeout, 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
|
-
import { isString, isNil, isObject, isDate, isMatch, isArray, omit, get, isNumber, isBoolean } from 'lodash-es';
|
|
5
|
+
import { isString, constant, isNil, isObject, isDate, isMatch, isArray, omit, get, isNumber, isBoolean } from 'lodash-es';
|
|
6
6
|
import * as i0 from '@angular/core';
|
|
7
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';
|
|
@@ -237,7 +237,7 @@ class ScPrimaryCatalogableItem extends ScHiddenCatalogableItem {
|
|
|
237
237
|
*/
|
|
238
238
|
const SC_ACCESS_AUTH_TOKEN_STORAGE_KEY = new InjectionToken('accessAuthTokenStorageKey', {
|
|
239
239
|
providedIn: 'root',
|
|
240
|
-
factory: (
|
|
240
|
+
factory: constant('AccessAuth-Token'),
|
|
241
241
|
});
|
|
242
242
|
|
|
243
243
|
/**
|
|
@@ -245,7 +245,7 @@ const SC_ACCESS_AUTH_TOKEN_STORAGE_KEY = new InjectionToken('accessAuthTokenStor
|
|
|
245
245
|
*/
|
|
246
246
|
const SC_GUEST_TOKEN_STORAGE_KEY = new InjectionToken('guestTokenStorageKey', {
|
|
247
247
|
providedIn: 'root',
|
|
248
|
-
factory: (
|
|
248
|
+
factory: constant('Guest-Token'),
|
|
249
249
|
});
|
|
250
250
|
|
|
251
251
|
/**
|
|
@@ -253,7 +253,7 @@ const SC_GUEST_TOKEN_STORAGE_KEY = new InjectionToken('guestTokenStorageKey', {
|
|
|
253
253
|
*/
|
|
254
254
|
const SC_REFRESH_AUTH_TOKEN_STORAGE_KEY = new InjectionToken('refreshAuthTokenStorageKey', {
|
|
255
255
|
providedIn: 'root',
|
|
256
|
-
factory: (
|
|
256
|
+
factory: constant('RefreshAuth-Token'),
|
|
257
257
|
});
|
|
258
258
|
|
|
259
259
|
/**
|
|
@@ -430,17 +430,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
430
430
|
*
|
|
431
431
|
* Если указать `false`, то заголовки аутентификации будут проигнорированы при отправке запросов, не зависимо от значения {@link SC_IS_HEADER_REQUIRED}.
|
|
432
432
|
*/
|
|
433
|
-
const SC_AUTH_ADD_HEADER_REQUIRED = new HttpContextToken((
|
|
433
|
+
const SC_AUTH_ADD_HEADER_REQUIRED = new HttpContextToken(constant(true));
|
|
434
434
|
|
|
435
435
|
/**
|
|
436
436
|
* Токен, указывающий, что выполняется запрос выхода из системы.
|
|
437
437
|
*/
|
|
438
|
-
const SC_IS_LOGOUT_REQUEST = new HttpContextToken((
|
|
438
|
+
const SC_IS_LOGOUT_REQUEST = new HttpContextToken(constant(false));
|
|
439
439
|
|
|
440
440
|
/**
|
|
441
441
|
* Токен, указывающий, что выполняется запрос на обновление ключей доступа.
|
|
442
442
|
*/
|
|
443
|
-
const SC_IS_REFRESH_REQUIRED = new HttpContextToken((
|
|
443
|
+
const SC_IS_REFRESH_REQUIRED = new HttpContextToken(constant(false));
|
|
444
444
|
|
|
445
445
|
/**
|
|
446
446
|
* Параметры по-умолчанию авторизации под клиентом.
|
|
@@ -503,13 +503,13 @@ const SC_CONFIGURATOR_SETTINGS = new InjectionToken('SC_CONFIGURATOR_SETTINGS');
|
|
|
503
503
|
* Токен определяющий, идентификатор или символьное обозначение (slug) используется для роутинга и маршрутизации.
|
|
504
504
|
*/
|
|
505
505
|
const SC_ID_OR_SLUG_IN_ROUTE = new InjectionToken('SC_ID_OR_SLUG_IN_ROUTE', {
|
|
506
|
-
factory: (
|
|
506
|
+
factory: constant('id'),
|
|
507
507
|
});
|
|
508
508
|
|
|
509
509
|
/**
|
|
510
510
|
* Токен контекста запроса, указывающий на необходимость скрыть уведомление об ошибке.
|
|
511
511
|
*/
|
|
512
|
-
const SC_IS_HIDDEN_ERROR_ALERT = new HttpContextToken((
|
|
512
|
+
const SC_IS_HIDDEN_ERROR_ALERT = new HttpContextToken(constant(false));
|
|
513
513
|
/**
|
|
514
514
|
* Контекст запроса, указывающий на необходимость скрыть уведомление об ошибке.
|
|
515
515
|
*/
|
|
@@ -1496,6 +1496,7 @@ class ScCatalogItem extends ScCatalogableItem {
|
|
|
1496
1496
|
}
|
|
1497
1497
|
}
|
|
1498
1498
|
|
|
1499
|
+
/* eslint-disable sonarjs/deprecation -- устаревшие члены используются внутри класса до завершения TASK[#10153] */
|
|
1499
1500
|
/**
|
|
1500
1501
|
* Модель данных категории товаров.
|
|
1501
1502
|
*/
|
|
@@ -1930,7 +1931,12 @@ class ScCachedItem {
|
|
|
1930
1931
|
this.lifeTime = lifeTime;
|
|
1931
1932
|
const requestData$ = this.update$.pipe(switchMap(() => item$.pipe(tap(() => {
|
|
1932
1933
|
this.updateCacheTime();
|
|
1933
|
-
}), startWith$1((initialValue ?? null)))), materialize(),
|
|
1934
|
+
}), startWith$1((initialValue ?? null)))), materialize(), tap((notification) => {
|
|
1935
|
+
// Ошибка не кэшируется - следующее обращение инициирует повторный запрос.
|
|
1936
|
+
if (notification.kind === 'E') {
|
|
1937
|
+
this.cachedUntil = Date.now() - 1;
|
|
1938
|
+
}
|
|
1939
|
+
}), shareReplay(1), dematerialize());
|
|
1934
1940
|
this.item$ = merge(this.currentValue$, requestData$).pipe(shareReplay(1));
|
|
1935
1941
|
}
|
|
1936
1942
|
/**
|
|
@@ -2278,7 +2284,7 @@ function runningOnTerminalFactory(userAgentTerminal) {
|
|
|
2278
2284
|
*/
|
|
2279
2285
|
const USER_AGENT_TERMINAL = new InjectionToken('USER_AGENT_TERMINAL', {
|
|
2280
2286
|
providedIn: 'root',
|
|
2281
|
-
factory: (
|
|
2287
|
+
factory: constant(/sc_terminal_w/i),
|
|
2282
2288
|
});
|
|
2283
2289
|
/**
|
|
2284
2290
|
* Провайдеры данных о терминале.
|
|
@@ -3108,7 +3114,7 @@ class ScVirtualCategory extends ScCatalogItem {
|
|
|
3108
3114
|
* Токен, указывающий число первых записей товаров со скидкой.
|
|
3109
3115
|
*/
|
|
3110
3116
|
const SC_COUNT_FIRST_DISCOUNTED_PRODUCTS = new InjectionToken('SC_COUNT_FIRST_DISCOUNTED_PRODUCTS', {
|
|
3111
|
-
factory: ()
|
|
3117
|
+
factory: constant(10),
|
|
3112
3118
|
});
|
|
3113
3119
|
|
|
3114
3120
|
/**
|
|
@@ -3312,6 +3318,7 @@ class ScCatalogService {
|
|
|
3312
3318
|
* Очищает данные каталога, привязанные к текущему пользователю.
|
|
3313
3319
|
*/
|
|
3314
3320
|
clearCache() {
|
|
3321
|
+
// eslint-disable-next-line sonarjs/deprecation -- idCategoryMap удаляется в рамках TASK[#10153]
|
|
3315
3322
|
this.idCategoryMap.clear();
|
|
3316
3323
|
this.categoryMap.clear();
|
|
3317
3324
|
this.productHistoryMap.clear();
|
|
@@ -3329,10 +3336,13 @@ class ScCatalogService {
|
|
|
3329
3336
|
* @param categoryIdOrSlug Идентификатор или slug категории товаров.
|
|
3330
3337
|
*/
|
|
3331
3338
|
getCategoryFromMap(categoryIdOrSlug) {
|
|
3339
|
+
// eslint-disable-next-line sonarjs/deprecation -- deprecated API до TASK[#10153]
|
|
3332
3340
|
const category = this.idCategoryMap.get(categoryIdOrSlug?.toString());
|
|
3341
|
+
// eslint-disable-next-line sonarjs/deprecation -- deprecated API до TASK[#10153]
|
|
3333
3342
|
if (category && (!category.parentCategory || !category.loadedAt || category.cachedDataIsActual(this.cacheLifeTime.categoryData))) {
|
|
3334
3343
|
return category;
|
|
3335
3344
|
}
|
|
3345
|
+
// eslint-disable-next-line sonarjs/deprecation -- deprecated API до TASK[#10153]
|
|
3336
3346
|
this.idCategoryMap.delete(categoryIdOrSlug?.toString());
|
|
3337
3347
|
return undefined;
|
|
3338
3348
|
}
|
|
@@ -3457,6 +3467,8 @@ class ScCatalogService {
|
|
|
3457
3467
|
/**
|
|
3458
3468
|
* Создает запрос получения списка товаров, созданных за указанный период (с пагинацией).
|
|
3459
3469
|
*
|
|
3470
|
+
* @deprecated Используйте {@link getProducts$} с фильтром `created`. Удалить после перевода всех веток.
|
|
3471
|
+
*
|
|
3460
3472
|
* @param params Параметры запроса товаров за период.
|
|
3461
3473
|
*/
|
|
3462
3474
|
getNewProducts$(params) {
|
|
@@ -4176,6 +4188,7 @@ class ScConfiguratorService {
|
|
|
4176
4188
|
* @param editor Название конфигуратора.
|
|
4177
4189
|
*/
|
|
4178
4190
|
getSettings$(categoryIdOrSlug, editor) {
|
|
4191
|
+
// eslint-disable-next-line sonarjs/deprecation -- getCategoryFromMap удаляется в рамках TASK[#10153]
|
|
4179
4192
|
const category = this.catalogService.getCategoryFromMap(categoryIdOrSlug);
|
|
4180
4193
|
if (category?.configuratorSettings) {
|
|
4181
4194
|
return of(category.configuratorSettings);
|
|
@@ -4420,7 +4433,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
4420
4433
|
/**
|
|
4421
4434
|
* Токен, указывающий на необходимость добавления заголовков в исходящие запросы.
|
|
4422
4435
|
*/
|
|
4423
|
-
const SC_IS_HEADER_REQUIRED = new HttpContextToken((
|
|
4436
|
+
const SC_IS_HEADER_REQUIRED = new HttpContextToken(constant(true));
|
|
4424
4437
|
|
|
4425
4438
|
/**
|
|
4426
4439
|
* Пайп для формирования полного URI изображения на media сервере.
|
|
@@ -5738,7 +5751,7 @@ const SC_GUEST_ENDPOINTS_TOKEN = new InjectionToken('SC_GUEST_ENDPOINTS_TOKEN',
|
|
|
5738
5751
|
* Токен имени параметра, при котором кешируются запросы у гостя.
|
|
5739
5752
|
*/
|
|
5740
5753
|
const SC_GUEST_PARAMETER_NAME_TOKEN = new InjectionToken('SC_GUEST_PARAMETER_NAME_TOKEN', {
|
|
5741
|
-
factory: (
|
|
5754
|
+
factory: constant(''),
|
|
5742
5755
|
});
|
|
5743
5756
|
|
|
5744
5757
|
/**
|
|
@@ -5850,7 +5863,6 @@ function ScConvertInterceptor(request, next) {
|
|
|
5850
5863
|
error: objectToCamel(error.error),
|
|
5851
5864
|
headers: error.headers,
|
|
5852
5865
|
status: error.status,
|
|
5853
|
-
statusText: error.statusText,
|
|
5854
5866
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
5855
5867
|
url: error.url,
|
|
5856
5868
|
}))));
|
|
@@ -6386,7 +6398,7 @@ class ScNews extends ScIdentity {
|
|
|
6386
6398
|
*/
|
|
6387
6399
|
const SC_COUNT_LAST_NEWS = new InjectionToken('countLasNews', {
|
|
6388
6400
|
providedIn: 'root',
|
|
6389
|
-
factory: ()
|
|
6401
|
+
factory: constant(4),
|
|
6390
6402
|
});
|
|
6391
6403
|
|
|
6392
6404
|
/**
|