@snabcentr/client-core 2.64.2 → 2.65.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.
Files changed (182) hide show
  1. package/cart/internal/sc-i-cart-item-dto.d.ts +2 -2
  2. package/catalog/classes/index.d.ts +1 -0
  3. package/catalog/classes/sc-catalog-item.d.ts +31 -0
  4. package/catalog/dto/index.d.ts +0 -2
  5. package/catalog/dto/sc-category.d.ts +18 -51
  6. package/catalog/dto/sc-product.d.ts +26 -51
  7. package/catalog/dto/sc-virtual-category.d.ts +13 -30
  8. package/catalog/interfaces/index.d.ts +4 -0
  9. package/catalog/interfaces/sc-i-catalog-item.d.ts +16 -0
  10. package/catalog/interfaces/sc-i-category.d.ts +29 -0
  11. package/catalog/{internal/sc-i-product-dto.d.ts → interfaces/sc-i-product.d.ts} +8 -27
  12. package/catalog/interfaces/sc-i-virtual-category.d.ts +20 -0
  13. package/catalog/internal/index.d.ts +0 -4
  14. package/catalog/services/sc-catalog.service.d.ts +3 -2
  15. package/catalog/services/sc-favorite.service.d.ts +1 -1
  16. package/common/classes/index.d.ts +9 -0
  17. package/common/classes/sc-catalogable-item.d.ts +17 -0
  18. package/common/classes/sc-coded-identity.d.ts +17 -0
  19. package/common/classes/sc-deletable-named-identity.d.ts +17 -0
  20. package/common/classes/sc-hidden-catalogable-item.d.ts +17 -0
  21. package/common/classes/sc-identity.d.ts +25 -0
  22. package/common/classes/sc-image.d.ts +6 -8
  23. package/common/classes/sc-named-identity.d.ts +17 -0
  24. package/common/classes/sc-primary-catalogable-item.d.ts +17 -0
  25. package/common/classes/sc-reference.d.ts +21 -0
  26. package/common/classes/sc-updatable-named-identity.d.ts +17 -0
  27. package/common/index.d.ts +1 -1
  28. package/common/interfaces/index.d.ts +16 -0
  29. package/common/interfaces/sc-i-catalogable-item.d.ts +10 -0
  30. package/common/interfaces/sc-i-coded-identity.d.ts +10 -0
  31. package/common/interfaces/sc-i-created-at.d.ts +9 -0
  32. package/common/interfaces/sc-i-date-period.d.ts +6 -0
  33. package/common/interfaces/sc-i-deletable-named-identity.d.ts +7 -0
  34. package/common/interfaces/sc-i-deleted-at.d.ts +9 -0
  35. package/common/interfaces/sc-i-file.d.ts +13 -0
  36. package/common/interfaces/sc-i-hidden-catalogable-item.d.ts +10 -0
  37. package/common/interfaces/sc-i-identity.d.ts +13 -0
  38. package/common/interfaces/sc-i-image.d.ts +1 -1
  39. package/common/interfaces/sc-i-named-identity.d.ts +7 -0
  40. package/common/interfaces/sc-i-named.d.ts +9 -0
  41. package/common/interfaces/sc-i-primary-catalogable-item.d.ts +10 -0
  42. package/common/interfaces/sc-i-reference.d.ts +14 -0
  43. package/common/interfaces/sc-i-typed-nullable-range.d.ts +13 -0
  44. package/common/interfaces/sc-i-updatable-named-identity.d.ts +7 -0
  45. package/common/interfaces/sc-i-updated-at.d.ts +9 -0
  46. package/config/index.d.ts +0 -1
  47. package/esm2022/cart/internal/sc-i-cart-item-dto.mjs +1 -1
  48. package/esm2022/catalog/classes/index.mjs +2 -1
  49. package/esm2022/catalog/classes/sc-catalog-item.mjs +19 -0
  50. package/esm2022/catalog/dto/index.mjs +1 -3
  51. package/esm2022/catalog/dto/sc-category.mjs +20 -38
  52. package/esm2022/catalog/dto/sc-product.mjs +27 -32
  53. package/esm2022/catalog/dto/sc-virtual-category.mjs +11 -14
  54. package/esm2022/catalog/interfaces/index.mjs +5 -1
  55. package/esm2022/catalog/interfaces/sc-i-catalog-item.mjs +2 -0
  56. package/esm2022/catalog/interfaces/sc-i-category.mjs +3 -0
  57. package/esm2022/catalog/interfaces/sc-i-product.mjs +3 -0
  58. package/esm2022/catalog/interfaces/sc-i-virtual-category.mjs +2 -0
  59. package/esm2022/catalog/internal/index.mjs +1 -5
  60. package/esm2022/catalog/services/sc-catalog.service.mjs +1 -1
  61. package/esm2022/catalog/services/sc-favorite.service.mjs +2 -2
  62. package/esm2022/catalog/services/sc-recommendation.service.mjs +1 -1
  63. package/esm2022/common/classes/index.mjs +10 -1
  64. package/esm2022/common/classes/sc-catalogable-item.mjs +16 -0
  65. package/esm2022/common/classes/sc-coded-identity.mjs +21 -0
  66. package/esm2022/common/classes/sc-deletable-named-identity.mjs +18 -0
  67. package/esm2022/common/classes/sc-hidden-catalogable-item.mjs +16 -0
  68. package/esm2022/common/classes/sc-identity.mjs +23 -0
  69. package/esm2022/common/classes/sc-image.mjs +7 -9
  70. package/esm2022/common/classes/sc-named-identity.mjs +21 -0
  71. package/esm2022/common/classes/sc-primary-catalogable-item.mjs +16 -0
  72. package/esm2022/common/classes/sc-reference.mjs +17 -0
  73. package/esm2022/common/classes/sc-updatable-named-identity.mjs +18 -0
  74. package/esm2022/common/index.mjs +2 -2
  75. package/esm2022/common/interfaces/index.mjs +17 -1
  76. package/esm2022/common/interfaces/sc-i-catalogable-item.mjs +2 -0
  77. package/esm2022/common/interfaces/sc-i-coded-identity.mjs +2 -0
  78. package/esm2022/common/interfaces/sc-i-created-at.mjs +2 -0
  79. package/esm2022/common/interfaces/sc-i-date-period.mjs +2 -0
  80. package/esm2022/common/interfaces/sc-i-deletable-named-identity.mjs +2 -0
  81. package/esm2022/common/interfaces/sc-i-deleted-at.mjs +2 -0
  82. package/esm2022/common/interfaces/sc-i-file.mjs +2 -0
  83. package/esm2022/common/interfaces/sc-i-hidden-catalogable-item.mjs +2 -0
  84. package/esm2022/common/interfaces/sc-i-identity.mjs +2 -0
  85. package/esm2022/common/interfaces/sc-i-image.mjs +1 -1
  86. package/esm2022/common/interfaces/sc-i-named-identity.mjs +2 -0
  87. package/esm2022/common/interfaces/sc-i-named.mjs +2 -0
  88. package/esm2022/common/interfaces/sc-i-primary-catalogable-item.mjs +2 -0
  89. package/esm2022/common/interfaces/sc-i-reference.mjs +2 -0
  90. package/esm2022/common/interfaces/sc-i-typed-nullable-range.mjs +2 -0
  91. package/esm2022/common/interfaces/sc-i-updatable-named-identity.mjs +2 -0
  92. package/esm2022/common/interfaces/sc-i-updated-at.mjs +2 -0
  93. package/esm2022/config/index.mjs +1 -2
  94. package/esm2022/configurator/services/sc-configurator.service.mjs +1 -1
  95. package/esm2022/guards/index.mjs +1 -2
  96. package/esm2022/helpers/sc-image-helper.mjs +13 -3
  97. package/esm2022/helpers/sc-units-helper.mjs +1 -1
  98. package/esm2022/news/classes/index.mjs +1 -5
  99. package/esm2022/news/classes/sc-news.mjs +13 -12
  100. package/esm2022/news/index.mjs +4 -7
  101. package/esm2022/news/interfaces/index.mjs +3 -0
  102. package/esm2022/news/interfaces/sc-i-news-tile.mjs +2 -0
  103. package/esm2022/news/interfaces/sc-i-news.mjs +2 -0
  104. package/esm2022/news/services/index.mjs +2 -0
  105. package/esm2022/news/services/sc-news.service.mjs +2 -2
  106. package/esm2022/news/tokens/index.mjs +2 -0
  107. package/esm2022/public-api.mjs +2 -6
  108. package/esm2022/search/services/sc-search.service.mjs +5 -5
  109. package/esm2022/seo/classes/index.mjs +2 -0
  110. package/esm2022/seo/classes/schema-org-factory.mjs +269 -0
  111. package/esm2022/seo/index.mjs +5 -0
  112. package/esm2022/seo/interfaces/index.mjs +5 -0
  113. package/esm2022/seo/interfaces/sc-i-default-page-meta.mjs +2 -0
  114. package/esm2022/seo/interfaces/sc-i-schema-org-breadcrumb-list.mjs +2 -0
  115. package/esm2022/seo/interfaces/sc-i-seo-resource.mjs +2 -0
  116. package/esm2022/seo/interfaces/sc-i-seo.mjs +2 -0
  117. package/esm2022/seo/services/index.mjs +2 -0
  118. package/esm2022/seo/services/sc-seo.service.mjs +206 -0
  119. package/esm2022/seo/types/index.mjs +2 -0
  120. package/esm2022/seo/types/robots-tag-type.mjs +2 -0
  121. package/esm2022/tokens/sc-default-page-meta.mjs +1 -1
  122. package/fesm2022/snabcentr-client-core.mjs +782 -588
  123. package/fesm2022/snabcentr-client-core.mjs.map +1 -1
  124. package/guards/index.d.ts +0 -1
  125. package/helpers/sc-image-helper.d.ts +1 -1
  126. package/helpers/sc-units-helper.d.ts +1 -1
  127. package/news/classes/index.d.ts +0 -1
  128. package/news/classes/sc-news.d.ts +18 -13
  129. package/news/index.d.ts +3 -3
  130. package/news/interfaces/index.d.ts +2 -0
  131. package/news/interfaces/sc-i-news-tile.d.ts +22 -0
  132. package/news/interfaces/sc-i-news.d.ts +11 -0
  133. package/news/services/index.d.ts +1 -0
  134. package/news/services/sc-news.service.d.ts +4 -3
  135. package/news/tokens/index.d.ts +1 -0
  136. package/package.json +1 -1
  137. package/public-api.d.ts +1 -2
  138. package/search/services/sc-search.service.d.ts +5 -4
  139. package/seo/classes/index.d.ts +1 -0
  140. package/seo/classes/schema-org-factory.d.ts +88 -0
  141. package/seo/index.d.ts +4 -0
  142. package/seo/interfaces/index.d.ts +4 -0
  143. package/seo/interfaces/sc-i-default-page-meta.d.ts +17 -0
  144. package/seo/interfaces/sc-i-schema-org-breadcrumb-list.d.ts +34 -0
  145. package/seo/interfaces/sc-i-seo-resource.d.ts +14 -0
  146. package/{catalog/dto → seo/interfaces}/sc-i-seo.d.ts +3 -14
  147. package/seo/services/index.d.ts +1 -0
  148. package/seo/services/sc-seo.service.d.ts +125 -0
  149. package/seo/types/index.d.ts +1 -0
  150. package/tokens/sc-default-page-meta.d.ts +1 -1
  151. package/catalog/dto/sc-i-seo-resource.d.ts +0 -10
  152. package/catalog/dto/sc-seo-resource.d.ts +0 -22
  153. package/catalog/internal/sc-i-category-dto.d.ts +0 -48
  154. package/catalog/internal/sc-i-seo-resource-dto.d.ts +0 -10
  155. package/catalog/internal/sc-i-virtual-category-dto.d.ts +0 -37
  156. package/config/sc-i-default-page-meta.d.ts +0 -17
  157. package/esm2022/catalog/dto/sc-i-seo-resource.mjs +0 -2
  158. package/esm2022/catalog/dto/sc-i-seo.mjs +0 -2
  159. package/esm2022/catalog/dto/sc-seo-resource.mjs +0 -23
  160. package/esm2022/catalog/internal/sc-i-category-dto.mjs +0 -3
  161. package/esm2022/catalog/internal/sc-i-product-dto.mjs +0 -2
  162. package/esm2022/catalog/internal/sc-i-seo-resource-dto.mjs +0 -2
  163. package/esm2022/catalog/internal/sc-i-virtual-category-dto.mjs +0 -2
  164. package/esm2022/config/sc-i-default-page-meta.mjs +0 -2
  165. package/esm2022/guards/catalog-seo.guard.mjs +0 -71
  166. package/esm2022/news/classes/sc-news-tile.mjs +0 -2
  167. package/esm2022/news/internal/sc-i-news-dto.mjs +0 -2
  168. package/esm2022/sc-json-ld/index.mjs +0 -3
  169. package/esm2022/sc-json-ld/sc-json-ld.component.mjs +0 -49
  170. package/esm2022/sc-json-ld/sc-json-ld.module.mjs +0 -19
  171. package/esm2022/services/index.mjs +0 -3
  172. package/esm2022/services/sc-seo.service.mjs +0 -271
  173. package/esm2022/services/types/robots-tag-type.mjs +0 -2
  174. package/guards/catalog-seo.guard.d.ts +0 -14
  175. package/news/classes/sc-news-tile.d.ts +0 -25
  176. package/news/internal/sc-i-news-dto.d.ts +0 -30
  177. package/sc-json-ld/index.d.ts +0 -2
  178. package/sc-json-ld/sc-json-ld.component.d.ts +0 -31
  179. package/sc-json-ld/sc-json-ld.module.d.ts +0 -10
  180. package/services/index.d.ts +0 -2
  181. package/services/sc-seo.service.d.ts +0 -184
  182. /package/{services → seo}/types/robots-tag-type.d.ts +0 -0
package/guards/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- export * from './catalog-seo.guard';
2
1
  export * from './sc-auth-as-client.guard';
3
2
  export * from './sc-id-or-slug.guard';
@@ -1,4 +1,4 @@
1
- import { ScProduct } from '../catalog/dto';
1
+ import { ScProduct } from '../catalog/dto/sc-product';
2
2
  import { ScIImage } from '../common/interfaces/sc-i-image';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { ScProduct } from '../catalog';
1
+ import { ScProduct } from '../catalog/dto/sc-product';
2
2
  import * as i0 from "@angular/core";
3
3
  /**
4
4
  * Клас-помощник для работы со значениями единиц измерения товара.
@@ -1,2 +1 @@
1
1
  export * from './sc-news';
2
- export * from './sc-news-tile';
@@ -1,33 +1,38 @@
1
- import { ScSeoResource } from '../../catalog/dto/sc-seo-resource';
2
- import { ScINewsDTO } from '../internal/sc-i-news-dto';
1
+ import { ScIdentity } from '../../common/classes/sc-identity';
2
+ import { ScISeo } from '../../seo/interfaces/sc-i-seo';
3
+ import { ScINews } from '../interfaces/sc-i-news';
3
4
  /**
4
5
  * Модель данных новости.
5
6
  */
6
- export declare class ScNews extends ScSeoResource {
7
+ export declare class ScNews extends ScIdentity implements ScINews {
7
8
  /**
8
- * Идентификатор новости.
9
+ * @inheritDoc
9
10
  */
10
- id: number;
11
+ subject: string;
11
12
  /**
12
- * Заголовок новости.
13
+ * @inheritDoc
13
14
  */
14
- subject: string;
15
+ image?: string;
16
+ /**
17
+ * @inheritDoc
18
+ */
19
+ imageWebp?: string;
15
20
  /**
16
- * Дата и время создания новости.
21
+ * @inheritDoc
17
22
  */
18
23
  createdAt: string;
19
24
  /**
20
- * Строка HTML с содержимым новости.
25
+ * @inheritDoc
21
26
  */
22
27
  text: string;
23
28
  /**
24
- * Ссылка на основное изображение новости в формате WebP.
29
+ * @inheritDoc
25
30
  */
26
- imageWebp?: string;
31
+ seo?: ScISeo;
27
32
  /**
28
33
  * Инициализирует экземпляр класса {@link ScCategory}.
29
34
  *
30
- * @param newsDTO Данные для инициализации.
35
+ * @param data Данные для инициализации.
31
36
  */
32
- constructor(newsDTO: ScINewsDTO);
37
+ constructor(data: ScINews);
33
38
  }
package/news/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
+ export * from './interfaces';
1
2
  export * from './classes';
2
- export * from './services/sc-news.service';
3
- export * from './internal/sc-i-news-dto';
4
- export * from './tokens/sc-count-last-news';
3
+ export * from './services';
4
+ export * from './tokens';
@@ -0,0 +1,2 @@
1
+ export * from './sc-i-news';
2
+ export * from './sc-i-news-tile';
@@ -0,0 +1,22 @@
1
+ import { ScIIdentity } from '../../common/interfaces/sc-i-identity';
2
+ /**
3
+ * Краткие данные о новости.
4
+ */
5
+ export interface ScINewsTile extends ScIIdentity {
6
+ /**
7
+ * Заголовок.
8
+ */
9
+ subject: string;
10
+ /**
11
+ * Ссылка на основное изображение.
12
+ */
13
+ image?: string;
14
+ /**
15
+ * Ссылка на основное изображение в формате WebP.
16
+ */
17
+ imageWebp?: string;
18
+ /**
19
+ * Дата и время создания записи.
20
+ */
21
+ createdAt: string;
22
+ }
@@ -0,0 +1,11 @@
1
+ import { ScISeoResource } from '../../seo/interfaces/sc-i-seo-resource';
2
+ import { ScINewsTile } from './sc-i-news-tile';
3
+ /**
4
+ * Данные о новости.
5
+ */
6
+ export interface ScINews extends Omit<ScINewsTile, 'image'>, ScISeoResource {
7
+ /**
8
+ * HTML-строка с содержимым новости.
9
+ */
10
+ text: string;
11
+ }
@@ -0,0 +1 @@
1
+ export * from './sc-news.service';
@@ -1,6 +1,7 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { ScIPaginate, ScIPaginationParams } from '../../pagination';
3
- import { ScNews, ScNewsTile } from '../classes';
3
+ import { ScNews } from '../classes/sc-news';
4
+ import { ScINewsTile } from '../interfaces/sc-i-news-tile';
4
5
  import * as i0 from "@angular/core";
5
6
  /**
6
7
  * Сервис для получения списка новостей.
@@ -31,7 +32,7 @@ export declare class ScNewsService {
31
32
  *
32
33
  * @param params параметры пагинации новостей.
33
34
  */
34
- getListOfNews$(params: ScIPaginationParams): Observable<ScIPaginate<ScNewsTile>>;
35
+ getListOfNews$(params: ScIPaginationParams): Observable<ScIPaginate<ScINewsTile>>;
35
36
  /**
36
37
  * Возвращает {@link Observable} полной информации о новости.
37
38
  *
@@ -41,7 +42,7 @@ export declare class ScNewsService {
41
42
  /**
42
43
  * Возвращает {@link Observable} получения списка последних новостей.
43
44
  */
44
- getLastNewsList$(): Observable<ScIPaginate<ScNewsTile>>;
45
+ getLastNewsList$(): Observable<ScIPaginate<ScINewsTile>>;
45
46
  static ɵfac: i0.ɵɵFactoryDeclaration<ScNewsService, never>;
46
47
  static ɵprov: i0.ɵɵInjectableDeclaration<ScNewsService>;
47
48
  }
@@ -0,0 +1 @@
1
+ export * from './sc-count-last-news';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snabcentr/client-core",
3
- "version": "2.64.2",
3
+ "version": "2.65.0",
4
4
  "author": "Snabcentr Ltd.",
5
5
  "repository": "https://gitlab.snabcentr.met/web/angular/snabcentr-client-core-lib",
6
6
  "license": "Commercial",
package/public-api.d.ts CHANGED
@@ -25,10 +25,9 @@ export * from './pipes';
25
25
  export * from './questionnaire';
26
26
  export * from './reclamation';
27
27
  export * from './references';
28
- export * from './sc-json-ld';
29
28
  export * from './search';
29
+ export * from './seo';
30
30
  export * from './suggestion';
31
- export * from './services';
32
31
  export * from './tokens';
33
32
  export * from './ui';
34
33
  export * from './user';
@@ -1,9 +1,10 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { Observable } from 'rxjs';
3
- import { ScCategory, ScFiltersTreeCatalog } from '../../catalog';
4
- import { ScIUrls } from '../../config';
5
- import { ScUserMetrikaService } from '../../user-metrika';
6
- import { ScISimpleSearch } from '..';
3
+ import { ScCategory } from '../../catalog/dto/sc-category';
4
+ import { ScFiltersTreeCatalog } from '../../catalog/types/sc-filters-tree-catalog';
5
+ import { ScIUrls } from '../../config/sc-i-urls';
6
+ import { ScUserMetrikaService } from '../../user-metrika/services/sc-user-metrika.service';
7
+ import { ScISimpleSearch } from '../dto/sc-i-simple-search';
7
8
  import * as i0 from "@angular/core";
8
9
  /**
9
10
  * Сервис поиска по каталогу.
@@ -0,0 +1 @@
1
+ export * from './schema-org-factory';
@@ -0,0 +1,88 @@
1
+ import { CollectionPage, Product, WithContext } from 'schema-dts';
2
+ import { ScICategory } from '../../catalog/interfaces/sc-i-category';
3
+ import { ScIProduct } from '../../catalog/interfaces/sc-i-product';
4
+ import { ScIVirtualCategory } from '../../catalog/interfaces/sc-i-virtual-category';
5
+ import { ScISchemaOrgBreadcrumbList } from '../interfaces/sc-i-schema-org-breadcrumb-list';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * Механизмы генерации схем данных Schema.org.
9
+ */
10
+ export declare class SchemaOrgFactory {
11
+ /**
12
+ * Данные о компании.
13
+ */
14
+ private readonly companyInfo;
15
+ /**
16
+ * Список ссылок приложения.
17
+ */
18
+ private readonly urls;
19
+ /**
20
+ * Пайп, возвращающий идентификатор или символьное обозначение (slug) исходя из настроек окружения.
21
+ */
22
+ private idOrSlugPipe;
23
+ /**
24
+ * Пайп для формирования полного URI изображения на media сервере.
25
+ */
26
+ private readonly mediaImageTransformerPipe;
27
+ /**
28
+ * Генерирует и возвращает схему данных для указанного продукта.
29
+ *
30
+ * @param product Данные о продукте.
31
+ * @param productPath Url путь к товару. В пути должен присутствовать шаблон ':id', обозначающий идентификатор товара для подстановки.
32
+ */
33
+ generateForProductItem(product: ScIProduct, productPath: string): WithContext<Product>;
34
+ /**
35
+ * Генерирует и возвращает схему данных для указанного продукта.
36
+ *
37
+ * @param category Данные о категории.
38
+ * @param products Данные о продуктах категории.
39
+ * @param categoryPath Url путь к категориям товаров. В пути должен присутствовать шаблон ':id', обозначающий идентификатор категории для подстановки.
40
+ * @param productPath Url путь к товару. В пути должен присутствовать шаблон ':id', обозначающий идентификатор товара для подстановки.
41
+ * @param breadcrumbs Данные о хлебных крошках для категории.
42
+ */
43
+ generateForCategoryItem(category: ScICategory | ScIVirtualCategory, products: ScIProduct[], categoryPath: string, productPath: string, breadcrumbs: ScISchemaOrgBreadcrumbList): WithContext<CollectionPage>;
44
+ /**
45
+ * Нормализует дату окончания цены в формат Schema.org (YYYY-MM-DD).
46
+ *
47
+ * @param expiredAt Дата для нормализации
48
+ */
49
+ private normalizePriceValidUntil;
50
+ /**
51
+ * Определяет доступность товара по данным продукта.
52
+ *
53
+ * @param product Данные о продукте.
54
+ */
55
+ private getAvailability;
56
+ /**
57
+ * Проверяет, является ли категория виртуальной.
58
+ *
59
+ * @param category Данные о категории для проверки.
60
+ */
61
+ private isVirtualCategory;
62
+ /**
63
+ * Возвращает URL для указанной категории.
64
+ *
65
+ * @param category Данные о категории
66
+ * @param categoryPath Url путь к категориям товаров. В пути должен присутствовать шаблон ':id', обозначающий идентификатор категории для подстановки.
67
+ */
68
+ private getCategoryCanonicalUrl;
69
+ /**
70
+ * Создаёт элемент списка ItemList с кратким Product для страницы категории.
71
+ *
72
+ * @param product Данные о продукте.
73
+ * @param position Позиция в списке.
74
+ * @param productPath Url путь к товару. В пути должен присутствовать шаблон ':id', обозначающий идентификатор товара для подстановки.
75
+ */
76
+ private createProductsListItem;
77
+ /**
78
+ * Создает mainEntity для указанной категории товаров.
79
+ *
80
+ * @param category Данные о категории.
81
+ * @param products Данные о товарах категории.
82
+ * @param categoryPath Url путь к категориям товаров. В пути должен присутствовать шаблон ':id', обозначающий идентификатор категории для подстановки.
83
+ * @param productPath Url путь к товару. В пути должен присутствовать шаблон ':id', обозначающий идентификатор товара для подстановки.
84
+ */
85
+ private createCategoryMainEntity;
86
+ static ɵfac: i0.ɵɵFactoryDeclaration<SchemaOrgFactory, never>;
87
+ static ɵprov: i0.ɵɵInjectableDeclaration<SchemaOrgFactory>;
88
+ }
package/seo/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './interfaces';
2
+ export * from './classes';
3
+ export * from './services';
4
+ export * from './types';
@@ -0,0 +1,4 @@
1
+ export * from './sc-i-schema-org-breadcrumb-list';
2
+ export * from './sc-i-default-page-meta';
3
+ export * from './sc-i-seo';
4
+ export * from './sc-i-seo-resource';
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Метаданные страницы по умолчанию.
3
+ */
4
+ export interface ScIDefaultPageMeta {
5
+ /**
6
+ * Заголовок.
7
+ */
8
+ readonly title: string;
9
+ /**
10
+ * Описание.
11
+ */
12
+ readonly description: string;
13
+ /**
14
+ * Ключевые слова.
15
+ */
16
+ readonly keywords: string;
17
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Интерфейс для структурированных данных хлебных крошек согласно Schema.org.
3
+ *
4
+ * @see https://schema.org/BreadcrumbList
5
+ */
6
+ export interface ScISchemaOrgBreadcrumbList {
7
+ /**
8
+ * Тип схемы Schema.org для хлебных крошек.
9
+ */
10
+ '@type': 'BreadcrumbList';
11
+ /**
12
+ * Список элементов навигации (хлебных крошек).
13
+ * Каждый элемент представляет один уровень навигации.
14
+ */
15
+ itemListElement: Array<{
16
+ /**
17
+ * Тип элемента списка согласно Schema.org.
18
+ */
19
+ '@type': 'ListItem';
20
+ /**
21
+ * Позиция элемента в списке навигации (начиная с 1).
22
+ */
23
+ position: number;
24
+ /**
25
+ * Отображаемое название элемента навигации.
26
+ */
27
+ name: string;
28
+ /**
29
+ * URL-адрес страницы (опционально).
30
+ * Если не указан, элемент считается неактивным.
31
+ */
32
+ item?: string;
33
+ }>;
34
+ }
@@ -0,0 +1,14 @@
1
+ import { ScISeo } from './sc-i-seo';
2
+ /**
3
+ * Данные объекта имеющего seo-данные.
4
+ */
5
+ export interface ScISeoResource {
6
+ /**
7
+ * Seo-данные.
8
+ */
9
+ seo?: ScISeo;
10
+ /**
11
+ * Ссылка на основное изображение.
12
+ */
13
+ image?: string;
14
+ }
@@ -1,19 +1,8 @@
1
+ import { ScIDefaultPageMeta } from './sc-i-default-page-meta';
1
2
  /**
2
- * Модель seo-данных товара/категории.
3
+ * Seo-данные.
3
4
  */
4
- export interface ScISeo {
5
- /**
6
- * Заголовок товара/категории.
7
- */
8
- title?: string;
9
- /**
10
- * Ключевые слова товара/категории.
11
- */
12
- keywords?: string;
13
- /**
14
- * Описание товара/категории.
15
- */
16
- description?: string;
5
+ export interface ScISeo extends Partial<ScIDefaultPageMeta> {
17
6
  /**
18
7
  * Массив дополнительных значений метатегов.
19
8
  */
@@ -0,0 +1 @@
1
+ export * from './sc-seo.service';
@@ -0,0 +1,125 @@
1
+ import { Thing, WithContext } from 'schema-dts';
2
+ import { ScICatalogItem } from '../../catalog/interfaces/sc-i-catalog-item';
3
+ import { ScICategory } from '../../catalog/interfaces/sc-i-category';
4
+ import { ScISeo } from '../interfaces/sc-i-seo';
5
+ import { RobotsTagType } from '../types/robots-tag-type';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * Сервис управления SEO-параметрами.
9
+ */
10
+ export declare class ScSeoService {
11
+ /**
12
+ * Данные о компании.
13
+ */
14
+ private readonly companyInfo;
15
+ /**
16
+ * Метаданные по умолчанию.
17
+ */
18
+ private readonly defaultSeo;
19
+ /**
20
+ * Метаданные страницы каталога по умолчанию.
21
+ */
22
+ private readonly catalogDefaultSeo;
23
+ /**
24
+ * Признак необходимости использовать Id или Slug при маршрутизации.
25
+ */
26
+ private readonly idOrSlugInRoute;
27
+ /**
28
+ * Список ссылок приложения.
29
+ */
30
+ private readonly urls;
31
+ /**
32
+ * Пайп, возвращающий идентификатор или символьное обозначение (slug) исходя из настроек окружения.
33
+ */
34
+ private idOrSlugPipe;
35
+ /**
36
+ * Пайп для формирования полного URI изображения на media сервере.
37
+ */
38
+ private readonly mediaImageTransformerPipe;
39
+ /**
40
+ * Сервис установки метаданных страницы.
41
+ */
42
+ private readonly metaService;
43
+ /**
44
+ * Сервис маршрутизации.
45
+ */
46
+ private readonly router;
47
+ /**
48
+ * Сервис управления заголовком страницы.
49
+ */
50
+ private readonly titleService;
51
+ /**
52
+ * Объект {@link Document}, предоставляющий доступ к DOM страницы.
53
+ */
54
+ private readonly document;
55
+ /**
56
+ * Фабрика для создания экземпляров {@link Renderer2}.
57
+ */
58
+ private readonly rendererFactory;
59
+ /**
60
+ * Экземпляр {@link Renderer2} для безопасной работы с DOM.
61
+ */
62
+ private readonly renderer;
63
+ /**
64
+ * Устанавливает seo параметры на основе указанного ресурса. Если какого-то тега нет, будет установлено значение по умолчанию.
65
+ *
66
+ * @param resource Ресурс на основе которого необходимо установить мета-теги.
67
+ * @param img Изображение. Если не пришло, то будет установлено значение по умолчанию.
68
+ * @param robots Список robots-тегов для страницы.
69
+ */
70
+ setFromResource(resource?: ScISeo, img?: string, robots?: RobotsTagType[]): void;
71
+ /**
72
+ * Устанавливает seo параметры со значением по умолчанию.
73
+ *
74
+ * @param title Заголовок страницы.
75
+ * @param robots Список robots тегов для страницы.
76
+ */
77
+ setByDefault(title?: string, robots?: RobotsTagType[]): void;
78
+ /**
79
+ * Устанавливает seo параметры со значением по умолчанию. Устанавливает значение "не индексировать" для поисковых роботов.
80
+ *
81
+ * @param title Заголовок страницы.
82
+ */
83
+ setByDefaultAsNoIndexed(title?: string): void;
84
+ /**
85
+ * Устанавливает seo-параметры для указанного элемента каталога.
86
+ *
87
+ * @param item Данные об элементе каталога.
88
+ * @param urlPath Url путь к элементу каталога. В пути должен присутствовать шаблон ':id', обозначающий идентификатор элемента каталога для подстановки.
89
+ * @param schemaOrgData Данные Schema.org элемента каталога
90
+ */
91
+ setForCategoryItem(item: ScICatalogItem<ScICategory>, urlPath: string, schemaOrgData?: WithContext<Thing>): void;
92
+ /**
93
+ * Устанавливает все meta-теги страницы. Если какой-либо из параметров не указан, для него устанавливается значение по умолчанию.
94
+ *
95
+ * @param title Заголовок страницы.
96
+ * @param description Описание страницы.
97
+ * @param keywords Ключевые слова страницы.
98
+ * @param meta Массив дополнительных значений метатегов.
99
+ * @param robots Список robots тегов для страницы.
100
+ */
101
+ private setMetaTags;
102
+ /**
103
+ * Устанавливает Open Graph meta-теги.
104
+ *
105
+ * @param ogTitle Заголовок.
106
+ * @param ogDescription Описание.
107
+ * @param ogUrl Url.
108
+ * @param ogImg Ссылка на изображение.
109
+ */
110
+ private setOpenGraphMetaTags;
111
+ /**
112
+ * Устанавливает тег канонической страницы <link rel="canonical" href="..." />.
113
+ *
114
+ * @param url URL который необходимо использовать в качестве ссылки.
115
+ */
116
+ private setCanonicalLink;
117
+ /**
118
+ * Устанавливает Schema.org объект страницы.
119
+ *
120
+ * @param data Данные Schema.org для встраивания на странице.
121
+ */
122
+ private setSchemaOrgData;
123
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScSeoService, never>;
124
+ static ɵprov: i0.ɵɵInjectableDeclaration<ScSeoService>;
125
+ }
@@ -0,0 +1 @@
1
+ export * from './robots-tag-type';
@@ -1,5 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- import { ScIDefaultPageMeta } from '../config/sc-i-default-page-meta';
2
+ import { ScIDefaultPageMeta } from '../seo/interfaces/sc-i-default-page-meta';
3
3
  /**
4
4
  * Токен внедрения мета-данных страницы по умолчанию.
5
5
  */
@@ -1,10 +0,0 @@
1
- import { ScISeo } from '.';
2
- /**
3
- * Модель данных объекта имеющего SEO данные.
4
- */
5
- export interface ScISeoResource {
6
- /**
7
- * SEO данные.
8
- */
9
- seo?: ScISeo;
10
- }
@@ -1,22 +0,0 @@
1
- import { ScISeoResourceDTO } from '../internal/sc-i-seo-resource-dto';
2
- import { ScISeo } from './sc-i-seo';
3
- import { ScISeoResource } from './sc-i-seo-resource';
4
- /**
5
- * Модель данных объекта имеющего SEO данные.
6
- */
7
- export declare class ScSeoResource implements ScISeoResource {
8
- /**
9
- * SEO данные.
10
- */
11
- seo?: ScISeo;
12
- /**
13
- * Ссылка на основное изображение.
14
- */
15
- image?: string;
16
- /**
17
- * Инициализирует экземпляр класса {@link ScSeoResource}.
18
- *
19
- * @param seoResourceDTO Данные для инициализации.
20
- */
21
- constructor(seoResourceDTO: ScISeoResource | ScISeoResourceDTO | null | undefined);
22
- }
@@ -1,48 +0,0 @@
1
- import { ScIConfiguratorSearchProductBase } from '../../configurator/dto/sc-i-configurator-search-product-base';
2
- import { ScIProperties } from '../dto/sc-i-properties';
3
- import { ScISeoResourceDTO } from './sc-i-seo-resource-dto';
4
- /**
5
- * Модель данных категории товаров DTO.
6
- */
7
- export interface ScICategoryDTO extends ScISeoResourceDTO {
8
- /**
9
- * Идентификатор категории.
10
- */
11
- id: number;
12
- /**
13
- * Символьное обозначение (slug) категории.
14
- */
15
- slug: string;
16
- /**
17
- * Название категории.
18
- */
19
- name: string;
20
- /**
21
- * Признак того, что категория является основной для некоторого товара или услуги.
22
- */
23
- isPrimary?: boolean;
24
- /**
25
- * Признак, что категория являются избранной для клиента.
26
- */
27
- isFavorite?: boolean;
28
- /**
29
- * Список свойств. Число свойств в объекте не ограничено.
30
- */
31
- properties?: ScIProperties;
32
- /**
33
- * Объект родительской категории.
34
- */
35
- parentCategory?: ScICategoryDTO;
36
- /**
37
- * Список дочерних категорий.
38
- */
39
- categories?: ScICategoryDTO[];
40
- /**
41
- * Признак наличия дочерних категорий.
42
- */
43
- hasChild?: boolean;
44
- /**
45
- * Параметры введенные в конфигуратор, при добавлении позиции в корзину.
46
- */
47
- configuratorParams?: ScIConfiguratorSearchProductBase;
48
- }
@@ -1,10 +0,0 @@
1
- import { ScISeo } from '../dto';
2
- /**
3
- * Модель данных объекта имеющего SEO данные.
4
- */
5
- export interface ScISeoResourceDTO {
6
- /**
7
- * SEO данные.
8
- */
9
- _Seo?: ScISeo;
10
- }