@infrab4a/connect-angular 5.0.0-beta.20 → 5.0.0-beta.22

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 (56) hide show
  1. package/angular-connect.module.d.ts +6 -5
  2. package/angular-firestore.module.d.ts +1 -2
  3. package/esm2022/angular-connect.module.mjs +22 -4
  4. package/esm2022/angular-elastic-search.module.mjs +1 -1
  5. package/esm2022/angular-firebase-auth.module.mjs +1 -1
  6. package/esm2022/angular-firestore.module.mjs +4 -23
  7. package/esm2022/angular-hasura-graphql.module.mjs +1 -1
  8. package/esm2022/consts/category-structure.mjs +1 -1
  9. package/esm2022/consts/default-shop.const.mjs +1 -1
  10. package/esm2022/consts/es-config.const.mjs +1 -1
  11. package/esm2022/consts/firebase-const.mjs +1 -1
  12. package/esm2022/consts/hasura-options.const.mjs +1 -1
  13. package/esm2022/consts/index.mjs +1 -1
  14. package/esm2022/consts/persistence.const.mjs +1 -1
  15. package/esm2022/consts/storage-base-url.const.mjs +1 -1
  16. package/esm2022/helpers/index.mjs +1 -1
  17. package/esm2022/helpers/mobile-operation-system-checker.helper.mjs +1 -1
  18. package/esm2022/index.mjs +1 -1
  19. package/esm2022/persistence/cookie-data-persistence.mjs +1 -1
  20. package/esm2022/persistence/data-persistence.mjs +1 -1
  21. package/esm2022/persistence/index.mjs +1 -1
  22. package/esm2022/services/auth.service.mjs +1 -1
  23. package/esm2022/services/cart.service.mjs +1 -1
  24. package/esm2022/services/catalog/adapters/category-structure.adapter.mjs +1 -1
  25. package/esm2022/services/catalog/adapters/index.mjs +1 -1
  26. package/esm2022/services/catalog/adapters/new-category-structure.adapter.mjs +1 -1
  27. package/esm2022/services/catalog/adapters/old-category-structure.adapter.mjs +1 -1
  28. package/esm2022/services/catalog/catalog.service.mjs +32 -5
  29. package/esm2022/services/catalog/category.service.mjs +1 -1
  30. package/esm2022/services/catalog/enums/index.mjs +1 -1
  31. package/esm2022/services/catalog/enums/product-sorts.enum.mjs +1 -1
  32. package/esm2022/services/catalog/index.mjs +1 -1
  33. package/esm2022/services/catalog/models/category-with-tree.model.mjs +1 -1
  34. package/esm2022/services/catalog/models/index.mjs +1 -1
  35. package/esm2022/services/catalog/types/index.mjs +1 -1
  36. package/esm2022/services/catalog/types/product-sort.type.mjs +1 -1
  37. package/esm2022/services/catalog/wishlist.service.mjs +1 -1
  38. package/esm2022/services/checkout-subscription.service.mjs +1 -1
  39. package/esm2022/services/checkout.service.mjs +1 -1
  40. package/esm2022/services/coupon.service.mjs +1 -1
  41. package/esm2022/services/helpers/index.mjs +1 -1
  42. package/esm2022/services/helpers/util.helper.mjs +1 -1
  43. package/esm2022/services/home-shop.service.mjs +1 -1
  44. package/esm2022/services/index.mjs +1 -1
  45. package/esm2022/services/order.service.mjs +1 -1
  46. package/esm2022/services/shipping.service.mjs +1 -1
  47. package/esm2022/services/types/index.mjs +1 -1
  48. package/esm2022/services/types/required-checkout-data.type.mjs +1 -1
  49. package/esm2022/services/types/required-checkout-subscription-data.type.mjs +1 -1
  50. package/esm2022/services/types/shipping-methods.type.mjs +1 -1
  51. package/esm2022/types/firebase-app-config.type.mjs +1 -1
  52. package/esm2022/types/index.mjs +1 -1
  53. package/fesm2022/infrab4a-connect-angular.mjs +54 -27
  54. package/fesm2022/infrab4a-connect-angular.mjs.map +1 -1
  55. package/package.json +2 -2
  56. package/services/catalog/catalog.service.d.ts +2 -1
@@ -2,15 +2,15 @@ import * as i0 from '@angular/core';
2
2
  import { NgModule, InjectionToken, PLATFORM_ID, Injectable, Inject } from '@angular/core';
3
3
  import * as i1$4 from '@angular/fire/app';
4
4
  import { FirebaseApp, provideFirebaseApp, getApp, initializeApp } from '@angular/fire/app';
5
+ import * as i2 from '@angular/fire/storage';
6
+ import { Storage, provideStorage, getStorage } from '@angular/fire/storage';
5
7
  import * as i1$2 from '@infrab4a/connect';
6
- import { ProductsIndex, AxiosAdapter, Authentication, AuthenticationFirebaseAuthService, Register, RegisterFirebaseAuthService, SignOut, RecoveryPassword, ConnectFirestoreService, UserBeautyProfileFirestoreRepository, Buy2WinFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, CouponFirestoreRepository, CampaignHashtagFirestoreRepository, CampaignDashboardFirestoreRepository, SubscriptionEditionFirestoreRepository, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, ShopMenuFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, ShopSettingsFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, SubscriptionFirestoreRepository, UserFirestoreRepository, UserAddressFirestoreRepository, UserPaymentMethodFirestoreRepository, SubscriptionMaterializationFirestoreRepository, SubscriptionSummaryFirestoreRepository, ProductVariantFirestoreRepository, FirebaseFileUploaderService, CategoryHasuraGraphQLRepository, ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository, ProductReviewsHasuraGraphQLRepository, VariantHasuraGraphQLRepository, ProductStockNotificationHasuraGraphQLRepository, FilterOptionHasuraGraphQLRepository, FilterHasuraGraphQLRepository, CategoryCollectionChildrenHasuraGraphQLRepository, WishlistHasuraGraphQLRepository, Where, Shops, CheckoutTypes, CouponTypes, Exclusivities, isNil, NotFoundError, Checkout, pick, LineItem, RoundProductPricesHelper, set, InvalidArgumentError, Category, Wishlist, CheckoutSubscription, Product, RequiredArgumentError, add, Order, UpdateUserImage } from '@infrab4a/connect';
8
+ import { ProductsIndex, AxiosAdapter, Authentication, AuthenticationFirebaseAuthService, Register, RegisterFirebaseAuthService, SignOut, RecoveryPassword, ConnectFirestoreService, UserBeautyProfileFirestoreRepository, Buy2WinFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, CouponFirestoreRepository, CampaignHashtagFirestoreRepository, CampaignDashboardFirestoreRepository, SubscriptionEditionFirestoreRepository, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, ShopMenuFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, ShopSettingsFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, SubscriptionFirestoreRepository, UserFirestoreRepository, UserAddressFirestoreRepository, UserPaymentMethodFirestoreRepository, SubscriptionMaterializationFirestoreRepository, SubscriptionSummaryFirestoreRepository, ProductVariantFirestoreRepository, CategoryHasuraGraphQLRepository, ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository, ProductReviewsHasuraGraphQLRepository, VariantHasuraGraphQLRepository, ProductStockNotificationHasuraGraphQLRepository, FilterOptionHasuraGraphQLRepository, FilterHasuraGraphQLRepository, CategoryCollectionChildrenHasuraGraphQLRepository, WishlistHasuraGraphQLRepository, Where, Shops, CheckoutTypes, CouponTypes, Exclusivities, isNil, NotFoundError, Checkout, pick, LineItem, RoundProductPricesHelper, set, InvalidArgumentError, Category, Wishlist, CheckoutSubscription, Product, RequiredArgumentError, add, Order, UpdateUserImage, FirebaseFileUploaderService } from '@infrab4a/connect';
7
9
  import * as i1 from '@angular/fire/auth';
8
10
  import { Auth, provideAuth, getAuth, getIdToken, authState } from '@angular/fire/auth';
9
11
  import { isPlatformBrowser, isPlatformServer } from '@angular/common';
10
12
  import * as i1$1 from '@angular/fire/firestore';
11
13
  import { Firestore, provideFirestore, initializeFirestore, memoryLocalCache, docSnapshots, doc } from '@angular/fire/firestore';
12
- import * as i2 from '@angular/fire/storage';
13
- import { Storage, provideStorage, getStorage } from '@angular/fire/storage';
14
14
  import cookie from 'js-cookie';
15
15
  import { of, from, combineLatest, throwError, Subject, iif, forkJoin } from 'rxjs';
16
16
  import { map, mergeMap, catchError, concatMap, tap } from 'rxjs/operators';
@@ -171,8 +171,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
171
171
  }]
172
172
  }] });
173
173
 
174
- const STORAGE_BASE_URL = 'STORAGE_BASE_URL';
175
-
176
174
  class MobileOperationSystemCheckerHelper {
177
175
  static isAppleDevice() {
178
176
  return (['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(navigator?.platform) ||
@@ -192,7 +190,7 @@ class AngularFirestoreModule {
192
190
  };
193
191
  }
194
192
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AngularFirestoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
195
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: AngularFirestoreModule, imports: [AngularElasticSeachModule, i1$1.FirestoreModule, i2.StorageModule] }); }
193
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: AngularFirestoreModule, imports: [AngularElasticSeachModule, i1$1.FirestoreModule] }); }
196
194
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AngularFirestoreModule, providers: [
197
195
  {
198
196
  provide: 'FirestoreOptions',
@@ -405,13 +403,6 @@ class AngularFirestoreModule {
405
403
  },
406
404
  deps: ['FirestoreOptions', ProductFirestoreRepository],
407
405
  },
408
- {
409
- provide: 'FileUploaderService',
410
- useFactory: (storage, baseUrl) => {
411
- return new FirebaseFileUploaderService(storage, baseUrl);
412
- },
413
- deps: [Storage, STORAGE_BASE_URL],
414
- },
415
406
  ], imports: [AngularElasticSeachModule,
416
407
  provideFirestore((injector) => {
417
408
  const platformId = injector.get(PLATFORM_ID);
@@ -425,8 +416,7 @@ class AngularFirestoreModule {
425
416
  localCache: memoryLocalCache(),
426
417
  });
427
418
  return firestore;
428
- }),
429
- provideStorage(() => getStorage())] }); }
419
+ })] }); }
430
420
  }
431
421
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AngularFirestoreModule, decorators: [{
432
422
  type: NgModule,
@@ -446,7 +436,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
446
436
  });
447
437
  return firestore;
448
438
  }),
449
- provideStorage(() => getStorage()),
450
439
  ],
451
440
  providers: [
452
441
  {
@@ -660,13 +649,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
660
649
  },
661
650
  deps: ['FirestoreOptions', ProductFirestoreRepository],
662
651
  },
663
- {
664
- provide: 'FileUploaderService',
665
- useFactory: (storage, baseUrl) => {
666
- return new FirebaseFileUploaderService(storage, baseUrl);
667
- },
668
- deps: [Storage, STORAGE_BASE_URL],
669
- },
670
652
  ],
671
653
  }]
672
654
  }] });
@@ -953,6 +935,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
953
935
  }]
954
936
  }] });
955
937
 
938
+ const STORAGE_BASE_URL = 'STORAGE_BASE_URL';
939
+
956
940
  class CookieDataPersistence {
957
941
  get(key) {
958
942
  return of(cookie.get(key));
@@ -1733,17 +1717,19 @@ class CatalogService {
1733
1717
  async findCatalog(options, limits) {
1734
1718
  if (this.hasTerm(options) && options.sort === 'most-relevant') {
1735
1719
  const productsIds = await this.findCatalogIdsByElasticSearch(options.term);
1736
- return this.findCatalogAndSortByMostRevelant(productsIds, options, limits);
1720
+ return this.findCatalogAndSortByMostRevelantByTerm(productsIds, options, limits);
1737
1721
  }
1738
1722
  if (this.hasCategory(options) && options.sort === 'most-relevant') {
1723
+ const mostRelevant = options.category.mostRelevant ?? [];
1739
1724
  const productsIds = await this.productRepository
1740
1725
  .find({
1726
+ fields: ['id'],
1741
1727
  filters: {
1742
1728
  ...(await this.buildMainFilter(options)),
1743
1729
  },
1744
1730
  })
1745
1731
  .then((products) => products.data.map((product) => product.id));
1746
- return this.findCatalogAndSortByMostRevelant(productsIds, options, limits);
1732
+ return this.findCatalogAndSortByMostRevelant(mostRelevant, productsIds, options, limits);
1747
1733
  }
1748
1734
  const repoParams = {
1749
1735
  filters: {
@@ -1772,7 +1758,32 @@ class CatalogService {
1772
1758
  .search(term, 999, this.shop)
1773
1759
  .then((data) => ({ id: { operator: Where.IN, value: data.hits.map(({ _source }) => _source.id) } }));
1774
1760
  }
1775
- async findCatalogAndSortByMostRevelant(productIds, options, limits) {
1761
+ async findCatalogAndSortByMostRevelant(mostRelevants, productIds, options, limits) {
1762
+ const mostRelevantProductsIds = [...new Set(mostRelevants.concat(productIds))];
1763
+ const totalResult = await this.productRepository.findCatalog({
1764
+ filters: {
1765
+ id: { operator: Where.IN, value: mostRelevantProductsIds },
1766
+ },
1767
+ orderBy: this.buildSortQuery('news'),
1768
+ options: {
1769
+ minimal: ['price'],
1770
+ maximum: ['price'],
1771
+ distinct: ['brand'],
1772
+ },
1773
+ }, options?.mainGender || this.shop === Shops.MENSMARKET ? 'male' : 'female');
1774
+ const firstProducts = totalResult.data.filter((product) => mostRelevants.includes(product.id));
1775
+ const lastProducts = totalResult.data.filter((product) => !mostRelevants.includes(product.id));
1776
+ const categoryMostRelevants = firstProducts.concat(lastProducts);
1777
+ const resultFinal = categoryMostRelevants.slice(limits.offset, limits.offset + limits.limit);
1778
+ return {
1779
+ data: resultFinal,
1780
+ count: totalResult.count,
1781
+ maximum: totalResult.maximum,
1782
+ minimal: totalResult.minimal,
1783
+ distinct: totalResult.distinct,
1784
+ };
1785
+ }
1786
+ async findCatalogAndSortByMostRevelantByTerm(productIds, options, limits) {
1776
1787
  const totalResult = await this.productRepository.findCatalog({
1777
1788
  fields: ['id', 'stock'],
1778
1789
  filters: {
@@ -2325,7 +2336,7 @@ class AngularConnectModule {
2325
2336
  };
2326
2337
  }
2327
2338
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AngularConnectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2328
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: AngularConnectModule, imports: [i1$4.FirebaseAppModule, AngularElasticSeachModule,
2339
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: AngularConnectModule, imports: [i1$4.FirebaseAppModule, i2.StorageModule, AngularElasticSeachModule,
2329
2340
  AngularFirebaseAuthModule,
2330
2341
  AngularFirestoreModule,
2331
2342
  AngularHasuraGraphQLModule] }); }
@@ -2348,6 +2359,13 @@ class AngularConnectModule {
2348
2359
  },
2349
2360
  deps: ['UserRepository', 'FileUploaderService'],
2350
2361
  },
2362
+ {
2363
+ provide: 'FileUploaderService',
2364
+ useFactory: (storage, baseUrl) => {
2365
+ return new FirebaseFileUploaderService(storage, baseUrl);
2366
+ },
2367
+ deps: [Storage, STORAGE_BASE_URL],
2368
+ },
2351
2369
  ], imports: [provideFirebaseApp((injector) => {
2352
2370
  const appName = injector.get(FIREBASE_APP_NAME) || '[DEFAULT]';
2353
2371
  try {
@@ -2357,6 +2375,7 @@ class AngularConnectModule {
2357
2375
  return initializeApp(injector.get(FIREBASE_OPTIONS), appName);
2358
2376
  }
2359
2377
  }),
2378
+ provideStorage((injector) => getStorage(injector.get(FirebaseApp))),
2360
2379
  AngularElasticSeachModule,
2361
2380
  AngularFirebaseAuthModule,
2362
2381
  AngularFirestoreModule,
@@ -2375,6 +2394,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
2375
2394
  return initializeApp(injector.get(FIREBASE_OPTIONS), appName);
2376
2395
  }
2377
2396
  }),
2397
+ provideStorage((injector) => getStorage(injector.get(FirebaseApp))),
2378
2398
  AngularElasticSeachModule,
2379
2399
  AngularFirebaseAuthModule,
2380
2400
  AngularFirestoreModule,
@@ -2399,6 +2419,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImpor
2399
2419
  },
2400
2420
  deps: ['UserRepository', 'FileUploaderService'],
2401
2421
  },
2422
+ {
2423
+ provide: 'FileUploaderService',
2424
+ useFactory: (storage, baseUrl) => {
2425
+ return new FirebaseFileUploaderService(storage, baseUrl);
2426
+ },
2427
+ deps: [Storage, STORAGE_BASE_URL],
2428
+ },
2402
2429
  ],
2403
2430
  }]
2404
2431
  }] });