@infrab4a/connect-angular 5.0.0-beta.96 → 5.0.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 (211) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/eslint.config.js +18 -0
  3. package/index.ts +1 -0
  4. package/karma.conf.js +32 -0
  5. package/ng-package.json +8 -0
  6. package/package.json +10 -22
  7. package/project.json +37 -0
  8. package/src/angular-connect.module.ts +256 -0
  9. package/src/angular-elastic-search.module.ts +23 -0
  10. package/src/angular-firebase-auth.module.ts +101 -0
  11. package/src/angular-firestore.module.ts +371 -0
  12. package/src/angular-hasura-graphql.module.ts +219 -0
  13. package/src/angular-vertex-search.module.ts +23 -0
  14. package/src/consts/backend-url.const.ts +1 -0
  15. package/src/consts/category-structure.ts +1 -0
  16. package/src/consts/default-shop.const.ts +1 -0
  17. package/src/consts/es-config.const.ts +1 -0
  18. package/src/consts/firebase-const.ts +5 -0
  19. package/src/consts/hasura-options.const.ts +1 -0
  20. package/src/consts/index.ts +8 -0
  21. package/src/consts/persistence.const.ts +1 -0
  22. package/src/consts/storage-base-url.const.ts +1 -0
  23. package/src/consts/vertex-config.const.ts +1 -0
  24. package/src/helpers/index.ts +1 -0
  25. package/src/helpers/mobile-operation-system-checker.helper.ts +10 -0
  26. package/src/index.ts +6 -0
  27. package/src/interfaces/catalog-strategies.interface.ts +36 -0
  28. package/src/interfaces/category-facades.interface.ts +7 -0
  29. package/src/interfaces/index.ts +2 -0
  30. package/src/persistence/cookie-data-persistence.ts +21 -0
  31. package/src/persistence/data-persistence.ts +7 -0
  32. package/src/persistence/index.ts +2 -0
  33. package/src/services/auth.service.ts +39 -0
  34. package/src/services/cart/cart-services.facade.ts +14 -0
  35. package/src/services/cart/index.ts +1 -0
  36. package/src/services/cart.service.ts +124 -0
  37. package/src/services/catalog/adapters/category-structure.adapter.ts +5 -0
  38. package/src/services/catalog/adapters/index.ts +3 -0
  39. package/src/services/catalog/adapters/new-category-structure.adapter.ts +42 -0
  40. package/src/services/catalog/adapters/old-category-structure.adapter.ts +17 -0
  41. package/src/services/catalog/catalog.service.ts +153 -0
  42. package/src/services/catalog/category.service.ts +52 -0
  43. package/src/services/catalog/context/catalog-search.context.ts +61 -0
  44. package/src/services/catalog/enums/index.ts +1 -0
  45. package/src/services/catalog/enums/product-sorts.enum.ts +9 -0
  46. package/src/services/catalog/facades/catalog-service.facade.ts +32 -0
  47. package/src/services/catalog/facades/catalog-strategies.facade.ts +12 -0
  48. package/src/services/catalog/facades/category-repository.facade.ts +10 -0
  49. package/src/services/catalog/facades/category-service.facade.ts +25 -0
  50. package/src/services/catalog/facades/index.ts +5 -0
  51. package/src/services/catalog/facades/product-catalog.facade.ts +13 -0
  52. package/src/services/catalog/helpers/brand-manager.helper.ts +63 -0
  53. package/src/services/catalog/helpers/catalog-filter.helper.ts +50 -0
  54. package/src/services/catalog/helpers/catalog-sort.helper.ts +54 -0
  55. package/src/services/catalog/helpers/index.ts +4 -0
  56. package/src/services/catalog/helpers/product-fields.helper.ts +35 -0
  57. package/src/services/catalog/index.ts +7 -0
  58. package/src/services/catalog/models/category-with-tree.model.ts +7 -0
  59. package/src/services/catalog/models/index.ts +1 -0
  60. package/src/services/catalog/services/catalog-helpers.service.ts +35 -0
  61. package/src/services/catalog/services/catalog-operations.facade.ts +24 -0
  62. package/src/services/catalog/services/catalog-repository.service.ts +20 -0
  63. package/src/services/catalog/services/index.ts +4 -0
  64. package/src/services/catalog/services/product-management.facade.ts +20 -0
  65. package/src/services/catalog/strategies/category-search.strategy.ts +172 -0
  66. package/src/services/catalog/strategies/index.ts +3 -0
  67. package/src/services/catalog/strategies/profile-search.strategy.ts +51 -0
  68. package/src/services/catalog/strategies/term-search.strategy.ts +178 -0
  69. package/src/services/catalog/strategies/types/strategy-params.type.ts +58 -0
  70. package/src/services/catalog/types/fetch-products-options.type.ts +10 -0
  71. package/src/services/catalog/types/fetch-products-params.type.ts +27 -0
  72. package/src/services/catalog/types/fetch-products-response.type.ts +11 -0
  73. package/src/services/catalog/types/index.ts +5 -0
  74. package/src/services/catalog/types/method-params.type.ts +21 -0
  75. package/src/services/catalog/types/product-sort.type.ts +3 -0
  76. package/src/services/catalog/wishlist.service.ts +368 -0
  77. package/src/services/checkout/checkout-dependencies.facade.ts +13 -0
  78. package/src/services/checkout/checkout-repositories.facade.ts +10 -0
  79. package/src/services/checkout/index.ts +2 -0
  80. package/src/services/checkout-subscription.service.ts +76 -0
  81. package/src/services/checkout.service.ts +196 -0
  82. package/src/services/coupon/coupon-repositories.facade.ts +11 -0
  83. package/src/services/coupon/index.ts +1 -0
  84. package/src/services/coupon/types/coupon-params.type.ts +15 -0
  85. package/src/services/coupon.service.ts +347 -0
  86. package/src/services/errors/group-invalid-coupon.error.ts +9 -0
  87. package/src/services/errors/index.ts +2 -0
  88. package/src/services/errors/invalid-coupon.error.ts +7 -0
  89. package/src/services/helpers/index.ts +1 -0
  90. package/src/services/helpers/util.helper.ts +17 -0
  91. package/src/services/home-shop/home-shop-repositories.facade.ts +11 -0
  92. package/src/services/home-shop/index.ts +1 -0
  93. package/src/services/home-shop.service.ts +196 -0
  94. package/src/services/index.ts +9 -0
  95. package/src/services/order.service.ts +23 -0
  96. package/src/services/shared/configuration.facade.ts +21 -0
  97. package/src/services/shared/index.ts +1 -0
  98. package/src/services/types/index.ts +2 -0
  99. package/src/services/types/required-checkout-data.type.ts +3 -0
  100. package/src/services/types/required-checkout-subscription-data.type.ts +3 -0
  101. package/src/types/firebase-app-config.type.ts +1 -0
  102. package/src/types/index.ts +1 -0
  103. package/tsconfig.json +17 -0
  104. package/tsconfig.lib.json +13 -0
  105. package/tsconfig.lib.prod.json +13 -0
  106. package/tsconfig.spec.json +17 -0
  107. package/angular-connect.module.d.ts +0 -32
  108. package/angular-elastic-search.module.d.ts +0 -9
  109. package/angular-firebase-auth.module.d.ts +0 -11
  110. package/angular-firestore.module.d.ts +0 -17
  111. package/angular-hasura-graphql.module.d.ts +0 -14
  112. package/angular-vertex-search.module.d.ts +0 -9
  113. package/consts/backend-url.const.d.ts +0 -1
  114. package/consts/category-structure.d.ts +0 -1
  115. package/consts/default-shop.const.d.ts +0 -1
  116. package/consts/es-config.const.d.ts +0 -1
  117. package/consts/firebase-const.d.ts +0 -4
  118. package/consts/hasura-options.const.d.ts +0 -1
  119. package/consts/index.d.ts +0 -8
  120. package/consts/persistence.const.d.ts +0 -1
  121. package/consts/storage-base-url.const.d.ts +0 -1
  122. package/consts/vertex-config.const.d.ts +0 -1
  123. package/esm2022/angular-connect.module.mjs +0 -187
  124. package/esm2022/angular-elastic-search.module.mjs +0 -34
  125. package/esm2022/angular-firebase-auth.module.mjs +0 -141
  126. package/esm2022/angular-firestore.module.mjs +0 -541
  127. package/esm2022/angular-hasura-graphql.module.mjs +0 -333
  128. package/esm2022/angular-vertex-search.module.mjs +0 -34
  129. package/esm2022/consts/backend-url.const.mjs +0 -2
  130. package/esm2022/consts/category-structure.mjs +0 -2
  131. package/esm2022/consts/default-shop.const.mjs +0 -2
  132. package/esm2022/consts/es-config.const.mjs +0 -2
  133. package/esm2022/consts/firebase-const.mjs +0 -5
  134. package/esm2022/consts/hasura-options.const.mjs +0 -2
  135. package/esm2022/consts/index.mjs +0 -9
  136. package/esm2022/consts/persistence.const.mjs +0 -2
  137. package/esm2022/consts/storage-base-url.const.mjs +0 -2
  138. package/esm2022/consts/vertex-config.const.mjs +0 -2
  139. package/esm2022/helpers/index.mjs +0 -2
  140. package/esm2022/helpers/mobile-operation-system-checker.helper.mjs +0 -7
  141. package/esm2022/index.mjs +0 -7
  142. package/esm2022/infrab4a-connect-angular.mjs +0 -5
  143. package/esm2022/persistence/cookie-data-persistence.mjs +0 -22
  144. package/esm2022/persistence/data-persistence.mjs +0 -2
  145. package/esm2022/persistence/index.mjs +0 -3
  146. package/esm2022/services/auth.service.mjs +0 -37
  147. package/esm2022/services/cart.service.mjs +0 -86
  148. package/esm2022/services/catalog/adapters/category-structure.adapter.mjs +0 -2
  149. package/esm2022/services/catalog/adapters/index.mjs +0 -4
  150. package/esm2022/services/catalog/adapters/new-category-structure.adapter.mjs +0 -43
  151. package/esm2022/services/catalog/adapters/old-category-structure.adapter.mjs +0 -23
  152. package/esm2022/services/catalog/catalog.service.mjs +0 -325
  153. package/esm2022/services/catalog/category.service.mjs +0 -51
  154. package/esm2022/services/catalog/enums/index.mjs +0 -2
  155. package/esm2022/services/catalog/enums/product-sorts.enum.mjs +0 -11
  156. package/esm2022/services/catalog/index.mjs +0 -8
  157. package/esm2022/services/catalog/models/category-with-tree.model.mjs +0 -10
  158. package/esm2022/services/catalog/models/index.mjs +0 -2
  159. package/esm2022/services/catalog/types/index.mjs +0 -2
  160. package/esm2022/services/catalog/types/product-sort.type.mjs +0 -2
  161. package/esm2022/services/catalog/wishlist.service.mjs +0 -235
  162. package/esm2022/services/checkout-subscription.service.mjs +0 -50
  163. package/esm2022/services/checkout.service.mjs +0 -122
  164. package/esm2022/services/coupon.service.mjs +0 -228
  165. package/esm2022/services/helpers/index.mjs +0 -2
  166. package/esm2022/services/helpers/util.helper.mjs +0 -18
  167. package/esm2022/services/home-shop.service.mjs +0 -125
  168. package/esm2022/services/index.mjs +0 -10
  169. package/esm2022/services/order.service.mjs +0 -30
  170. package/esm2022/services/types/index.mjs +0 -3
  171. package/esm2022/services/types/required-checkout-data.type.mjs +0 -2
  172. package/esm2022/services/types/required-checkout-subscription-data.type.mjs +0 -2
  173. package/esm2022/types/firebase-app-config.type.mjs +0 -2
  174. package/esm2022/types/index.mjs +0 -2
  175. package/fesm2022/infrab4a-connect-angular.mjs +0 -2603
  176. package/fesm2022/infrab4a-connect-angular.mjs.map +0 -1
  177. package/helpers/index.d.ts +0 -1
  178. package/helpers/mobile-operation-system-checker.helper.d.ts +0 -3
  179. package/index.d.ts +0 -6
  180. package/persistence/cookie-data-persistence.d.ts +0 -10
  181. package/persistence/data-persistence.d.ts +0 -6
  182. package/persistence/index.d.ts +0 -2
  183. package/services/auth.service.d.ts +0 -18
  184. package/services/cart.service.d.ts +0 -31
  185. package/services/catalog/adapters/category-structure.adapter.d.ts +0 -4
  186. package/services/catalog/adapters/index.d.ts +0 -3
  187. package/services/catalog/adapters/new-category-structure.adapter.d.ts +0 -12
  188. package/services/catalog/adapters/old-category-structure.adapter.d.ts +0 -10
  189. package/services/catalog/catalog.service.d.ts +0 -96
  190. package/services/catalog/category.service.d.ts +0 -24
  191. package/services/catalog/enums/index.d.ts +0 -1
  192. package/services/catalog/enums/product-sorts.enum.d.ts +0 -9
  193. package/services/catalog/index.d.ts +0 -7
  194. package/services/catalog/models/category-with-tree.model.d.ts +0 -4
  195. package/services/catalog/models/index.d.ts +0 -1
  196. package/services/catalog/types/index.d.ts +0 -1
  197. package/services/catalog/types/product-sort.type.d.ts +0 -2
  198. package/services/catalog/wishlist.service.d.ts +0 -50
  199. package/services/checkout-subscription.service.d.ts +0 -19
  200. package/services/checkout.service.d.ts +0 -34
  201. package/services/coupon.service.d.ts +0 -27
  202. package/services/helpers/index.d.ts +0 -1
  203. package/services/helpers/util.helper.d.ts +0 -3
  204. package/services/home-shop.service.d.ts +0 -26
  205. package/services/index.d.ts +0 -9
  206. package/services/order.service.d.ts +0 -13
  207. package/services/types/index.d.ts +0 -2
  208. package/services/types/required-checkout-data.type.d.ts +0 -2
  209. package/services/types/required-checkout-subscription-data.type.d.ts +0 -2
  210. package/types/firebase-app-config.type.d.ts +0 -1
  211. package/types/index.d.ts +0 -1
@@ -0,0 +1,17 @@
1
+ export class UtilHelper {
2
+ static createSlug(name: string): string {
3
+ return name
4
+ .toLowerCase()
5
+ .replace(/\s+/g, '-') // Replace spaces with -
6
+ .replace(/[ãàáäâ]/g, 'a') // Replace spaces with -
7
+ .replace(/[ẽèéëê]/g, 'e') // Replace spaces with -
8
+ .replace(/[ìíïî]/g, 'i') // Replace spaces with -
9
+ .replace(/[õòóöô]/g, 'o') // Replace spaces with -
10
+ .replace(/[ùúüû]/g, 'u') // Replace spaces with -
11
+ .replace(/[ñ]/g, 'n') // Replace spaces with -
12
+ .replace(/[ç]/g, 'c') // Replace spaces with -
13
+ .replace(/[&]/g, 'and') // Replace spaces with -
14
+ .replace(/[^\w-]+/g, '') // Remove all non-word chars
15
+ .replace(/--+/g, '-') // Replace multiple - with single -
16
+ }
17
+ }
@@ -0,0 +1,11 @@
1
+ import { Inject, Injectable } from '@angular/core'
2
+ import { CategoryRepository, HomeRepository, ProductRepository } from '@infrab4a/connect'
3
+
4
+ @Injectable()
5
+ export class HomeShopRepositoriesFacade {
6
+ constructor(
7
+ @Inject('CategoryRepository') public readonly categoryRepository: CategoryRepository,
8
+ @Inject('HomeRepository') public readonly homeRepository: HomeRepository,
9
+ @Inject('ProductRepository') public readonly productRepository: ProductRepository,
10
+ ) {}
11
+ }
@@ -0,0 +1 @@
1
+ export { HomeShopRepositoriesFacade } from './home-shop-repositories.facade'
@@ -0,0 +1,196 @@
1
+ import { Injectable } from '@angular/core'
2
+ import {
3
+ add,
4
+ Banner,
5
+ Category,
6
+ Home,
7
+ HomeCategoryGroup,
8
+ HomeData,
9
+ pick,
10
+ Product,
11
+ RequiredArgumentError,
12
+ Shops,
13
+ Where,
14
+ } from '@infrab4a/connect'
15
+ import { forkJoin, from, Observable, of, throwError } from 'rxjs'
16
+ import { concatMap, map, tap } from 'rxjs/operators'
17
+
18
+ import { HomeShopRepositoriesFacade } from './home-shop'
19
+ import { ConfigurationFacade } from './shared'
20
+
21
+ type HomeConfigurationId = 'glamshop' | 'mens_market'
22
+ type BannerType = 'brand' | 'buyToWin' | 'block' | 'blog'
23
+
24
+ @Injectable()
25
+ export class HomeShopService {
26
+ private homeConfiguration: Home
27
+
28
+ private get homeId(): HomeConfigurationId {
29
+ if (this.configurationFacade.defaultShop === Shops.GLAMSHOP) return 'glamshop'
30
+
31
+ if (this.configurationFacade.defaultShop === Shops.MENSMARKET) return 'mens_market'
32
+
33
+ return null
34
+ }
35
+
36
+ constructor(
37
+ private readonly repositoriesFacade: HomeShopRepositoriesFacade,
38
+ private readonly configurationFacade: ConfigurationFacade,
39
+ ) {}
40
+
41
+ getHomeData(): Observable<Home> {
42
+ return this.getHomeConfiguration().pipe(
43
+ map((home) => (home?.data?.expiresAt > new Date() ? home : null)),
44
+ concatMap((home) =>
45
+ home
46
+ ? of(home)
47
+ : forkJoin([
48
+ this.getDiscoverProducts(this.gender),
49
+ this.getFeaturedProducts(this.gender),
50
+ this.getVerticalProducts(this.gender),
51
+ ]).pipe(
52
+ map(([discoverProducts, featuredProducts, verticalProducts]) => ({
53
+ discoverProducts,
54
+ featuredProducts,
55
+ verticalProducts,
56
+ })),
57
+ concatMap((data) => this.saveHomeData(data)),
58
+ ),
59
+ ),
60
+ )
61
+ }
62
+
63
+ getBanners(type: BannerType): Observable<Banner[]> {
64
+ return this.getHomeConfiguration().pipe(
65
+ map((home) => {
66
+ if (type === 'brand') return home.brandsCarousel
67
+
68
+ if (type === 'buyToWin') return [home.buyToWinBanner]
69
+
70
+ if (type === 'block') return home.blockBanners
71
+
72
+ if (type === 'blog') return [home.blogBanner]
73
+
74
+ return []
75
+ }),
76
+ )
77
+ }
78
+
79
+ getMinValueForFreeShipping(): Observable<number> {
80
+ return this.getHomeConfiguration().pipe(map((home) => home.minValueForFreeShipping))
81
+ }
82
+
83
+ private getDiscoverProducts(_gender?: string): Observable<{ category: Category; products: Product[] }[]> {
84
+ return this.getHomeConfiguration().pipe(
85
+ concatMap((home) =>
86
+ from(
87
+ this.repositoriesFacade.categoryRepository.getCategoriesForHome({
88
+ categoryIds: home.discoverCategories,
89
+ shop: this.configurationFacade.defaultShop,
90
+ }),
91
+ ).pipe(map((groups) => groups.map(this.buildCategoryGroupWithRequiredData))),
92
+ ),
93
+ )
94
+ }
95
+
96
+ private getFeaturedProducts(_gender?: string): Observable<{ category: Category; products: Product[] }[]> {
97
+ return this.getHomeConfiguration().pipe(
98
+ concatMap((home) =>
99
+ from(
100
+ this.repositoriesFacade.categoryRepository.getCategoriesForHome({
101
+ categoryIds: home.featuredCategories,
102
+ shop: this.configurationFacade.defaultShop,
103
+ }),
104
+ ).pipe(map((groups) => groups.map(this.buildCategoryGroupWithRequiredData))),
105
+ ),
106
+ )
107
+ }
108
+
109
+ private getVerticalProducts(gender?: string): Observable<{ category: Category; products: Product[] }[]> {
110
+ return this.getHomeConfiguration().pipe(
111
+ concatMap((home) =>
112
+ forkJoin(
113
+ home.verticalCarousels.filter(Boolean).map((id) =>
114
+ from(this.repositoriesFacade.categoryRepository.get({ id })).pipe(
115
+ concatMap((category) =>
116
+ from(
117
+ this.repositoriesFacade.productRepository.find({
118
+ filters: {
119
+ categories: { operator: Where.IN, value: [category.id] },
120
+ ...(gender ? { tags: { operator: Where.IN, value: [gender] } } : {}),
121
+ },
122
+ limits: { limit: 12 },
123
+ }),
124
+ ).pipe(map((products) => ({ category, products }))),
125
+ ),
126
+ map(({ category, products }) => ({ category, products: products.data })),
127
+ map(this.buildCategoryGroupWithRequiredData),
128
+ ),
129
+ ),
130
+ ),
131
+ ),
132
+ )
133
+ }
134
+
135
+ private getHomeConfiguration(): Observable<Home> {
136
+ return of(this.homeConfiguration).pipe(
137
+ concatMap((home) =>
138
+ home
139
+ ? of(home)
140
+ : !this.homeId
141
+ ? throwError(() => new RequiredArgumentError(['homeId']))
142
+ : from(this.repositoriesFacade.homeRepository.get({ id: this.homeId })).pipe(
143
+ tap((homeLoaded) => (this.homeConfiguration = homeLoaded)),
144
+ ),
145
+ ),
146
+ )
147
+ }
148
+
149
+ private saveHomeData(homeData: HomeData): Observable<Home> {
150
+ const data = {
151
+ createdAt: new Date(),
152
+ expiresAt: add(new Date(), { hours: 1 }),
153
+ data: homeData,
154
+ }
155
+
156
+ return from(
157
+ this.repositoriesFacade.homeRepository.update({
158
+ id: this.homeId,
159
+ data,
160
+ }),
161
+ ).pipe(
162
+ tap(() => (this.homeConfiguration.data = data)),
163
+ map(() => this.homeConfiguration),
164
+ )
165
+ }
166
+
167
+ private buildCategoryGroupWithRequiredData = (group: HomeCategoryGroup): HomeCategoryGroup => ({
168
+ category: Category.toInstance(pick(group?.category?.toPlain() || {}, ['id', 'name', 'slug', 'conditions'])),
169
+ products:
170
+ group?.products?.map((product) =>
171
+ Product.toInstance(
172
+ pick(product?.toPlain() || {}, [
173
+ 'id',
174
+ 'price',
175
+ 'reviews',
176
+ 'hasVariants',
177
+ 'slug',
178
+ 'sku',
179
+ 'stock',
180
+ 'costPrice',
181
+ 'images',
182
+ 'miniatures',
183
+ 'name',
184
+ 'weight',
185
+ 'rate',
186
+ 'type',
187
+ 'brand',
188
+ ]),
189
+ ),
190
+ ) || [],
191
+ })
192
+
193
+ private get gender() {
194
+ return this.homeId === 'mens_market' ? 'masculino' : undefined
195
+ }
196
+ }
@@ -0,0 +1,9 @@
1
+ export * from './auth.service'
2
+ export * from './cart.service'
3
+ export * from './catalog'
4
+ export * from './checkout-subscription.service'
5
+ export * from './checkout.service'
6
+ export * from './coupon.service'
7
+ export * from './helpers'
8
+ export * from './home-shop.service'
9
+ export * from './order.service'
@@ -0,0 +1,23 @@
1
+ import { Injectable, Inject } from '@angular/core'
2
+ import { doc, Firestore, docSnapshots } from '@angular/fire/firestore'
3
+ import { Order, OrderFirestoreRepository } from '@infrab4a/connect'
4
+ import { Subject } from 'rxjs'
5
+ import { map } from 'rxjs/operators'
6
+
7
+ @Injectable()
8
+ export class OrderService {
9
+ orderSubject = new Subject<Order>()
10
+
11
+ constructor(
12
+ private readonly angularFirestore: Firestore,
13
+ @Inject('OrderRepository') private readonly orderRepository: OrderFirestoreRepository,
14
+ ) {}
15
+
16
+ getOrder(id: string): Subject<Order> {
17
+ docSnapshots(doc(this.angularFirestore, `${this.orderRepository.collectionName}/${id}`))
18
+ .pipe(map((doc) => Order.toInstance(doc.data())))
19
+ .subscribe((doc) => this.orderSubject.next(doc))
20
+
21
+ return this.orderSubject
22
+ }
23
+ }
@@ -0,0 +1,21 @@
1
+ import { Inject, Injectable } from '@angular/core'
2
+ import { FirebaseOptions } from '@angular/fire/app'
3
+ import { Shops } from '@infrab4a/connect'
4
+
5
+ import { DEFAULT_SHOP, FIREBASE_OPTIONS } from '../../consts'
6
+
7
+ @Injectable()
8
+ export class ConfigurationFacade {
9
+ constructor(
10
+ @Inject(DEFAULT_SHOP) public readonly defaultShop: Shops,
11
+ @Inject(FIREBASE_OPTIONS) public readonly firebaseOptions: FirebaseOptions,
12
+ ) {}
13
+
14
+ getCheckoutUrl(): string {
15
+ return `https://southamerica-east1-${this.firebaseOptions.projectId}.cloudfunctions.net`
16
+ }
17
+
18
+ getProjectId(): string {
19
+ return this.firebaseOptions.projectId
20
+ }
21
+ }
@@ -0,0 +1 @@
1
+ export { ConfigurationFacade } from './configuration.facade'
@@ -0,0 +1,2 @@
1
+ export * from './required-checkout-data.type'
2
+ export * from './required-checkout-subscription-data.type'
@@ -0,0 +1,3 @@
1
+ import { Checkout } from '@infrab4a/connect'
2
+
3
+ export type RequiredCheckoutData = Partial<Pick<Checkout, 'id' | 'user' | 'shop' | 'lineItems'>>
@@ -0,0 +1,3 @@
1
+ import { CheckoutSubscription } from '@infrab4a/connect'
2
+
3
+ export type RequiredCheckoutSubscriptionData = Partial<Pick<CheckoutSubscription, 'id'>>
@@ -0,0 +1 @@
1
+ export type FirebaseAppConfig = Record<string, any>
@@ -0,0 +1 @@
1
+ export * from './firebase-app-config.type'
package/tsconfig.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "declarationMap": true,
5
+ "inlineSources": true,
6
+ "noEmit": true,
7
+ "composite": false,
8
+ "lib": ["es2018", "dom"]
9
+ },
10
+ "exclude": [
11
+ "**/*.spec.ts"
12
+ ],
13
+ "references": [
14
+ { "path": "../connect" }
15
+ ],
16
+ "include": ["./src"]
17
+ }
@@ -0,0 +1,13 @@
1
+ /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
+ {
3
+ "extends": "./tsconfig.json",
4
+ "compilerOptions": {
5
+ "noEmit": false,
6
+ "composite": false
7
+ },
8
+ "angularCompilerOptions": {
9
+ "skipTemplateCodegen": true,
10
+ "strictMetadataEmit": true,
11
+ "enableResourceInlining": true,
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
+ {
3
+ "extends": "./tsconfig.lib.json",
4
+ "compilerOptions": {
5
+ "declarationMap": false,
6
+ "importHelpers": true,
7
+ "target": "es2017",
8
+ "module": "es2020"
9
+ },
10
+ "angularCompilerOptions": {
11
+ "compilationMode": "partial"
12
+ }
13
+ }
@@ -0,0 +1,17 @@
1
+ /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
+ {
3
+ "extends": "../../tsconfig.json",
4
+ "compilerOptions": {
5
+ "outDir": "../../dist/spec",
6
+ "types": [
7
+ "jasmine"
8
+ ]
9
+ },
10
+ "files": [
11
+ "src/test.ts"
12
+ ],
13
+ "include": [
14
+ "**/*.spec.ts",
15
+ "**/*.d.ts"
16
+ ]
17
+ }
@@ -1,32 +0,0 @@
1
- import { ModuleWithProviders, Type } from '@angular/core';
2
- import { FirebaseOptions } from '@angular/fire/app';
3
- import { AppCheckOptions } from '@angular/fire/app-check';
4
- import { AxiosElasticSearchConfig, Shops, VertexSearchConfig } from '@infrab4a/connect';
5
- import { HasuraGraphQLOptions } from './angular-hasura-graphql.module';
6
- import { DataPersistence } from './persistence';
7
- import { FirebaseAppConfig } from './types';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/fire/app";
10
- import * as i2 from "@angular/fire/app-check";
11
- import * as i3 from "@angular/fire/storage";
12
- import * as i4 from "./angular-elastic-search.module";
13
- import * as i5 from "./angular-vertex-search.module";
14
- import * as i6 from "./angular-firebase-auth.module";
15
- import * as i7 from "./angular-firestore.module";
16
- import * as i8 from "./angular-hasura-graphql.module";
17
- export declare class AngularConnectModule {
18
- static initializeApp(defaultShop: Shops, options: {
19
- firebase?: FirebaseOptions;
20
- elasticSearch?: AxiosElasticSearchConfig;
21
- vertexConfig?: VertexSearchConfig;
22
- hasura: HasuraGraphQLOptions;
23
- backendUrl: string;
24
- oldCategoryStructure?: boolean;
25
- storageBaseUrl?: string;
26
- persistenceProvider?: Type<DataPersistence>;
27
- appCheckProvider?: AppCheckOptions['provider'];
28
- }, nameOrConfig?: string | FirebaseAppConfig): ModuleWithProviders<AngularConnectModule>;
29
- static ɵfac: i0.ɵɵFactoryDeclaration<AngularConnectModule, never>;
30
- static ɵmod: i0.ɵɵNgModuleDeclaration<AngularConnectModule, never, [typeof i1.FirebaseAppModule, typeof i2.AppCheckModule, typeof i3.StorageModule, typeof i4.AngularElasticSeachModule, typeof i5.AngularVertexSeachModule, typeof i6.AngularFirebaseAuthModule, typeof i7.AngularFirestoreModule, typeof i8.AngularHasuraGraphQLModule], never>;
31
- static ɵinj: i0.ɵɵInjectorDeclaration<AngularConnectModule>;
32
- }
@@ -1,9 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { AxiosElasticSearchConfig } from '@infrab4a/connect';
3
- import * as i0 from "@angular/core";
4
- export declare class AngularElasticSeachModule {
5
- static initializeApp(options: AxiosElasticSearchConfig): ModuleWithProviders<AngularElasticSeachModule>;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<AngularElasticSeachModule, never>;
7
- static ɵmod: i0.ɵɵNgModuleDeclaration<AngularElasticSeachModule, never, never, never>;
8
- static ɵinj: i0.ɵɵInjectorDeclaration<AngularElasticSeachModule>;
9
- }
@@ -1,11 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { FirebaseOptions } from '@angular/fire/app';
3
- import { FirebaseAppConfig } from './types';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/fire/auth";
6
- export declare class AngularFirebaseAuthModule {
7
- static initializeApp(options: FirebaseOptions, nameOrConfig?: string | FirebaseAppConfig): ModuleWithProviders<AngularFirebaseAuthModule>;
8
- static ɵfac: i0.ɵɵFactoryDeclaration<AngularFirebaseAuthModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<AngularFirebaseAuthModule, never, [typeof i1.AuthModule], never>;
10
- static ɵinj: i0.ɵɵInjectorDeclaration<AngularFirebaseAuthModule>;
11
- }
@@ -1,17 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { FirebaseOptions } from '@angular/fire/app';
3
- import { AxiosElasticSearchConfig, FirestoreConstructorParams } from '@infrab4a/connect';
4
- import { FirebaseAppConfig } from './types';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "./angular-elastic-search.module";
7
- import * as i2 from "@angular/fire/firestore";
8
- export type FirestoreOptions = Pick<FirestoreConstructorParams<any>, 'firestore' | 'interceptors'>;
9
- export declare class AngularFirestoreModule {
10
- static initializeApp(options: {
11
- firebase: FirebaseOptions;
12
- elasticSearch: AxiosElasticSearchConfig;
13
- }, nameOrConfig?: string | FirebaseAppConfig): ModuleWithProviders<AngularFirestoreModule>;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<AngularFirestoreModule, never>;
15
- static ɵmod: i0.ɵɵNgModuleDeclaration<AngularFirestoreModule, never, [typeof i1.AngularElasticSeachModule, typeof i2.FirestoreModule], never>;
16
- static ɵinj: i0.ɵɵInjectorDeclaration<AngularFirestoreModule>;
17
- }
@@ -1,14 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { CacheConfig, HasuraGraphQLAuthOptions } from '@infrab4a/connect';
3
- import * as i0 from "@angular/core";
4
- export type HasuraGraphQLOptions = {
5
- endpoint: string;
6
- credentials?: HasuraGraphQLAuthOptions;
7
- cache?: CacheConfig;
8
- };
9
- export declare class AngularHasuraGraphQLModule {
10
- static initializeApp(options: HasuraGraphQLOptions): ModuleWithProviders<AngularHasuraGraphQLModule>;
11
- static ɵfac: i0.ɵɵFactoryDeclaration<AngularHasuraGraphQLModule, never>;
12
- static ɵmod: i0.ɵɵNgModuleDeclaration<AngularHasuraGraphQLModule, never, never, never>;
13
- static ɵinj: i0.ɵɵInjectorDeclaration<AngularHasuraGraphQLModule>;
14
- }
@@ -1,9 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { VertexSearchConfig } from '@infrab4a/connect';
3
- import * as i0 from "@angular/core";
4
- export declare class AngularVertexSeachModule {
5
- static initializeApp(options: VertexSearchConfig): ModuleWithProviders<AngularVertexSeachModule>;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<AngularVertexSeachModule, never>;
7
- static ɵmod: i0.ɵɵNgModuleDeclaration<AngularVertexSeachModule, never, never, never>;
8
- static ɵinj: i0.ɵɵInjectorDeclaration<AngularVertexSeachModule>;
9
- }
@@ -1 +0,0 @@
1
- export declare const BACKEND_URL = "BACKEND_URL";
@@ -1 +0,0 @@
1
- export declare const CATEGORY_STRUCTURE = "CATEGORY_STRUCTURE";
@@ -1 +0,0 @@
1
- export declare const DEFAULT_SHOP = "DEFAULT_SHOP";
@@ -1 +0,0 @@
1
- export declare const ES_CONFIG = "ES_CONFIG";
@@ -1,4 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export declare const FIREBASE_APP_NAME: InjectionToken<unknown>;
3
- export declare const FIREBASE_OPTIONS: InjectionToken<unknown>;
4
- export declare const APP_CHECK_PROVIDER: InjectionToken<unknown>;
@@ -1 +0,0 @@
1
- export declare const HASURA_OPTIONS = "HASURA_OPTIONS";
package/consts/index.d.ts DELETED
@@ -1,8 +0,0 @@
1
- export * from './backend-url.const';
2
- export * from './category-structure';
3
- export * from './default-shop.const';
4
- export * from './es-config.const';
5
- export * from './firebase-const';
6
- export * from './hasura-options.const';
7
- export * from './persistence.const';
8
- export * from './vertex-config.const';
@@ -1 +0,0 @@
1
- export declare const PERSISTENCE_PROVIDER = "PERSISTENCE_PROVIDER";
@@ -1 +0,0 @@
1
- export declare const STORAGE_BASE_URL = "STORAGE_BASE_URL";
@@ -1 +0,0 @@
1
- export declare const VERTEX_CONFIG = "VERTEX_CONFIG";