@infrab4a/connect-angular 5.1.0 → 5.2.1-beta.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 (194) hide show
  1. package/angular-connect.module.d.ts +36 -26
  2. package/angular-elastic-search.module.d.ts +9 -9
  3. package/angular-firebase-auth.module.d.ts +11 -11
  4. package/angular-firestore.module.d.ts +17 -18
  5. package/angular-hasura-graphql.module.d.ts +14 -16
  6. package/angular-vertex-search.module.d.ts +9 -0
  7. package/consts/backend-url.const.d.ts +1 -1
  8. package/consts/category-structure.d.ts +1 -1
  9. package/consts/default-shop.const.d.ts +1 -1
  10. package/consts/es-config.const.d.ts +1 -1
  11. package/consts/firebase-const.d.ts +4 -3
  12. package/consts/hasura-options.const.d.ts +1 -1
  13. package/consts/index.d.ts +8 -7
  14. package/consts/persistence.const.d.ts +1 -1
  15. package/consts/storage-base-url.const.d.ts +1 -1
  16. package/consts/vertex-config.const.d.ts +1 -0
  17. package/esm2020/angular-connect.module.mjs +289 -115
  18. package/esm2020/angular-elastic-search.module.mjs +34 -34
  19. package/esm2020/angular-firebase-auth.module.mjs +141 -115
  20. package/esm2020/angular-firestore.module.mjs +541 -504
  21. package/esm2020/angular-hasura-graphql.module.mjs +333 -265
  22. package/esm2020/angular-vertex-search.module.mjs +34 -0
  23. package/esm2020/consts/backend-url.const.mjs +2 -2
  24. package/esm2020/consts/category-structure.mjs +2 -2
  25. package/esm2020/consts/default-shop.const.mjs +2 -2
  26. package/esm2020/consts/es-config.const.mjs +2 -2
  27. package/esm2020/consts/firebase-const.mjs +5 -4
  28. package/esm2020/consts/hasura-options.const.mjs +2 -2
  29. package/esm2020/consts/index.mjs +9 -8
  30. package/esm2020/consts/persistence.const.mjs +2 -2
  31. package/esm2020/consts/storage-base-url.const.mjs +2 -2
  32. package/esm2020/consts/vertex-config.const.mjs +2 -0
  33. package/esm2020/helpers/index.mjs +2 -2
  34. package/esm2020/helpers/mobile-operation-system-checker.helper.mjs +7 -7
  35. package/esm2020/index.mjs +7 -7
  36. package/esm2020/infrab4a-connect-angular.mjs +4 -4
  37. package/esm2020/interfaces/catalog-strategies.interface.mjs +2 -0
  38. package/esm2020/interfaces/category-facades.interface.mjs +2 -0
  39. package/esm2020/interfaces/index.mjs +3 -0
  40. package/esm2020/persistence/cookie-data-persistence.mjs +22 -22
  41. package/esm2020/persistence/data-persistence.mjs +2 -2
  42. package/esm2020/persistence/index.mjs +3 -3
  43. package/esm2020/services/auth.service.mjs +37 -37
  44. package/esm2020/services/cart/cart-services.facade.mjs +21 -0
  45. package/esm2020/services/cart/index.mjs +2 -0
  46. package/esm2020/services/cart.service.mjs +73 -281
  47. package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +2 -2
  48. package/esm2020/services/catalog/adapters/index.mjs +4 -4
  49. package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +43 -43
  50. package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +23 -23
  51. package/esm2020/services/catalog/catalog.service.mjs +111 -194
  52. package/esm2020/services/catalog/category.service.mjs +39 -51
  53. package/esm2020/services/catalog/context/catalog-search.context.mjs +40 -0
  54. package/esm2020/services/catalog/enums/index.mjs +2 -2
  55. package/esm2020/services/catalog/enums/product-sorts.enum.mjs +11 -11
  56. package/esm2020/services/catalog/facades/catalog-service.facade.mjs +32 -0
  57. package/esm2020/services/catalog/facades/catalog-strategies.facade.mjs +17 -0
  58. package/esm2020/services/catalog/facades/category-repository.facade.mjs +20 -0
  59. package/esm2020/services/catalog/facades/category-service.facade.mjs +30 -0
  60. package/esm2020/services/catalog/facades/index.mjs +6 -0
  61. package/esm2020/services/catalog/facades/product-catalog.facade.mjs +21 -0
  62. package/esm2020/services/catalog/helpers/brand-manager.helper.mjs +57 -0
  63. package/esm2020/services/catalog/helpers/catalog-filter.helper.mjs +44 -0
  64. package/esm2020/services/catalog/helpers/catalog-sort.helper.mjs +52 -0
  65. package/esm2020/services/catalog/helpers/index.mjs +5 -0
  66. package/esm2020/services/catalog/helpers/product-fields.helper.mjs +39 -0
  67. package/esm2020/services/catalog/index.mjs +8 -8
  68. package/esm2020/services/catalog/models/category-with-tree.model.mjs +10 -10
  69. package/esm2020/services/catalog/models/index.mjs +2 -2
  70. package/esm2020/services/catalog/services/catalog-helpers.service.mjs +33 -0
  71. package/esm2020/services/catalog/services/catalog-operations.facade.mjs +26 -0
  72. package/esm2020/services/catalog/services/catalog-repository.service.mjs +25 -0
  73. package/esm2020/services/catalog/services/index.mjs +5 -0
  74. package/esm2020/services/catalog/services/product-management.facade.mjs +25 -0
  75. package/esm2020/services/catalog/strategies/category-search.strategy.mjs +133 -0
  76. package/esm2020/services/catalog/strategies/index.mjs +4 -0
  77. package/esm2020/services/catalog/strategies/profile-search.strategy.mjs +42 -0
  78. package/esm2020/services/catalog/strategies/term-search.strategy.mjs +126 -0
  79. package/esm2020/services/catalog/strategies/types/strategy-params.type.mjs +2 -0
  80. package/esm2020/services/catalog/types/fetch-products-options.type.mjs +2 -0
  81. package/esm2020/services/catalog/types/fetch-products-params.type.mjs +2 -0
  82. package/esm2020/services/catalog/types/fetch-products-response.type.mjs +2 -0
  83. package/esm2020/services/catalog/types/index.mjs +6 -2
  84. package/esm2020/services/catalog/types/method-params.type.mjs +2 -0
  85. package/esm2020/services/catalog/types/product-sort.type.mjs +2 -2
  86. package/esm2020/services/catalog/wishlist.service.mjs +255 -115
  87. package/esm2020/services/checkout/checkout-dependencies.facade.mjs +20 -0
  88. package/esm2020/services/checkout/checkout-repositories.facade.mjs +20 -0
  89. package/esm2020/services/checkout/index.mjs +3 -0
  90. package/esm2020/services/checkout-subscription.service.mjs +55 -50
  91. package/esm2020/services/checkout.service.mjs +106 -68
  92. package/esm2020/services/coupon/coupon-repositories.facade.mjs +24 -0
  93. package/esm2020/services/coupon/index.mjs +2 -0
  94. package/esm2020/services/coupon/types/coupon-params.type.mjs +2 -0
  95. package/esm2020/services/coupon.service.mjs +248 -235
  96. package/esm2020/services/helpers/index.mjs +2 -2
  97. package/esm2020/services/helpers/util.helper.mjs +18 -18
  98. package/esm2020/services/home-shop/home-shop-repositories.facade.mjs +24 -0
  99. package/esm2020/services/home-shop/index.mjs +2 -0
  100. package/esm2020/services/home-shop.service.mjs +119 -125
  101. package/esm2020/services/index.mjs +10 -11
  102. package/esm2020/services/order.service.mjs +30 -30
  103. package/esm2020/services/shared/configuration.facade.mjs +29 -0
  104. package/esm2020/services/shared/index.mjs +2 -0
  105. package/esm2020/services/types/index.mjs +3 -3
  106. package/esm2020/services/types/required-checkout-data.type.mjs +2 -2
  107. package/esm2020/services/types/required-checkout-subscription-data.type.mjs +2 -2
  108. package/esm2020/types/firebase-app-config.type.mjs +2 -2
  109. package/esm2020/types/index.mjs +2 -2
  110. package/fesm2015/infrab4a-connect-angular.mjs +3297 -2342
  111. package/fesm2015/infrab4a-connect-angular.mjs.map +1 -1
  112. package/fesm2020/infrab4a-connect-angular.mjs +3206 -2281
  113. package/fesm2020/infrab4a-connect-angular.mjs.map +1 -1
  114. package/helpers/index.d.ts +1 -1
  115. package/helpers/mobile-operation-system-checker.helper.d.ts +3 -3
  116. package/index.d.ts +6 -6
  117. package/interfaces/catalog-strategies.interface.d.ts +31 -0
  118. package/interfaces/category-facades.interface.d.ts +6 -0
  119. package/interfaces/index.d.ts +2 -0
  120. package/package.json +8 -6
  121. package/persistence/cookie-data-persistence.d.ts +10 -10
  122. package/persistence/data-persistence.d.ts +6 -6
  123. package/persistence/index.d.ts +2 -2
  124. package/services/auth.service.d.ts +18 -18
  125. package/services/cart/cart-services.facade.d.ts +12 -0
  126. package/services/cart/index.d.ts +1 -0
  127. package/services/cart.service.d.ts +26 -42
  128. package/services/catalog/adapters/category-structure.adapter.d.ts +4 -4
  129. package/services/catalog/adapters/index.d.ts +3 -3
  130. package/services/catalog/adapters/new-category-structure.adapter.d.ts +12 -12
  131. package/services/catalog/adapters/old-category-structure.adapter.d.ts +10 -10
  132. package/services/catalog/catalog.service.d.ts +24 -86
  133. package/services/catalog/category.service.d.ts +22 -20
  134. package/services/catalog/context/catalog-search.context.d.ts +14 -0
  135. package/services/catalog/enums/index.d.ts +1 -1
  136. package/services/catalog/enums/product-sorts.enum.d.ts +9 -9
  137. package/services/catalog/facades/catalog-service.facade.d.ts +15 -0
  138. package/services/catalog/facades/catalog-strategies.facade.d.ts +10 -0
  139. package/services/catalog/facades/category-repository.facade.d.ts +9 -0
  140. package/services/catalog/facades/category-service.facade.d.ts +15 -0
  141. package/services/catalog/facades/index.d.ts +5 -0
  142. package/services/catalog/facades/product-catalog.facade.d.ts +10 -0
  143. package/services/catalog/helpers/brand-manager.helper.d.ts +14 -0
  144. package/services/catalog/helpers/catalog-filter.helper.d.ts +8 -0
  145. package/services/catalog/helpers/catalog-sort.helper.d.ts +7 -0
  146. package/services/catalog/helpers/index.d.ts +4 -0
  147. package/services/catalog/helpers/product-fields.helper.d.ts +7 -0
  148. package/services/catalog/index.d.ts +7 -7
  149. package/services/catalog/models/category-with-tree.model.d.ts +4 -4
  150. package/services/catalog/models/index.d.ts +1 -1
  151. package/services/catalog/services/catalog-helpers.service.d.ts +17 -0
  152. package/services/catalog/services/catalog-operations.facade.d.ts +13 -0
  153. package/services/catalog/services/catalog-repository.service.d.ts +12 -0
  154. package/services/catalog/services/index.d.ts +4 -0
  155. package/services/catalog/services/product-management.facade.d.ts +12 -0
  156. package/services/catalog/strategies/category-search.strategy.d.ts +19 -0
  157. package/services/catalog/strategies/index.d.ts +3 -0
  158. package/services/catalog/strategies/profile-search.strategy.d.ts +14 -0
  159. package/services/catalog/strategies/term-search.strategy.d.ts +20 -0
  160. package/services/catalog/strategies/types/strategy-params.type.d.ts +58 -0
  161. package/services/catalog/types/fetch-products-options.type.d.ts +8 -0
  162. package/services/catalog/types/fetch-products-params.type.d.ts +25 -0
  163. package/services/catalog/types/fetch-products-response.type.d.ts +19 -0
  164. package/services/catalog/types/index.d.ts +5 -1
  165. package/services/catalog/types/method-params.type.d.ts +17 -0
  166. package/services/catalog/types/product-sort.type.d.ts +2 -2
  167. package/services/catalog/wishlist.service.d.ts +58 -38
  168. package/services/checkout/checkout-dependencies.facade.d.ts +10 -0
  169. package/services/checkout/checkout-repositories.facade.d.ts +9 -0
  170. package/services/checkout/index.d.ts +2 -0
  171. package/services/checkout-subscription.service.d.ts +19 -19
  172. package/services/checkout.service.d.ts +30 -24
  173. package/services/coupon/coupon-repositories.facade.d.ts +10 -0
  174. package/services/coupon/index.d.ts +1 -0
  175. package/services/coupon/types/coupon-params.type.d.ts +13 -0
  176. package/services/coupon.service.d.ts +36 -29
  177. package/services/helpers/index.d.ts +1 -1
  178. package/services/helpers/util.helper.d.ts +3 -3
  179. package/services/home-shop/home-shop-repositories.facade.d.ts +10 -0
  180. package/services/home-shop/index.d.ts +1 -0
  181. package/services/home-shop.service.d.ts +26 -26
  182. package/services/index.d.ts +9 -10
  183. package/services/order.service.d.ts +13 -13
  184. package/services/shared/configuration.facade.d.ts +12 -0
  185. package/services/shared/index.d.ts +1 -0
  186. package/services/types/index.d.ts +2 -2
  187. package/services/types/required-checkout-data.type.d.ts +2 -2
  188. package/services/types/required-checkout-subscription-data.type.d.ts +2 -2
  189. package/types/firebase-app-config.type.d.ts +1 -1
  190. package/types/index.d.ts +1 -1
  191. package/esm2020/services/shipping.service.mjs +0 -96
  192. package/esm2020/services/types/shipping-methods.type.mjs +0 -2
  193. package/services/shipping.service.d.ts +0 -19
  194. package/services/types/shipping-methods.type.d.ts +0 -12
@@ -1 +1 @@
1
- export * from './mobile-operation-system-checker.helper';
1
+ export * from './mobile-operation-system-checker.helper';
@@ -1,3 +1,3 @@
1
- export declare class MobileOperationSystemCheckerHelper {
2
- static isAppleDevice(): boolean;
3
- }
1
+ export declare class MobileOperationSystemCheckerHelper {
2
+ static isAppleDevice(): boolean;
3
+ }
package/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export * from './angular-connect.module';
2
- export * from './angular-firebase-auth.module';
3
- export * from './angular-firestore.module';
4
- export * from './angular-hasura-graphql.module';
5
- export * from './persistence';
6
- export * from './services';
1
+ export * from './angular-connect.module';
2
+ export * from './angular-firebase-auth.module';
3
+ export * from './angular-firestore.module';
4
+ export * from './angular-hasura-graphql.module';
5
+ export * from './persistence';
6
+ export * from './services';
@@ -0,0 +1,31 @@
1
+ import { Category, Product, ProductGender, RepositoryCacheOptions, RepositoryFindResult, Shops } from '@infrab4a/connect';
2
+ export interface CatalogSearchParams {
3
+ category?: Category;
4
+ profile?: string[];
5
+ term?: string;
6
+ filters?: CatalogFilters;
7
+ mainGender?: ProductGender;
8
+ limits: {
9
+ limit?: number;
10
+ offset?: number;
11
+ };
12
+ sort?: string;
13
+ }
14
+ export interface CatalogFilters {
15
+ clubDiscount?: number[];
16
+ brands?: string[];
17
+ prices?: {
18
+ min?: number;
19
+ max?: number;
20
+ subscriberPrice?: boolean;
21
+ };
22
+ gender?: ProductGender[];
23
+ rate?: number;
24
+ customOptions?: string[];
25
+ tags?: string[];
26
+ }
27
+ export interface CatalogSearchStrategy {
28
+ search(params: CatalogSearchParams, shop: Shops, optionsCache?: {
29
+ cache?: RepositoryCacheOptions;
30
+ }): Promise<RepositoryFindResult<Product>>;
31
+ }
@@ -0,0 +1,6 @@
1
+ import { CategoryRepository, ProductSearchIndex, ProductStockNotificationRepository } from '@infrab4a/connect';
2
+ export interface ProductServicesFacade {
3
+ productStockNotificationRepository: ProductStockNotificationRepository;
4
+ categoryRepository: CategoryRepository;
5
+ productSearch: ProductSearchIndex;
6
+ }
@@ -0,0 +1,2 @@
1
+ export * from './catalog-strategies.interface';
2
+ export * from './category-facades.interface';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infrab4a/connect-angular",
3
- "version": "5.1.0",
3
+ "version": "5.2.1-beta.0",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org"
6
6
  },
@@ -9,12 +9,14 @@
9
9
  "url": "https://github.com/B4AGroup/b4a-firebase-libs"
10
10
  },
11
11
  "peerDependencies": {
12
- "@angular/common": "^17.0.0",
13
- "@angular/core": "^17.0.0",
14
- "@angular/fire": "^17.0.0-next.0",
15
- "@infrab4a/connect": "^4.9.0-beta.0",
12
+ "@angular/common": "^15.1.4",
13
+ "@angular/core": "^15.1.4",
14
+ "@angular/fire": "7.5.0",
15
+ "@infrab4a/connect": "5.0.0",
16
+ "class-transformer": "^0.5.1",
16
17
  "js-cookie": "^3.0.1",
17
- "rxjs": "^7.8.1"
18
+ "rxjs": "^6.6.7",
19
+ "ts-custom-error": "^3.3.1"
18
20
  },
19
21
  "dependencies": {
20
22
  "js-cookie": "^3.0.1",
@@ -1,10 +1,10 @@
1
- import { Observable } from 'rxjs';
2
- import { DataPersistence } from './data-persistence';
3
- import * as i0 from "@angular/core";
4
- export declare class CookieDataPersistence implements DataPersistence {
5
- get(key: string): Observable<string>;
6
- remove(key: string): Observable<void>;
7
- set(key: string, value: string): Observable<void>;
8
- static ɵfac: i0.ɵɵFactoryDeclaration<CookieDataPersistence, never>;
9
- static ɵprov: i0.ɵɵInjectableDeclaration<CookieDataPersistence>;
10
- }
1
+ import { Observable } from 'rxjs';
2
+ import { DataPersistence } from './data-persistence';
3
+ import * as i0 from "@angular/core";
4
+ export declare class CookieDataPersistence implements DataPersistence {
5
+ get(key: string): Observable<string>;
6
+ remove(key: string): Observable<void>;
7
+ set(key: string, value: string): Observable<void>;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<CookieDataPersistence, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<CookieDataPersistence>;
10
+ }
@@ -1,6 +1,6 @@
1
- import { Observable } from 'rxjs';
2
- export interface DataPersistence {
3
- get(key: string): Observable<string>;
4
- remove(key: string): Observable<void>;
5
- set(key: string, value: string): Observable<void>;
6
- }
1
+ import { Observable } from 'rxjs';
2
+ export interface DataPersistence {
3
+ get(key: string): Observable<string>;
4
+ remove(key: string): Observable<void>;
5
+ set(key: string, value: string): Observable<void>;
6
+ }
@@ -1,2 +1,2 @@
1
- export * from './cookie-data-persistence';
2
- export * from './data-persistence';
1
+ export * from './cookie-data-persistence';
2
+ export * from './data-persistence';
@@ -1,18 +1,18 @@
1
- import { Auth, User as FirebaseUser } from '@angular/fire/auth';
2
- import { User, UserRepository } from '@infrab4a/connect';
3
- import { Observable } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- export declare class AuthService {
6
- private readonly angularFireAuth;
7
- private readonly userRepository;
8
- constructor(angularFireAuth: Auth, userRepository: UserRepository);
9
- getAuthstate(): Observable<{
10
- user: User;
11
- isAnonymous: boolean;
12
- }>;
13
- getUser(): Observable<User>;
14
- getTokenId(): Observable<string>;
15
- getFireUser(): Observable<FirebaseUser>;
16
- static ɵfac: i0.ɵɵFactoryDeclaration<AuthService, never>;
17
- static ɵprov: i0.ɵɵInjectableDeclaration<AuthService>;
18
- }
1
+ import { Auth, User as FirebaseUser } from '@angular/fire/auth';
2
+ import { User, UserRepository } from '@infrab4a/connect';
3
+ import { Observable } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export declare class AuthService {
6
+ private readonly angularFireAuth;
7
+ private readonly userRepository;
8
+ constructor(angularFireAuth: Auth, userRepository: UserRepository);
9
+ getAuthstate(): Observable<{
10
+ user: User;
11
+ isAnonymous: boolean;
12
+ }>;
13
+ getUser(): Observable<User>;
14
+ getTokenId(): Observable<string>;
15
+ getFireUser(): Observable<FirebaseUser>;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<AuthService, never>;
17
+ static ɵprov: i0.ɵɵInjectableDeclaration<AuthService>;
18
+ }
@@ -0,0 +1,12 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { AuthService } from '../auth.service';
3
+ import { CheckoutService } from '../checkout.service';
4
+ import * as i0 from "@angular/core";
5
+ export declare class CartServicesFacade {
6
+ readonly authService: AuthService;
7
+ readonly checkoutService: CheckoutService;
8
+ readonly httpClient: HttpClient;
9
+ constructor(authService: AuthService, checkoutService: CheckoutService, httpClient: HttpClient);
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<CartServicesFacade, never>;
11
+ static ɵprov: i0.ɵɵInjectableDeclaration<CartServicesFacade>;
12
+ }
@@ -0,0 +1 @@
1
+ export { CartServicesFacade } from './cart-services.facade';
@@ -1,42 +1,26 @@
1
- import { Buy2WinFirestoreRepository, CategoryRepository, LineItem, ProductRepository, Shops, User, VariantRepository } from '@infrab4a/connect';
2
- import { Observable } from 'rxjs';
3
- import { AuthService } from './auth.service';
4
- import { CheckoutService } from './checkout.service';
5
- import { RequiredCheckoutData } from './types';
6
- import * as i0 from "@angular/core";
7
- export type Cart = {
8
- [id: string]: LineItem;
9
- };
10
- export declare class CartService {
11
- private readonly authService;
12
- private readonly checkoutService;
13
- private readonly defaultShop;
14
- private readonly productRepository;
15
- private readonly categoryRepository;
16
- private readonly variantRepository;
17
- private readonly buy2WinRepository;
18
- private cartSubject;
19
- constructor(authService: AuthService, checkoutService: CheckoutService, defaultShop: Shops, productRepository: ProductRepository, categoryRepository: CategoryRepository, variantRepository: VariantRepository, buy2WinRepository: Buy2WinFirestoreRepository);
20
- addItem(item: LineItem, quantity?: number): Observable<Cart>;
21
- decreaseItem(item: LineItem): Observable<Cart>;
22
- getCart(checkout?: RequiredCheckoutData): Observable<Cart>;
23
- /**
24
- * @deprecated The method should not be used
25
- */
26
- getVariantPriceDiscount(item: LineItem): Observable<number>;
27
- removeItem(item: LineItem): Observable<Cart>;
28
- updateUserCart(user: User): Observable<Cart>;
29
- clearCart(): Observable<Cart>;
30
- private buildCartFromCheckout;
31
- private updateLineItemInCart;
32
- private generateCartObject;
33
- private buildLineItem;
34
- private roundPrice;
35
- private getProductData;
36
- private getProductPrice;
37
- private checkMaxStock;
38
- getGifts(): Observable<Cart>;
39
- private giftToLineItems;
40
- static ɵfac: i0.ɵɵFactoryDeclaration<CartService, never>;
41
- static ɵprov: i0.ɵɵInjectableDeclaration<CartService>;
42
- }
1
+ import { LineItem, User } from '@infrab4a/connect';
2
+ import { Observable } from 'rxjs';
3
+ import { RequiredCheckoutData } from './types';
4
+ import { CartServicesFacade } from './cart';
5
+ import { ConfigurationFacade } from './shared';
6
+ import * as i0 from "@angular/core";
7
+ export type Cart = {
8
+ [id: string]: LineItem;
9
+ };
10
+ export declare class CartService {
11
+ private readonly servicesFacade;
12
+ private readonly configurationFacade;
13
+ private cartSubject;
14
+ private checkoutUrl;
15
+ constructor(servicesFacade: CartServicesFacade, configurationFacade: ConfigurationFacade);
16
+ addItem(item: LineItem, quantity?: number): Observable<Cart>;
17
+ decreaseItem(item: LineItem): Observable<Cart>;
18
+ removeItem(item: LineItem): Observable<Cart>;
19
+ updateUserCart(user: User): Observable<Cart>;
20
+ getCart(checkout?: RequiredCheckoutData): Observable<Cart>;
21
+ clearCart(): Observable<Cart>;
22
+ private buildCartFromCheckout;
23
+ private generateCartObject;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<CartService, never>;
25
+ static ɵprov: i0.ɵɵInjectableDeclaration<CartService>;
26
+ }
@@ -1,4 +1,4 @@
1
- import { Category, Product, RepositoryFindFielters } from '@infrab4a/connect/';
2
- export interface CategoryStructureAdapter {
3
- buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>>;
4
- }
1
+ import { Category, Product, RepositoryFindFielters } from '@infrab4a/connect/';
2
+ export interface CategoryStructureAdapter {
3
+ buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>>;
4
+ }
@@ -1,3 +1,3 @@
1
- export * from './category-structure.adapter';
2
- export * from './new-category-structure.adapter';
3
- export * from './old-category-structure.adapter';
1
+ export * from './category-structure.adapter';
2
+ export * from './new-category-structure.adapter';
3
+ export * from './old-category-structure.adapter';
@@ -1,12 +1,12 @@
1
- import { Category, CategoryRepository, Product, RepositoryFindFielters } from '@infrab4a/connect';
2
- import { CategoryStructureAdapter } from './category-structure.adapter';
3
- import * as i0 from "@angular/core";
4
- export declare class NewCategoryStructureAdapter implements CategoryStructureAdapter {
5
- private readonly categoryRepository;
6
- constructor(categoryRepository: CategoryRepository);
7
- buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>>;
8
- private getAllCategoriesIdFromCategory;
9
- private getCategory;
10
- static ɵfac: i0.ɵɵFactoryDeclaration<NewCategoryStructureAdapter, never>;
11
- static ɵprov: i0.ɵɵInjectableDeclaration<NewCategoryStructureAdapter>;
12
- }
1
+ import { Category, CategoryRepository, Product, RepositoryFindFielters } from '@infrab4a/connect';
2
+ import { CategoryStructureAdapter } from './category-structure.adapter';
3
+ import * as i0 from "@angular/core";
4
+ export declare class NewCategoryStructureAdapter implements CategoryStructureAdapter {
5
+ private readonly categoryRepository;
6
+ constructor(categoryRepository: CategoryRepository);
7
+ buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>>;
8
+ private getAllCategoriesIdFromCategory;
9
+ private getCategory;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<NewCategoryStructureAdapter, never>;
11
+ static ɵprov: i0.ɵɵInjectableDeclaration<NewCategoryStructureAdapter>;
12
+ }
@@ -1,10 +1,10 @@
1
- import { Category, CategoryRepository, Product, RepositoryFindFielters } from '@infrab4a/connect';
2
- import { CategoryStructureAdapter } from './category-structure.adapter';
3
- import * as i0 from "@angular/core";
4
- export declare class OldCategoryStructureAdapter implements CategoryStructureAdapter {
5
- private readonly categoryRepository;
6
- constructor(categoryRepository: CategoryRepository);
7
- buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>>;
8
- static ɵfac: i0.ɵɵFactoryDeclaration<OldCategoryStructureAdapter, never>;
9
- static ɵprov: i0.ɵɵInjectableDeclaration<OldCategoryStructureAdapter>;
10
- }
1
+ import { Category, CategoryRepository, Product, RepositoryFindFielters } from '@infrab4a/connect';
2
+ import { CategoryStructureAdapter } from './category-structure.adapter';
3
+ import * as i0 from "@angular/core";
4
+ export declare class OldCategoryStructureAdapter implements CategoryStructureAdapter {
5
+ private readonly categoryRepository;
6
+ constructor(categoryRepository: CategoryRepository);
7
+ buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>>;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<OldCategoryStructureAdapter, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<OldCategoryStructureAdapter>;
10
+ }
@@ -1,86 +1,24 @@
1
- import { Category, CategoryRepository, Product, ProductGender, ProductRepository, ProductsIndex, Shops } from '@infrab4a/connect';
2
- import { CategoryStructureAdapter } from './adapters';
3
- import { ProductSort } from './types/product-sort.type';
4
- import * as i0 from "@angular/core";
5
- type FetchProductsFilters = {
6
- clubDiscount?: number[];
7
- brands?: string[];
8
- prices?: {
9
- min?: number;
10
- max?: number;
11
- subscriberPrice?: boolean;
12
- };
13
- gender?: ProductGender[];
14
- rate?: number;
15
- customOptions?: string[];
16
- tags?: string[];
17
- };
18
- type FetchProductsOptions = {
19
- page?: number;
20
- perPage?: number;
21
- sort?: ProductSort;
22
- mainGender?: ProductGender;
23
- };
24
- type FetchProductsMainParams<T extends Category> = {
25
- category?: T;
26
- profile?: string[];
27
- term?: string;
28
- };
29
- type FetchProductsParams<T extends Category> = FetchProductsOptions & ({
30
- category: FetchProductsMainParams<T>['category'];
31
- filters?: FetchProductsFilters & {
32
- customOptions?: never;
33
- };
34
- } | {
35
- profile: FetchProductsMainParams<T>['profile'];
36
- filters?: FetchProductsFilters & {
37
- customOptions?: never;
38
- tags?: never;
39
- };
40
- } | {
41
- term: FetchProductsMainParams<T>['term'];
42
- filters?: FetchProductsFilters & {
43
- customOptions?: never;
44
- };
45
- });
46
- type FetchProductsResponse = {
47
- products: {
48
- data: Product[];
49
- total: number;
50
- };
51
- pages: number;
52
- prices: {
53
- price: {
54
- min: number;
55
- max: number;
56
- };
57
- subscriberPrice: {
58
- min: number;
59
- max: number;
60
- };
61
- };
62
- brands?: string[];
63
- };
64
- export declare class CatalogService<T extends Category = Category> {
65
- private readonly productRepository;
66
- private readonly categoryRepository;
67
- private readonly categoryStructureAdapter;
68
- private readonly shop;
69
- private readonly productIndex;
70
- private productsByTerm;
71
- constructor(productRepository: ProductRepository, categoryRepository: CategoryRepository, categoryStructureAdapter: CategoryStructureAdapter, shop: Shops, productIndex: ProductsIndex);
72
- fetchProducts(options: FetchProductsParams<T>): Promise<FetchProductsResponse>;
73
- private findCatalog;
74
- private buildMainFilter;
75
- private findCatalogAndSortByMostRevelant;
76
- private findCatalogIdsByElasticSearch;
77
- private buildFilterQuery;
78
- private buildSortQuery;
79
- private buildLimitQuery;
80
- private hasProfile;
81
- private hasTerm;
82
- private hasCategory;
83
- static ɵfac: i0.ɵɵFactoryDeclaration<CatalogService<any>, never>;
84
- static ɵprov: i0.ɵɵInjectableDeclaration<CatalogService<any>>;
85
- }
86
- export {};
1
+ import { Category, RepositoryCacheOptions, Shops } from '@infrab4a/connect';
2
+ import { CatalogSearchContext } from './context/catalog-search.context';
3
+ import { CatalogHelpersService } from './services';
4
+ import { FetchProductsParams, FetchProductsResponse, StockNotificationParams } from './types';
5
+ import * as i0 from "@angular/core";
6
+ export declare class CatalogService<T extends Category = Category> {
7
+ private readonly searchContext;
8
+ private readonly helpersService;
9
+ private readonly shop;
10
+ constructor(searchContext: CatalogSearchContext, helpersService: CatalogHelpersService, shop: Shops);
11
+ fetchProducts(options: FetchProductsParams<T>, optionsCache?: {
12
+ cache?: RepositoryCacheOptions;
13
+ }): Promise<FetchProductsResponse>;
14
+ addCustomerToStockNotification(params: StockNotificationParams): Promise<void>;
15
+ private validateRequest;
16
+ private buildSearchParams;
17
+ private buildResponse;
18
+ private buildLimitQuery;
19
+ private hasProfile;
20
+ private hasTerm;
21
+ private hasCategory;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<CatalogService<any>, never>;
23
+ static ɵprov: i0.ɵɵInjectableDeclaration<CatalogService<any>>;
24
+ }
@@ -1,20 +1,22 @@
1
- import { Category, CategoryFilterRepository, CategoryRepository, Filter, ProductGender, ProductRepository, Shops } from '@infrab4a/connect';
2
- import { CategoryStructureAdapter } from './adapters';
3
- import * as i0 from "@angular/core";
4
- type FetchBrandsOptions = {
5
- mainGender?: ProductGender;
6
- shop?: Shops;
7
- };
8
- export declare class CategoryService {
9
- private readonly productRepository;
10
- private readonly categoryRepository;
11
- private readonly categoryFilterRepository;
12
- private readonly categoryStructureAdapter;
13
- private readonly shop;
14
- constructor(productRepository: ProductRepository, categoryRepository: CategoryRepository, categoryFilterRepository: CategoryFilterRepository, categoryStructureAdapter: CategoryStructureAdapter, shop: Shops);
15
- fetchBrands(category: Category, options?: FetchBrandsOptions): Promise<Category[]>;
16
- fetchFilterOptions(category: Category): Promise<Filter[]>;
17
- static ɵfac: i0.ɵɵFactoryDeclaration<CategoryService, never>;
18
- static ɵprov: i0.ɵɵInjectableDeclaration<CategoryService>;
19
- }
20
- export {};
1
+ import { Category, Filter, ProductGender, RepositoryCacheOptions, Shops } from '@infrab4a/connect';
2
+ import { CategoryRepositoryFacade, ProductCatalogFacade } from './facades';
3
+ import * as i0 from "@angular/core";
4
+ type FetchBrandsOptions = {
5
+ mainGender?: ProductGender;
6
+ shop?: Shops;
7
+ };
8
+ export declare class CategoryService {
9
+ private readonly categoryFacade;
10
+ private readonly productCatalog;
11
+ private readonly shop;
12
+ constructor(categoryFacade: CategoryRepositoryFacade, productCatalog: ProductCatalogFacade, shop: Shops);
13
+ fetchBrands(category: Category, options?: FetchBrandsOptions, optionsCache?: {
14
+ cache?: RepositoryCacheOptions;
15
+ }): Promise<Category[]>;
16
+ fetchFilterOptions(category: Category, optionsCache?: {
17
+ cache?: RepositoryCacheOptions;
18
+ }): Promise<Filter[]>;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<CategoryService, never>;
20
+ static ɵprov: i0.ɵɵInjectableDeclaration<CategoryService>;
21
+ }
22
+ export {};
@@ -0,0 +1,14 @@
1
+ import { Product, RepositoryCacheOptions, RepositoryFindResult, Shops } from '@infrab4a/connect';
2
+ import { CatalogSearchParams, CatalogSearchStrategy } from '../../../interfaces';
3
+ export declare class CatalogSearchContext {
4
+ private readonly categoryStrategy;
5
+ private readonly termStrategy;
6
+ private readonly profileStrategy;
7
+ private strategies;
8
+ constructor(categoryStrategy: CatalogSearchStrategy, termStrategy: CatalogSearchStrategy, profileStrategy: CatalogSearchStrategy);
9
+ executeSearch(params: CatalogSearchParams, shop: Shops, optionsCache?: {
10
+ cache?: RepositoryCacheOptions;
11
+ }): Promise<RepositoryFindResult<Product>>;
12
+ private initializeStrategies;
13
+ private selectStrategy;
14
+ }
@@ -1 +1 @@
1
- export * from './product-sorts.enum';
1
+ export * from './product-sorts.enum';
@@ -1,9 +1,9 @@
1
- export declare enum ProductSorts {
2
- MOST_RELEVANT = "most-relevant",
3
- BEST_SELLER = "best-sellers",
4
- BIGGEST_PRICE = "biggest-price",
5
- LOWEST_PRICE = "lowest-price",
6
- BIGGEST_DISCOUNT = "biggest-discount",
7
- BEST_RATING = "best-rating",
8
- NEWS = "news"
9
- }
1
+ export declare enum ProductSorts {
2
+ MOST_RELEVANT = "most-relevant",
3
+ BEST_SELLER = "best-sellers",
4
+ BIGGEST_PRICE = "biggest-price",
5
+ LOWEST_PRICE = "lowest-price",
6
+ BIGGEST_DISCOUNT = "biggest-discount",
7
+ BEST_RATING = "best-rating",
8
+ NEWS = "news"
9
+ }
@@ -0,0 +1,15 @@
1
+ import { Shops } from '@infrab4a/connect';
2
+ import { CatalogService } from '../catalog.service';
3
+ import { CatalogHelpersService } from '../services';
4
+ import { CatalogStrategiesFacade } from './catalog-strategies.facade';
5
+ import * as i0 from "@angular/core";
6
+ export declare class CatalogServiceFacade {
7
+ private readonly helpersService;
8
+ private readonly strategiesFacade;
9
+ private readonly shop;
10
+ private catalogService;
11
+ constructor(helpersService: CatalogHelpersService, strategiesFacade: CatalogStrategiesFacade, shop: Shops);
12
+ getCatalogService(): CatalogService;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<CatalogServiceFacade, never>;
14
+ static ɵprov: i0.ɵɵInjectableDeclaration<CatalogServiceFacade>;
15
+ }
@@ -0,0 +1,10 @@
1
+ import { CategorySearchStrategy, ProfileSearchStrategy, TermSearchStrategy } from '../strategies';
2
+ import * as i0 from "@angular/core";
3
+ export declare class CatalogStrategiesFacade {
4
+ readonly categoryStrategy: CategorySearchStrategy;
5
+ readonly termStrategy: TermSearchStrategy;
6
+ readonly profileStrategy: ProfileSearchStrategy;
7
+ constructor(categoryStrategy: CategorySearchStrategy, termStrategy: TermSearchStrategy, profileStrategy: ProfileSearchStrategy);
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<CatalogStrategiesFacade, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<CatalogStrategiesFacade>;
10
+ }
@@ -0,0 +1,9 @@
1
+ import { CategoryFilterRepository, CategoryRepository } from '@infrab4a/connect';
2
+ import * as i0 from "@angular/core";
3
+ export declare class CategoryRepositoryFacade {
4
+ readonly categoryRepository: CategoryRepository;
5
+ readonly categoryFilterRepository: CategoryFilterRepository;
6
+ constructor(categoryRepository: CategoryRepository, categoryFilterRepository: CategoryFilterRepository);
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<CategoryRepositoryFacade, never>;
8
+ static ɵprov: i0.ɵɵInjectableDeclaration<CategoryRepositoryFacade>;
9
+ }
@@ -0,0 +1,15 @@
1
+ import { Shops } from '@infrab4a/connect';
2
+ import { CategoryService } from '../category.service';
3
+ import { CategoryRepositoryFacade } from './category-repository.facade';
4
+ import { ProductCatalogFacade } from './product-catalog.facade';
5
+ import * as i0 from "@angular/core";
6
+ export declare class CategoryServiceFacade {
7
+ private readonly categoryRepositoryFacade;
8
+ private readonly productCatalogFacade;
9
+ private readonly shop;
10
+ private categoryService;
11
+ constructor(categoryRepositoryFacade: CategoryRepositoryFacade, productCatalogFacade: ProductCatalogFacade, shop: Shops);
12
+ getCategoryService(): CategoryService;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<CategoryServiceFacade, never>;
14
+ static ɵprov: i0.ɵɵInjectableDeclaration<CategoryServiceFacade>;
15
+ }
@@ -0,0 +1,5 @@
1
+ export { CatalogServiceFacade } from './catalog-service.facade';
2
+ export { CatalogStrategiesFacade } from './catalog-strategies.facade';
3
+ export { CategoryRepositoryFacade } from './category-repository.facade';
4
+ export { CategoryServiceFacade } from './category-service.facade';
5
+ export { ProductCatalogFacade } from './product-catalog.facade';
@@ -0,0 +1,10 @@
1
+ import { ProductRepository } from '@infrab4a/connect';
2
+ import { CategoryStructureAdapter } from '../adapters';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ProductCatalogFacade {
5
+ readonly productRepository: ProductRepository;
6
+ readonly categoryStructureAdapter: CategoryStructureAdapter;
7
+ constructor(productRepository: ProductRepository, categoryStructureAdapter: CategoryStructureAdapter);
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductCatalogFacade, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<ProductCatalogFacade>;
10
+ }
@@ -0,0 +1,14 @@
1
+ import { CatalogSearchParams } from '../../../interfaces';
2
+ import { ProductCatalogFacade } from '../facades';
3
+ import * as i0 from "@angular/core";
4
+ export declare class BrandManagerHelper {
5
+ private readonly productCatalog;
6
+ private brandsList;
7
+ constructor(productCatalog: ProductCatalogFacade);
8
+ setBrandsList(options: CatalogSearchParams, brands: string[]): Promise<void>;
9
+ getBrandsList(indexKey: string): string[];
10
+ buildIndexBrands(options: CatalogSearchParams): string;
11
+ private fetchBrandsOnly;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<BrandManagerHelper, never>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<BrandManagerHelper>;
14
+ }
@@ -0,0 +1,8 @@
1
+ import { Product, RepositoryFindFielters } from '@infrab4a/connect';
2
+ import { CatalogFilters } from '../../../interfaces';
3
+ import * as i0 from "@angular/core";
4
+ export declare class CatalogFilterHelper {
5
+ buildFilterQuery(filters: CatalogFilters): RepositoryFindFielters<Product>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<CatalogFilterHelper, never>;
7
+ static ɵprov: i0.ɵɵInjectableDeclaration<CatalogFilterHelper>;
8
+ }