@infrab4a/connect 4.0.0-beta.14 → 4.0.0-beta.15

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 (105) hide show
  1. package/domain/catalog/models/category-filter.d.ts +11 -0
  2. package/domain/catalog/models/category.d.ts +3 -2
  3. package/domain/catalog/models/filter-option.d.ts +10 -0
  4. package/domain/catalog/models/filter.d.ts +13 -0
  5. package/domain/catalog/models/index.d.ts +3 -0
  6. package/domain/catalog/models/product.d.ts +1 -0
  7. package/domain/catalog/models/types/index.d.ts +0 -1
  8. package/domain/catalog/repositories/category-filter.repository.d.ts +5 -0
  9. package/domain/catalog/repositories/category.repository.d.ts +3 -3
  10. package/domain/catalog/repositories/filter-option.repository.d.ts +4 -0
  11. package/domain/catalog/repositories/filter.repository.d.ts +4 -0
  12. package/domain/catalog/repositories/index.d.ts +3 -0
  13. package/domain/catalog/repositories/product.repository.d.ts +1 -0
  14. package/domain/generic/repository/find.repository.d.ts +3 -0
  15. package/domain/shop-settings/models/index.d.ts +1 -0
  16. package/domain/shop-settings/models/shop-settings.d.ts +9 -0
  17. package/domain/shop-settings/models/types/index.d.ts +6 -1
  18. package/domain/shop-settings/models/types/shop-banner.type.d.ts +12 -0
  19. package/domain/shop-settings/models/types/shop-brands.type.d.ts +10 -0
  20. package/domain/shop-settings/models/types/shop-carousel.type.d.ts +5 -0
  21. package/domain/shop-settings/models/types/shop-collection.type.d.ts +9 -0
  22. package/domain/shop-settings/models/types/shop-section.type.d.ts +9 -0
  23. package/domain/shop-settings/repositories/index.d.ts +1 -0
  24. package/domain/shop-settings/repositories/shop-settings.repository.d.ts +4 -0
  25. package/domain/shopping/models/buy-2-win.d.ts +3 -1
  26. package/domain/shopping/models/campaign-dashboard.d.ts +15 -0
  27. package/domain/shopping/models/campaign-hashtag.d.ts +18 -0
  28. package/domain/shopping/models/index.d.ts +5 -4
  29. package/domain/shopping/repositories/campaign-dashboard.repository.d.ts +4 -0
  30. package/domain/shopping/repositories/campaign-hashtag.repository.d.ts +4 -0
  31. package/domain/shopping/repositories/index.d.ts +4 -2
  32. package/esm2020/domain/catalog/models/category-filter.mjs +14 -0
  33. package/esm2020/domain/catalog/models/category.mjs +8 -1
  34. package/esm2020/domain/catalog/models/filter-option.mjs +10 -0
  35. package/esm2020/domain/catalog/models/filter.mjs +10 -0
  36. package/esm2020/domain/catalog/models/index.mjs +4 -1
  37. package/esm2020/domain/catalog/models/product.mjs +1 -1
  38. package/esm2020/domain/catalog/models/types/index.mjs +1 -2
  39. package/esm2020/domain/catalog/repositories/category-filter.repository.mjs +2 -0
  40. package/esm2020/domain/catalog/repositories/category.repository.mjs +1 -1
  41. package/esm2020/domain/catalog/repositories/filter-option.repository.mjs +2 -0
  42. package/esm2020/domain/catalog/repositories/filter.repository.mjs +2 -0
  43. package/esm2020/domain/catalog/repositories/index.mjs +4 -1
  44. package/esm2020/domain/catalog/repositories/product.repository.mjs +1 -1
  45. package/esm2020/domain/generic/repository/find.repository.mjs +1 -1
  46. package/esm2020/domain/shop-settings/models/index.mjs +2 -1
  47. package/esm2020/domain/shop-settings/models/shop-settings.mjs +7 -0
  48. package/esm2020/domain/shop-settings/models/types/index.mjs +7 -2
  49. package/esm2020/domain/shop-settings/models/types/shop-banner.type.mjs +2 -0
  50. package/esm2020/domain/shop-settings/models/types/shop-brands.type.mjs +2 -0
  51. package/esm2020/domain/shop-settings/models/types/shop-carousel.type.mjs +2 -0
  52. package/esm2020/domain/shop-settings/models/types/shop-collection.type.mjs +2 -0
  53. package/esm2020/domain/shop-settings/models/types/shop-section.type.mjs +2 -0
  54. package/esm2020/domain/shop-settings/repositories/index.mjs +2 -1
  55. package/esm2020/domain/shop-settings/repositories/shop-settings.repository.mjs +2 -0
  56. package/esm2020/domain/shopping/models/buy-2-win.mjs +2 -2
  57. package/esm2020/domain/shopping/models/campaign-dashboard.mjs +7 -0
  58. package/esm2020/domain/shopping/models/campaign-hashtag.mjs +7 -0
  59. package/esm2020/domain/shopping/models/index.mjs +6 -5
  60. package/esm2020/domain/shopping/repositories/campaign-dashboard.repository.mjs +2 -0
  61. package/esm2020/domain/shopping/repositories/campaign-hashtag.repository.mjs +2 -0
  62. package/esm2020/domain/shopping/repositories/index.mjs +5 -3
  63. package/esm2020/infra/elasticsearch/indexes/products-index.mjs +2 -1
  64. package/esm2020/infra/firebase/firestore/mixins/with-find-firestore.mixin.mjs +3 -2
  65. package/esm2020/infra/firebase/firestore/mixins/with-firestore.mixin.mjs +3 -1
  66. package/esm2020/infra/firebase/firestore/repositories/catalog/category-firestore.repository.mjs +5 -3
  67. package/esm2020/infra/firebase/firestore/repositories/catalog/product-firestore.repository.mjs +4 -1
  68. package/esm2020/infra/firebase/firestore/repositories/shop-settings/index.mjs +2 -1
  69. package/esm2020/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.mjs +14 -0
  70. package/esm2020/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.mjs +14 -0
  71. package/esm2020/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.mjs +14 -0
  72. package/esm2020/infra/firebase/firestore/repositories/shopping/index.mjs +6 -4
  73. package/esm2020/infra/hasura-graphql/mixins/helpers/attribute-option.helper.mjs +2 -2
  74. package/esm2020/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.mjs +16 -12
  75. package/esm2020/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.mjs +5 -3
  76. package/esm2020/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.mjs +55 -0
  77. package/esm2020/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.mjs +94 -12
  78. package/esm2020/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.mjs +104 -0
  79. package/esm2020/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.mjs +21 -0
  80. package/esm2020/infra/hasura-graphql/repositories/catalog/index.mjs +4 -1
  81. package/esm2020/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.mjs +21 -4
  82. package/esm2020/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.mjs +2 -2
  83. package/esm2020/infra/hasura-graphql/types/hasura-graphql-fields.type.mjs +1 -1
  84. package/fesm2015/infrab4a-connect.mjs +472 -87
  85. package/fesm2015/infrab4a-connect.mjs.map +1 -1
  86. package/fesm2020/infrab4a-connect.mjs +450 -82
  87. package/fesm2020/infrab4a-connect.mjs.map +1 -1
  88. package/infra/firebase/firestore/repositories/catalog/category-firestore.repository.d.ts +2 -1
  89. package/infra/firebase/firestore/repositories/catalog/product-firestore.repository.d.ts +1 -0
  90. package/infra/firebase/firestore/repositories/shop-settings/index.d.ts +1 -0
  91. package/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.d.ts +7 -0
  92. package/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.d.ts +8 -0
  93. package/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.d.ts +8 -0
  94. package/infra/firebase/firestore/repositories/shopping/index.d.ts +5 -3
  95. package/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.d.ts +4 -9
  96. package/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.d.ts +11 -0
  97. package/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.d.ts +6 -2
  98. package/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.d.ts +18 -0
  99. package/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.d.ts +10 -0
  100. package/infra/hasura-graphql/repositories/catalog/index.d.ts +3 -0
  101. package/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.d.ts +1 -0
  102. package/infra/hasura-graphql/types/hasura-graphql-fields.type.d.ts +1 -1
  103. package/package.json +1 -1
  104. package/domain/catalog/models/types/category-filter.type.d.ts +0 -4
  105. package/esm2020/domain/catalog/models/types/category-filter.type.mjs +0 -2
@@ -759,6 +759,15 @@ class RecoveryPassword {
759
759
  }
760
760
  }
761
761
 
762
+ class Filter extends BaseModel {
763
+ identifierFields() {
764
+ return ['id'];
765
+ }
766
+ static get identifiersFields() {
767
+ return ['id'];
768
+ }
769
+ }
770
+
762
771
  class Category extends BaseModel {
763
772
  identifierFields() {
764
773
  return ['id'];
@@ -767,6 +776,20 @@ class Category extends BaseModel {
767
776
  return ['id'];
768
777
  }
769
778
  }
779
+ __decorate([
780
+ Type(() => Filter),
781
+ __metadata("design:type", Array)
782
+ ], Category.prototype, "filters", void 0);
783
+
784
+ class CategoryFilter extends BaseModel {
785
+ static get identifiersFields() {
786
+ return ['id'];
787
+ }
788
+ }
789
+ __decorate([
790
+ Type(() => Filter),
791
+ __metadata("design:type", Filter)
792
+ ], CategoryFilter.prototype, "filter", void 0);
770
793
 
771
794
  var GenderDestination;
772
795
  (function (GenderDestination) {
@@ -783,6 +806,15 @@ var Shops;
783
806
  Shops["ALL"] = "ALL";
784
807
  })(Shops || (Shops = {}));
785
808
 
809
+ class FilterOption extends BaseModel {
810
+ identifierFields() {
811
+ return ['id'];
812
+ }
813
+ static get identifiersFields() {
814
+ return ['id'];
815
+ }
816
+ }
817
+
786
818
  class Product extends BaseModel {
787
819
  identifierFields() {
788
820
  return ['id'];
@@ -819,17 +851,27 @@ class Variant extends BaseModel {
819
851
  }
820
852
  }
821
853
 
822
- var OrderStatus;
823
- (function (OrderStatus) {
824
- OrderStatus["AGUARDANDO_PAGAMENTO"] = "Aguardando pagamento";
825
- OrderStatus["EM_PREPARO"] = "Preparando pedido";
826
- OrderStatus["NF_EMITIDA"] = "Nota Fiscal Emitida";
827
- OrderStatus["AGUARDANDO_ENVIO"] = "Aguardando Transaportadora";
828
- OrderStatus["ENVIADO"] = "Enviado";
829
- OrderStatus["ENTREGUE"] = "Entregue";
830
- OrderStatus["CANCELADO"] = "Cancelado";
831
- OrderStatus["CREDIT_CARD"] = "credit_card";
832
- })(OrderStatus || (OrderStatus = {}));
854
+ class Buy2Win extends BaseModel {
855
+ static get identifiersFields() {
856
+ return ['id'];
857
+ }
858
+ }
859
+ __decorate([
860
+ Type(() => Category),
861
+ __metadata("design:type", Array)
862
+ ], Buy2Win.prototype, "categories", void 0);
863
+
864
+ class CampaignDashboard extends BaseModel {
865
+ static get identifiersFields() {
866
+ return ['id'];
867
+ }
868
+ }
869
+
870
+ class CampaignHashtag extends BaseModel {
871
+ static get identifiersFields() {
872
+ return ['id'];
873
+ }
874
+ }
833
875
 
834
876
  class LineItem extends Product {
835
877
  }
@@ -870,6 +912,18 @@ __decorate([
870
912
  __metadata("design:type", Coupon)
871
913
  ], Checkout.prototype, "coupon", void 0);
872
914
 
915
+ var OrderStatus;
916
+ (function (OrderStatus) {
917
+ OrderStatus["AGUARDANDO_PAGAMENTO"] = "Aguardando pagamento";
918
+ OrderStatus["EM_PREPARO"] = "Preparando pedido";
919
+ OrderStatus["NF_EMITIDA"] = "Nota Fiscal Emitida";
920
+ OrderStatus["AGUARDANDO_ENVIO"] = "Aguardando Transaportadora";
921
+ OrderStatus["ENVIADO"] = "Enviado";
922
+ OrderStatus["ENTREGUE"] = "Entregue";
923
+ OrderStatus["CANCELADO"] = "Cancelado";
924
+ OrderStatus["CREDIT_CARD"] = "credit_card";
925
+ })(OrderStatus || (OrderStatus = {}));
926
+
873
927
  class Order extends Checkout {
874
928
  }
875
929
  __decorate([
@@ -899,16 +953,6 @@ __decorate([
899
953
  __metadata("design:type", Coupon)
900
954
  ], CheckoutSubscription.prototype, "coupon", void 0);
901
955
 
902
- class Buy2Win extends BaseModel {
903
- static get identifiersFields() {
904
- return ['id'];
905
- }
906
- }
907
- __decorate([
908
- Type(() => Category),
909
- __metadata("design:type", Array)
910
- ], Buy2Win.prototype, "categories", void 0);
911
-
912
956
  var FilterType;
913
957
  (function (FilterType) {
914
958
  FilterType["ACCESSORY_IMPORTANCE"] = "accessoryImportance";
@@ -1008,6 +1052,12 @@ class ShopMenu extends BaseModel {
1008
1052
  }
1009
1053
  }
1010
1054
 
1055
+ class ShopSettings extends BaseModel {
1056
+ static get identifiersFields() {
1057
+ return ['id'];
1058
+ }
1059
+ }
1060
+
1011
1061
  class InvalidArgumentError extends CustomError {
1012
1062
  constructor(message) {
1013
1063
  super(message);
@@ -1107,6 +1157,7 @@ class ProductsIndex {
1107
1157
  'stock',
1108
1158
  'weight',
1109
1159
  'tags',
1160
+ 'filters',
1110
1161
  'hasVariants',
1111
1162
  'type',
1112
1163
  ];
@@ -1202,6 +1253,8 @@ const withFirestore = (MixinBase) => {
1202
1253
  constructor(...params) {
1203
1254
  const options = params[0];
1204
1255
  super(...params);
1256
+ this.fields = {};
1257
+ this.interceptors = {};
1205
1258
  this.collectionName = '';
1206
1259
  this.firestore = options.firestore;
1207
1260
  this.collectionName = options.collectionName;
@@ -1344,6 +1397,7 @@ const withFindFirestore = (MixinBase) => {
1344
1397
  }
1345
1398
  async find(find = {}) {
1346
1399
  const collection = this.collection(this.buildCollectionPathForFind(find.filters));
1400
+ const enableCount = find?.options?.enableCount ?? true;
1347
1401
  const intercepted = await this.interceptors?.request?.({ find });
1348
1402
  const { filters, limits, orderBy } = intercepted.find || find;
1349
1403
  const queries = this.makeFirestoreWhere(filters || {});
@@ -1354,7 +1408,7 @@ const withFindFirestore = (MixinBase) => {
1354
1408
  const data = docs.docs.map((doc) => doc.data());
1355
1409
  return {
1356
1410
  data: (await this.interceptors?.response?.(data, intercepted)) || data,
1357
- count: this.calculateCount(data, limits),
1411
+ count: enableCount ? this.calculateCount(data, limits) : Infinity,
1358
1412
  };
1359
1413
  }
1360
1414
  buildCollectionPathForFind(filters) {
@@ -1648,14 +1702,14 @@ class CategoryFirestoreRepository extends withCrudFirestore(withHelpers(withFire
1648
1702
  throw new NotFoundError(`Document with slug ${slug} not found`);
1649
1703
  return categoryDocs.docs[0].data();
1650
1704
  }
1651
- async getCategoriesForHome(categoryIds, limit = 4) {
1705
+ async getCategoriesForHome(categoryIds, limit = 4, gender) {
1652
1706
  const categorySnap = await getDocs(query(this.collection(this.collectionName), where('id', 'in', categoryIds.filter(Boolean)), where('published', '==', true)));
1653
1707
  if (categorySnap.empty)
1654
1708
  throw new NotFoundError('Categories not found');
1655
1709
  const categories = categorySnap.docs.map((doc) => doc.data());
1656
1710
  const homeSections = await Promise.all(categories.map(async (category) => ({
1657
1711
  category,
1658
- products: await this.mountCategory(category, { limit, hasStock: true }),
1712
+ products: await this.mountCategory(category, { limit, hasStock: true, gender }),
1659
1713
  })));
1660
1714
  return homeSections;
1661
1715
  }
@@ -1671,6 +1725,8 @@ class CategoryFirestoreRepository extends withCrudFirestore(withHelpers(withFire
1671
1725
  wheres.push(where('published', '==', true), where('id', 'in', productIds));
1672
1726
  if (options?.hasStock)
1673
1727
  wheres.push(where('stock.quantity', '>', 0));
1728
+ if (options?.gender)
1729
+ wheres.push(where('tags', 'array-contains', options?.gender));
1674
1730
  if (options?.limit)
1675
1731
  wheres.push(limit(options?.limit));
1676
1732
  const productSnap = await getDocs(query(this.collection('productsErpVitrine'), ...wheres));
@@ -1725,6 +1781,9 @@ class ProductFirestoreRepository extends withCrudFirestore(withHelpers(withFires
1725
1781
  });
1726
1782
  return this.reviews[status];
1727
1783
  }
1784
+ cleanShoppingCountFromIds() {
1785
+ return;
1786
+ }
1728
1787
  }
1729
1788
 
1730
1789
  class ProductVariantFirestoreRepository extends withSubCollection(withCrudFirestore(withHelpers(withFirestore(Base))), Product) {
@@ -1751,6 +1810,39 @@ class SubscriptionProductFirestoreRepository extends withCrudFirestore(withHelpe
1751
1810
  }
1752
1811
  }
1753
1812
 
1813
+ class Buy2WinFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
1814
+ constructor({ firestore, interceptors }) {
1815
+ super({
1816
+ firestore,
1817
+ collectionName: 'buy2win',
1818
+ model: Buy2Win,
1819
+ interceptors,
1820
+ });
1821
+ }
1822
+ }
1823
+
1824
+ class CampaignDashboardFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
1825
+ constructor({ firestore, interceptors, }) {
1826
+ super({
1827
+ firestore,
1828
+ collectionName: 'dashboardCampaignsAuto',
1829
+ model: CampaignDashboard,
1830
+ interceptors,
1831
+ });
1832
+ }
1833
+ }
1834
+
1835
+ class CampaignHashtagFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
1836
+ constructor({ firestore, interceptors, }) {
1837
+ super({
1838
+ firestore,
1839
+ collectionName: 'hashtagCampaignsAuto',
1840
+ model: CampaignHashtag,
1841
+ interceptors,
1842
+ });
1843
+ }
1844
+ }
1845
+
1754
1846
  class CheckoutFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
1755
1847
  constructor({ firestore, interceptors }) {
1756
1848
  super({
@@ -1762,6 +1854,17 @@ class CheckoutFirestoreRepository extends withCrudFirestore(withHelpers(withFire
1762
1854
  }
1763
1855
  }
1764
1856
 
1857
+ class CheckoutSubscriptionFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
1858
+ constructor({ firestore, interceptors, }) {
1859
+ super({
1860
+ firestore,
1861
+ collectionName: 'checkoutsSubscription',
1862
+ model: CheckoutSubscription,
1863
+ interceptors,
1864
+ });
1865
+ }
1866
+ }
1867
+
1765
1868
  class CouponFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
1766
1869
  constructor({ firestore, interceptors }) {
1767
1870
  super({
@@ -1826,23 +1929,22 @@ class OrderFirestoreRepository extends withCrudFirestore(withHelpers(withFiresto
1826
1929
  }
1827
1930
  }
1828
1931
 
1829
- class PaymentFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
1932
+ class LegacyOrderFirestoreRepository extends OrderFirestoreRepository {
1830
1933
  constructor({ firestore, interceptors }) {
1831
1934
  super({
1832
1935
  firestore,
1833
- collectionName: 'payments',
1834
- model: Payment,
1835
1936
  interceptors,
1836
1937
  });
1938
+ this.collectionName = 'legacyOrders';
1837
1939
  }
1838
1940
  }
1839
1941
 
1840
- class CheckoutSubscriptionFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
1841
- constructor({ firestore, interceptors, }) {
1942
+ class PaymentFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
1943
+ constructor({ firestore, interceptors }) {
1842
1944
  super({
1843
1945
  firestore,
1844
- collectionName: 'checkoutsSubscription',
1845
- model: CheckoutSubscription,
1946
+ collectionName: 'payments',
1947
+ model: Payment,
1846
1948
  interceptors,
1847
1949
  });
1848
1950
  }
@@ -1859,27 +1961,6 @@ class SubscriptionPlanFirestoreRepository extends withCrudFirestore(withHelpers(
1859
1961
  }
1860
1962
  }
1861
1963
 
1862
- class Buy2WinFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
1863
- constructor({ firestore, interceptors }) {
1864
- super({
1865
- firestore,
1866
- collectionName: 'buy2win',
1867
- model: Buy2Win,
1868
- interceptors,
1869
- });
1870
- }
1871
- }
1872
-
1873
- class LegacyOrderFirestoreRepository extends OrderFirestoreRepository {
1874
- constructor({ firestore, interceptors }) {
1875
- super({
1876
- firestore,
1877
- interceptors,
1878
- });
1879
- this.collectionName = 'legacyOrders';
1880
- }
1881
- }
1882
-
1883
1964
  class HomeFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
1884
1965
  constructor({ firestore, interceptors }) {
1885
1966
  super({
@@ -1943,6 +2024,17 @@ class ShopMenuFirestoreRepository extends withCrudFirestore(withHelpers(withFire
1943
2024
  }
1944
2025
  }
1945
2026
 
2027
+ class ShopSettingsFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
2028
+ constructor({ firestore, interceptors, }) {
2029
+ super({
2030
+ firestore,
2031
+ collectionName: 'shopSettings',
2032
+ model: ShopSettings,
2033
+ interceptors,
2034
+ });
2035
+ }
2036
+ }
2037
+
1946
2038
  class AuthenticationFirebaseAuthService {
1947
2039
  constructor(firebaseAuth) {
1948
2040
  this.firebaseAuth = firebaseAuth;
@@ -2016,7 +2108,7 @@ class AttributeOptionHelper {
2016
2108
  }
2017
2109
  AttributeOptionHelper.FindByAttribute = (attributeName, fields) => {
2018
2110
  if (fields.includes(attributeName))
2019
- return { columnName: attributeName.toString(), attributeName };
2111
+ return { columnName: attributeName.toString(), attributeName, to: (value) => value, from: (value) => value };
2020
2112
  const field = fields.find((columnOption) => isObject(columnOption) && Object.keys(columnOption).includes(attributeName.toString()));
2021
2113
  const fieldOption = is(field)?.[attributeName];
2022
2114
  if (isNil(fieldOption))
@@ -2375,10 +2467,12 @@ const withHasuraGraphQL = (MixinBase) => {
2375
2467
  }
2376
2468
  async fetch(params) {
2377
2469
  const headers = this.headers;
2378
- const response = await axios.post(`${this.endpoint}`, params, {
2470
+ const { data: result } = await axios({
2471
+ url: `${this.endpoint}`,
2472
+ method: 'POST',
2473
+ data: params,
2379
2474
  headers,
2380
2475
  });
2381
- const result = await response.data;
2382
2476
  if (!isNil(result.errors))
2383
2477
  throw new Error(JSON.stringify(result.errors));
2384
2478
  return result.data;
@@ -2520,8 +2614,9 @@ const withGetHasuraGraphQL = (MixinBase) => {
2520
2614
 
2521
2615
  const withFindHasuraGraphQL = (MixinBase) => {
2522
2616
  return class FindHasuraGraphQLMixin extends MixinBase {
2523
- async find(options) {
2524
- const { filters, limits, orderBy } = options || {};
2617
+ async find(params) {
2618
+ const { filters, limits, orderBy, options } = params || {};
2619
+ const enableCount = options?.enableCount ?? true;
2525
2620
  const variablesCount = {
2526
2621
  ...(isNil(orderBy) ? {} : { order_by: { type: `${this.tableName}_order_by!`, list: true, value: orderBy } }),
2527
2622
  ...(isNil(filters)
@@ -2541,23 +2636,26 @@ const withFindHasuraGraphQL = (MixinBase) => {
2541
2636
  const result = await this.query([
2542
2637
  {
2543
2638
  operation: this.tableName,
2544
- fields: options.fields
2545
- ? options.fields
2639
+ fields: params.fields
2640
+ ? params.fields
2546
2641
  .map((fieldName) => this.fields.find((fieldOption) => fieldOption === fieldName) ??
2547
2642
  this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === fieldName))
2548
2643
  .filter(Boolean)
2549
2644
  : this.fields,
2550
2645
  variables,
2551
2646
  },
2552
- {
2553
- operation: `${this.tableName}_aggregate`,
2554
- fields: [{ aggregate: ['count'] }],
2555
- variables: variablesCount,
2556
- },
2647
+ ...(enableCount
2648
+ ? [
2649
+ {
2650
+ operation: `${this.tableName}_aggregate`,
2651
+ fields: [{ aggregate: ['count'] }],
2652
+ variables: variablesCount,
2653
+ },
2654
+ ]
2655
+ : []),
2557
2656
  ]);
2558
2657
  const data = result[this.tableName].map((row) => this.convertDataFromHasura(row));
2559
- const count = result[`${this.tableName}_aggregate`].aggregate.count;
2560
- return { count, data };
2658
+ return { data, count: enableCount ? result[`${this.tableName}_aggregate`].aggregate.count : Infinity };
2561
2659
  }
2562
2660
  };
2563
2661
  };
@@ -2596,8 +2694,60 @@ class VariantHasuraGraphQL extends Variant {
2596
2694
  }
2597
2695
  }
2598
2696
 
2697
+ class CategoryFilterHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGraphQL(Base)) {
2698
+ constructor(endpoint, authOptions) {
2699
+ super({
2700
+ tableName: 'category_filter',
2701
+ model: CategoryFilter,
2702
+ endpoint,
2703
+ authOptions,
2704
+ fields: [
2705
+ 'id',
2706
+ { filterId: { columnName: 'filter_id' } },
2707
+ { categoryId: { columnName: 'category_id' } },
2708
+ {
2709
+ filter: {
2710
+ columnName: 'filter',
2711
+ foreignKeyColumn: { id: 'filterId' },
2712
+ fields: [
2713
+ 'id',
2714
+ 'description',
2715
+ 'slug',
2716
+ 'enabled',
2717
+ { createdAt: { columnName: 'created_at' } },
2718
+ { updatedAt: { columnName: 'updated_at' } },
2719
+ {
2720
+ options: {
2721
+ columnName: 'options',
2722
+ foreignKeyColumn: { filterId: 'id' },
2723
+ fields: [
2724
+ 'id',
2725
+ { filterId: { columnName: 'filter_id' } },
2726
+ 'description',
2727
+ { createdAt: { columnName: 'created_at' } },
2728
+ { updatedAt: { columnName: 'updated_at' } },
2729
+ ],
2730
+ },
2731
+ },
2732
+ ],
2733
+ },
2734
+ },
2735
+ ],
2736
+ });
2737
+ }
2738
+ deleteByCategoryAndFilter(categoryId, filterId) {
2739
+ return this.mutation('delete_category_filter', ['affected_rows'], {
2740
+ where: {
2741
+ type: 'category_filter_bool_exp',
2742
+ required: true,
2743
+ value: { category_id: { _eq: categoryId }, filter_id: { _eq: filterId } },
2744
+ },
2745
+ });
2746
+ }
2747
+ }
2748
+
2599
2749
  class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGraphQL(Base)) {
2600
- constructor({ endpoint, authOptions, interceptors, }, productRepository) {
2750
+ constructor({ endpoint, authOptions, interceptors, }, productRepository, categoryFilterRepository) {
2601
2751
  super({
2602
2752
  tableName: 'category',
2603
2753
  model: Category,
@@ -2640,7 +2790,17 @@ class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGr
2640
2790
  },
2641
2791
  },
2642
2792
  },
2643
- 'filters',
2793
+ {
2794
+ filters: {
2795
+ columnName: 'filters',
2796
+ foreignKeyColumn: { filter_id: 'id' },
2797
+ fields: [{ filter: ['id', 'description', 'slug', 'enabled'] }],
2798
+ bindPersistData: (value) => ({
2799
+ filters: { data: value.map((filter) => ({ filter_id: filter.id })) },
2800
+ }),
2801
+ from: (filters) => filters?.map((filter) => filter?.filter) || [],
2802
+ },
2803
+ },
2644
2804
  { createdAt: { columnName: 'created_at' } },
2645
2805
  { updatedAt: { columnName: 'updated_at' } },
2646
2806
  {
@@ -2665,6 +2825,7 @@ class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGr
2665
2825
  ],
2666
2826
  });
2667
2827
  this.productRepository = productRepository;
2828
+ this.categoryFilterRepository = categoryFilterRepository;
2668
2829
  }
2669
2830
  async create(params) {
2670
2831
  const { metadata, ...data } = params;
@@ -2672,29 +2833,30 @@ class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGr
2672
2833
  }
2673
2834
  async get(identifiers) {
2674
2835
  return Number.isNaN(+identifiers.id)
2675
- ? (await this.find({ filters: { firestoreId: identifiers.id } })).data?.[0]
2836
+ ? (await this.find({ filters: { firestoreId: identifiers.id }, options: { enableCount: false } })).data?.[0]
2676
2837
  : super.get(identifiers);
2677
2838
  }
2678
2839
  async update(params) {
2679
- const { products, id: checkId, metadata, ...data } = params;
2840
+ const { products, id: checkId, metadata, filters, ...data } = params;
2680
2841
  const plainData = this.paramsToPlain({ id: checkId });
2681
2842
  const id = await this.getId(plainData.id);
2682
2843
  const category = await super.update({ id, ...data });
2683
2844
  category.products = products && (await this.updateProducts(+id, { products }));
2684
2845
  category.metadata = metadata && (await this.updateMetadata(+id, { metadata }));
2846
+ category.filters = filters && (await this.updateFilters(+id, { filters }));
2685
2847
  return category;
2686
2848
  }
2687
2849
  async getCategoryBySlug(slug, shop) {
2688
2850
  if (!slug)
2689
2851
  return null;
2690
- const { data, count } = await this.find({ filters: { slug, shop, published: true } });
2691
- if (count > 1)
2692
- throw new DuplicatedResultsError('Query returned duplicated values');
2693
- if (!count)
2852
+ const { data } = await this.find({ filters: { slug, shop, published: true }, options: { enableCount: false } });
2853
+ if (!data.length)
2694
2854
  throw new NotFoundError(`Category with slug ${slug} not found`);
2855
+ if (data.length > 1)
2856
+ throw new DuplicatedResultsError('Query returned duplicated values');
2695
2857
  return data.shift();
2696
2858
  }
2697
- async getCategoriesForHome(categoryIds, limit = 4) {
2859
+ async getCategoriesForHome(categoryIds, limit = 4, gender) {
2698
2860
  if (!categoryIds?.length)
2699
2861
  return [];
2700
2862
  const categoriesFirestore = categoryIds.filter((categoryId) => Number.isNaN(+categoryId));
@@ -2712,7 +2874,7 @@ class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGr
2712
2874
  return [];
2713
2875
  const homeSections = await Promise.all(categories.map(async (category) => ({
2714
2876
  category,
2715
- products: await this.mountCategory(category, { limit, hasStock: true }),
2877
+ products: await this.mountCategory(category, { limit, hasStock: true, gender }),
2716
2878
  })));
2717
2879
  return homeSections;
2718
2880
  }
@@ -2725,6 +2887,7 @@ class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGr
2725
2887
  id: { operator: Where.IN, value: category.products },
2726
2888
  published: true,
2727
2889
  ...(options?.hasStock ? { stock: { quantity: { operator: Where.GT, value: 0 } } } : {}),
2890
+ ...(options?.gender ? { tags: { operator: Where.IN, value: [options?.gender] } } : {}),
2728
2891
  },
2729
2892
  fields: [
2730
2893
  'id',
@@ -2750,8 +2913,10 @@ class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGr
2750
2913
  'tags',
2751
2914
  'type',
2752
2915
  'shoppingCount',
2916
+ 'gender',
2753
2917
  ],
2754
2918
  ...(options?.limit ? { limits: { limit: options?.limit } } : {}),
2919
+ options: { enableCount: false },
2755
2920
  });
2756
2921
  products.push(...productsData);
2757
2922
  return products;
@@ -2759,7 +2924,7 @@ class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGr
2759
2924
  async getId(id) {
2760
2925
  if (!Number.isNaN(+id))
2761
2926
  return id;
2762
- const { data } = await this.find({ filters: { firestoreId: id } });
2927
+ const { data } = await this.find({ filters: { firestoreId: id }, options: { enableCount: false } });
2763
2928
  if (data?.[0]?.id)
2764
2929
  return data?.[0]?.id;
2765
2930
  throw new NotFoundError(`Category with id ${id} not found`);
@@ -2812,6 +2977,192 @@ class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGr
2812
2977
  });
2813
2978
  return plainData.metadata;
2814
2979
  }
2980
+ async updateFilters(categoryId, { filters }) {
2981
+ if ('action' in filters && filters.action === 'remove' && filters.value.length) {
2982
+ for (let i = 0; i < filters.value.length; i++) {
2983
+ await this.categoryFilterRepository.deleteByCategoryAndFilter(categoryId, filters.value[i].id);
2984
+ }
2985
+ return [];
2986
+ }
2987
+ if ('action' in filters && filters.action === 'merge' && filters.value.length) {
2988
+ let filtersList = [];
2989
+ for (let i = 0; i < filters.value.length; i++) {
2990
+ try {
2991
+ const hasFilter = await this.categoryFilterRepository
2992
+ .find({
2993
+ filters: {
2994
+ categoryId,
2995
+ filterId: filters.value[i].id,
2996
+ },
2997
+ })
2998
+ .then((data) => data.data.shift()?.filter);
2999
+ if (hasFilter) {
3000
+ filtersList.push(hasFilter);
3001
+ }
3002
+ else {
3003
+ await this.categoryFilterRepository.create({
3004
+ filterId: filters.value[i].id,
3005
+ categoryId,
3006
+ });
3007
+ filtersList.push(filters.value[i]);
3008
+ }
3009
+ }
3010
+ catch (error) {
3011
+ console.log('catch error: ', error);
3012
+ }
3013
+ }
3014
+ return filtersList;
3015
+ }
3016
+ if (Array.isArray(filters) && filters.length) {
3017
+ let filtersList = [];
3018
+ for (let i = 0; i < filters.length; i++) {
3019
+ try {
3020
+ const hasFilter = await this.categoryFilterRepository
3021
+ .find({
3022
+ filters: {
3023
+ categoryId,
3024
+ filterId: filters[i].id,
3025
+ },
3026
+ })
3027
+ .then((data) => data.data.shift()?.filter);
3028
+ if (hasFilter) {
3029
+ filtersList.push(hasFilter);
3030
+ }
3031
+ else {
3032
+ await this.categoryFilterRepository.create({
3033
+ filterId: filters[i].id,
3034
+ categoryId,
3035
+ });
3036
+ filtersList.push(filters[i]);
3037
+ }
3038
+ }
3039
+ catch (error) {
3040
+ console.log('catch error: ', error);
3041
+ }
3042
+ }
3043
+ return filtersList;
3044
+ }
3045
+ return [];
3046
+ }
3047
+ }
3048
+
3049
+ class FilterHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGraphQL(Base)) {
3050
+ constructor(endpoint, authOptions, filterOptionRepository, categoryFilterRepository) {
3051
+ super({
3052
+ tableName: 'filter',
3053
+ model: Filter,
3054
+ endpoint,
3055
+ authOptions,
3056
+ fields: [
3057
+ 'id',
3058
+ 'description',
3059
+ 'slug',
3060
+ 'enabled',
3061
+ { createdAt: { columnName: 'created_at' } },
3062
+ { updatedAt: { columnName: 'updated_at' } },
3063
+ {
3064
+ options: {
3065
+ columnName: 'options',
3066
+ foreignKeyColumn: { filterId: 'id' },
3067
+ fields: [
3068
+ 'id',
3069
+ { filterId: { columnName: 'filter_id' } },
3070
+ 'description',
3071
+ { createdAt: { columnName: 'created_at' } },
3072
+ { updatedAt: { columnName: 'updated_at' } },
3073
+ ],
3074
+ },
3075
+ },
3076
+ ],
3077
+ });
3078
+ this.filterOptionRepository = filterOptionRepository;
3079
+ this.categoryFilterRepository = categoryFilterRepository;
3080
+ }
3081
+ async update(params) {
3082
+ const { options, ...data } = params;
3083
+ const filter = await super.update(data);
3084
+ filter.options = await this.updateOptions(+data.id, { options });
3085
+ return filter;
3086
+ }
3087
+ async updateOptions(filterId, { options }) {
3088
+ if (!options)
3089
+ return [];
3090
+ if ('action' in options && options.action === 'remove' && options.value.length) {
3091
+ for (let i = 0; i < options.value.length; i++) {
3092
+ await this.filterOptionRepository.delete({ id: options.value[i].id });
3093
+ }
3094
+ return [];
3095
+ }
3096
+ if ('action' in options && options.action === 'merge' && options.value.length) {
3097
+ let filterOptions = [];
3098
+ for (let i = 0; i < options.value.length; i++) {
3099
+ try {
3100
+ const hasFilter = await this.filterOptionRepository.get({ id: options.value[i].id });
3101
+ if (hasFilter)
3102
+ filterOptions.push(hasFilter);
3103
+ }
3104
+ catch (error) {
3105
+ const newOption = await this.filterOptionRepository.create({ ...options.value[i], filterId });
3106
+ filterOptions.push(newOption);
3107
+ }
3108
+ }
3109
+ return filterOptions;
3110
+ }
3111
+ if (Array.isArray(options) && options.length) {
3112
+ let filterOptions = [];
3113
+ for (let i = 0; i < options.length; i++) {
3114
+ try {
3115
+ const hasFilter = await this.filterOptionRepository.get({ id: options[i].id });
3116
+ if (hasFilter)
3117
+ filterOptions.push(hasFilter);
3118
+ }
3119
+ catch (error) {
3120
+ const newOption = await this.filterOptionRepository.create({ ...options[i], filterId });
3121
+ filterOptions.push(newOption);
3122
+ }
3123
+ }
3124
+ }
3125
+ return [];
3126
+ }
3127
+ async delete(params) {
3128
+ const { data: categoryFilters } = await this.categoryFilterRepository.find({
3129
+ filters: {
3130
+ filterId: params.id,
3131
+ },
3132
+ });
3133
+ if (categoryFilters.length)
3134
+ throw new Error('Erro: o filtro está associado a uma ou mais categoria(s)');
3135
+ await this.deleteOptions(+params.id);
3136
+ await super.delete({ id: +params.id });
3137
+ return;
3138
+ }
3139
+ async deleteOptions(filterId) {
3140
+ await this.mutation('delete_filter_option', ['affected_rows'], {
3141
+ where: {
3142
+ type: 'filter_option_bool_exp',
3143
+ required: true,
3144
+ value: { filter_id: { _eq: filterId } },
3145
+ },
3146
+ });
3147
+ }
3148
+ }
3149
+
3150
+ class FilterOptionHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGraphQL(Base)) {
3151
+ constructor(endpoint, authOptions) {
3152
+ super({
3153
+ tableName: 'filter_option',
3154
+ model: FilterOption,
3155
+ endpoint,
3156
+ authOptions,
3157
+ fields: [
3158
+ 'id',
3159
+ 'description',
3160
+ { filterId: { columnName: 'filter_id' } },
3161
+ { createdAt: { columnName: 'created_at' } },
3162
+ { updatedAt: { columnName: 'updated_at' } },
3163
+ ],
3164
+ });
3165
+ }
2815
3166
  }
2816
3167
 
2817
3168
  class ProductHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGraphQL(Base)) {
@@ -2950,6 +3301,7 @@ class ProductHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGra
2950
3301
  'weight',
2951
3302
  'gender',
2952
3303
  { tags: { columnName: 'tags', type: HasuraGraphQLColumnType.Jsonb } },
3304
+ { filters: { columnName: 'filters', type: HasuraGraphQLColumnType.Jsonb } },
2953
3305
  { isKit: { columnName: 'is_kit' } },
2954
3306
  { createdAt: { columnName: 'created_at' } },
2955
3307
  { updatedAt: { columnName: 'updated_at' } },
@@ -3041,7 +3393,7 @@ class ProductHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGra
3041
3393
  }
3042
3394
  async get(identifiers) {
3043
3395
  const product = Number.isNaN(+identifiers.id)
3044
- ? (await this.find({ filters: { firestoreId: identifiers.id } })).data?.[0]
3396
+ ? (await this.find({ filters: { firestoreId: identifiers.id }, options: { enableCount: false } })).data?.[0]
3045
3397
  : await super.get(identifiers);
3046
3398
  if (product.productId)
3047
3399
  throw new NotFoundError('Product not found, it is a variant');
@@ -3065,9 +3417,12 @@ class ProductHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGra
3065
3417
  filters: {
3066
3418
  slug,
3067
3419
  },
3420
+ fields: this.fields.map((field) => typeof field === 'string' ? field : Object.keys(field).shift()),
3421
+ options: {
3422
+ enableCount: false,
3423
+ },
3068
3424
  });
3069
3425
  const product = result?.data?.shift();
3070
- product.reviews = await this.findReviewsByProduct(+product.id);
3071
3426
  return product;
3072
3427
  }
3073
3428
  async update(params) {
@@ -3217,7 +3572,7 @@ class ProductHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGra
3217
3572
  async getId(id) {
3218
3573
  if (!Number.isNaN(+id))
3219
3574
  return id;
3220
- const { data } = await this.find({ filters: { firestoreId: id } });
3575
+ const { data } = await this.find({ filters: { firestoreId: id }, options: { enableCount: false } });
3221
3576
  if (data?.[0]?.id)
3222
3577
  return data?.[0]?.id;
3223
3578
  throw new NotFoundError(`Product with id ${id} not found`);
@@ -3273,6 +3628,19 @@ class ProductHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGra
3273
3628
  });
3274
3629
  return data && data[0] && this.bindReviewToModel(data[0]);
3275
3630
  }
3631
+ async cleanShoppingCountFromIds(ids) {
3632
+ return await this.mutation('update_product', ['affected_rows'], {
3633
+ where: {
3634
+ value: { id: { _nin: ids } },
3635
+ type: 'product_bool_exp',
3636
+ required: true,
3637
+ },
3638
+ _set: {
3639
+ value: { shopping_count: 0 },
3640
+ type: 'product_set_input',
3641
+ },
3642
+ });
3643
+ }
3276
3644
  }
3277
3645
 
3278
3646
  class VariantHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGraphQL(Base)) {
@@ -3375,7 +3743,7 @@ class VariantHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGra
3375
3743
  async getId(id) {
3376
3744
  if (!Number.isNaN(+id))
3377
3745
  return id;
3378
- const { data } = await this.find({ filters: { firestoreId: id } });
3746
+ const { data } = await this.find({ filters: { firestoreId: id }, options: { enableCount: false } });
3379
3747
  if (data?.[0]?.id)
3380
3748
  return data?.[0]?.id;
3381
3749
  throw new NotFoundError(`Product with id ${id} not found`);
@@ -3386,5 +3754,5 @@ class VariantHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHasuraGra
3386
3754
  * Generated bundle index. Do not edit.
3387
3755
  */
3388
3756
 
3389
- export { AccessoryImportances, Address, Area, Authentication, AuthenticationFirebaseAuthService, AxiosAdapter, Base, BaseModel, BeardProblems, BeardSizes, BeautyProductImportances, BeautyProfile, BeautyQuestionsHelper, BillingStatus, BodyProblems, BodyShapes, BodyTattoos, Buy2Win, Buy2WinFirestoreRepository, Category, CategoryFirestoreRepository, CategoryHasuraGraphQL, CategoryHasuraGraphQLRepository, Checkout, CheckoutFirestoreRepository, CheckoutSubscription, CheckoutSubscriptionFirestoreRepository, CheckoutTypes, Coupon, CouponFirestoreRepository, CouponSubtypes, CouponTypes, DuplicatedResultsError, Edition, EditionStatus, Exclusivities, FaceSkinOilinesses, FaceSkinProblems, FaceSkinTones, FamilyIncomes, FilterType, FragranceImportances, GenderDestination, HairColors, HairProblems, HairStrands, HairTypes, Home, HomeFirestoreRepository, InvalidArgumentError, KitProduct, KitProductHasuraGraphQL, Lead, LeadFirestoreRepository, LegacyOrderFirestoreRepository, LineItem, NotFoundError, OfficePosition, Order, OrderFirestoreRepository, OrderStatus, Payment, PaymentFirestoreRepository, PaymentType, Product, ProductFirestoreRepository, ProductHasuraGraphQL, ProductHasuraGraphQLRepository, ProductSpents, ProductVariantFirestoreRepository, ProductsIndex, QuestionsFilters, RecoveryPassword, Register, RegisterFirebaseAuthService, RequiredArgumentError, ShippingMethod, ShopMenu, ShopMenuFirestoreRepository, Shops, SignInMethods, SignOut, Status, Subscription, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, SubscriptionPayment, SubscriptionPaymentFirestoreRepository, SubscriptionPlan, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, UnauthorizedError, UpdateOptionActions, User, UserAddress, UserAddressFirestoreRepository, UserAlreadyRegisteredError, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, UserPaymentMethod, UserPaymentMethodFirestoreRepository, UserType, Variant, VariantHasuraGraphQL, VariantHasuraGraphQLRepository, WeakPasswordError, Where, get, is, isUUID, parseDateTime, withCreateFirestore, withCreateHasuraGraphQL, withCrudFirestore, withCrudHasuraGraphQL, withDeleteFirestore, withDeleteHasuraGraphQL, withFindFirestore, withFindHasuraGraphQL, withFirestore, withGetFirestore, withGetHasuraGraphQL, withHasuraGraphQL, withHelpers, withSubCollection, withUpdateFirestore, withUpdateHasuraGraphQL };
3757
+ export { AccessoryImportances, Address, Area, Authentication, AuthenticationFirebaseAuthService, AxiosAdapter, Base, BaseModel, BeardProblems, BeardSizes, BeautyProductImportances, BeautyProfile, BeautyQuestionsHelper, BillingStatus, BodyProblems, BodyShapes, BodyTattoos, Buy2Win, Buy2WinFirestoreRepository, CampaignDashboard, CampaignDashboardFirestoreRepository, CampaignHashtag, CampaignHashtagFirestoreRepository, Category, CategoryFilter, CategoryFilterHasuraGraphQLRepository, CategoryFirestoreRepository, CategoryHasuraGraphQL, CategoryHasuraGraphQLRepository, Checkout, CheckoutFirestoreRepository, CheckoutSubscription, CheckoutSubscriptionFirestoreRepository, CheckoutTypes, Coupon, CouponFirestoreRepository, CouponSubtypes, CouponTypes, DuplicatedResultsError, Edition, EditionStatus, Exclusivities, FaceSkinOilinesses, FaceSkinProblems, FaceSkinTones, FamilyIncomes, Filter, FilterHasuraGraphQLRepository, FilterOption, FilterOptionHasuraGraphQLRepository, FilterType, FragranceImportances, GenderDestination, HairColors, HairProblems, HairStrands, HairTypes, Home, HomeFirestoreRepository, InvalidArgumentError, KitProduct, KitProductHasuraGraphQL, Lead, LeadFirestoreRepository, LegacyOrderFirestoreRepository, LineItem, NotFoundError, OfficePosition, Order, OrderFirestoreRepository, OrderStatus, Payment, PaymentFirestoreRepository, PaymentType, Product, ProductFirestoreRepository, ProductHasuraGraphQL, ProductHasuraGraphQLRepository, ProductSpents, ProductVariantFirestoreRepository, ProductsIndex, QuestionsFilters, RecoveryPassword, Register, RegisterFirebaseAuthService, RequiredArgumentError, ShippingMethod, ShopMenu, ShopMenuFirestoreRepository, ShopSettings, ShopSettingsFirestoreRepository, Shops, SignInMethods, SignOut, Status, Subscription, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, SubscriptionPayment, SubscriptionPaymentFirestoreRepository, SubscriptionPlan, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, UnauthorizedError, UpdateOptionActions, User, UserAddress, UserAddressFirestoreRepository, UserAlreadyRegisteredError, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, UserPaymentMethod, UserPaymentMethodFirestoreRepository, UserType, Variant, VariantHasuraGraphQL, VariantHasuraGraphQLRepository, WeakPasswordError, Where, get, is, isUUID, parseDateTime, withCreateFirestore, withCreateHasuraGraphQL, withCrudFirestore, withCrudHasuraGraphQL, withDeleteFirestore, withDeleteHasuraGraphQL, withFindFirestore, withFindHasuraGraphQL, withFirestore, withGetFirestore, withGetHasuraGraphQL, withHasuraGraphQL, withHelpers, withSubCollection, withUpdateFirestore, withUpdateHasuraGraphQL };
3390
3758
  //# sourceMappingURL=infrab4a-connect.mjs.map