@infrab4a/connect-angular 5.8.12 → 5.8.13

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 (301) hide show
  1. package/angular-connect.module.d.ts +36 -0
  2. package/angular-elastic-search.module.d.ts +9 -0
  3. package/angular-firebase-auth.module.d.ts +11 -0
  4. package/angular-firestore.module.d.ts +17 -0
  5. package/angular-hasura-graphql.module.d.ts +14 -0
  6. package/angular-vertex-search.module.d.ts +9 -0
  7. package/consts/backend-url.const.d.ts +1 -0
  8. package/consts/category-structure.d.ts +1 -0
  9. package/consts/default-shop.const.d.ts +1 -0
  10. package/consts/es-config.const.d.ts +1 -0
  11. package/consts/firebase-const.d.ts +4 -0
  12. package/consts/hasura-options.const.d.ts +1 -0
  13. package/consts/index.d.ts +8 -0
  14. package/consts/persistence.const.d.ts +1 -0
  15. package/consts/storage-base-url.const.d.ts +1 -0
  16. package/consts/vertex-config.const.d.ts +1 -0
  17. package/esm2020/angular-connect.module.mjs +293 -0
  18. package/esm2020/angular-elastic-search.module.mjs +34 -0
  19. package/esm2020/angular-firebase-auth.module.mjs +141 -0
  20. package/esm2020/angular-firestore.module.mjs +611 -0
  21. package/esm2020/angular-hasura-graphql.module.mjs +421 -0
  22. package/esm2020/angular-vertex-search.module.mjs +34 -0
  23. package/esm2020/consts/backend-url.const.mjs +2 -0
  24. package/esm2020/consts/category-structure.mjs +2 -0
  25. package/esm2020/consts/default-shop.const.mjs +2 -0
  26. package/esm2020/consts/es-config.const.mjs +2 -0
  27. package/esm2020/consts/firebase-const.mjs +5 -0
  28. package/esm2020/consts/hasura-options.const.mjs +2 -0
  29. package/esm2020/consts/index.mjs +9 -0
  30. package/esm2020/consts/persistence.const.mjs +2 -0
  31. package/esm2020/consts/storage-base-url.const.mjs +2 -0
  32. package/esm2020/consts/vertex-config.const.mjs +2 -0
  33. package/esm2020/helpers/index.mjs +2 -0
  34. package/esm2020/helpers/mobile-operation-system-checker.helper.mjs +7 -0
  35. package/esm2020/index.mjs +7 -0
  36. package/esm2020/infrab4a-connect-angular.mjs +5 -0
  37. package/esm2020/interfaces/catalog-strategies.interface.mjs +2 -0
  38. package/esm2020/interfaces/category-facades.interface.mjs +2 -0
  39. package/esm2020/interfaces/index.mjs +3 -0
  40. package/esm2020/persistence/cookie-data-persistence.mjs +22 -0
  41. package/esm2020/persistence/data-persistence.mjs +2 -0
  42. package/esm2020/persistence/index.mjs +3 -0
  43. package/esm2020/services/auth.service.mjs +37 -0
  44. package/esm2020/services/cart/cart-services.facade.mjs +21 -0
  45. package/esm2020/services/cart/index.mjs +2 -0
  46. package/esm2020/services/cart.service.mjs +84 -0
  47. package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +2 -0
  48. package/esm2020/services/catalog/adapters/index.mjs +4 -0
  49. package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +43 -0
  50. package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +23 -0
  51. package/esm2020/services/catalog/catalog.service.mjs +111 -0
  52. package/esm2020/services/catalog/category.service.mjs +42 -0
  53. package/esm2020/services/catalog/context/catalog-search.context.mjs +40 -0
  54. package/esm2020/services/catalog/enums/index.mjs +2 -0
  55. package/esm2020/services/catalog/enums/product-sorts.enum.mjs +11 -0
  56. package/esm2020/services/catalog/facades/catalog-service.facade.mjs +32 -0
  57. package/esm2020/services/catalog/facades/catalog-strategies.facade.mjs +17 -0
  58. package/esm2020/services/catalog/facades/category-repository.facade.mjs +20 -0
  59. package/esm2020/services/catalog/facades/category-service.facade.mjs +30 -0
  60. package/esm2020/services/catalog/facades/index.mjs +6 -0
  61. package/esm2020/services/catalog/facades/product-catalog.facade.mjs +21 -0
  62. package/esm2020/services/catalog/helpers/brand-manager.helper.mjs +62 -0
  63. package/esm2020/services/catalog/helpers/catalog-filter.helper.mjs +44 -0
  64. package/esm2020/services/catalog/helpers/catalog-sort.helper.mjs +52 -0
  65. package/esm2020/services/catalog/helpers/index.mjs +5 -0
  66. package/esm2020/services/catalog/helpers/product-fields.helper.mjs +43 -0
  67. package/esm2020/services/catalog/index.mjs +8 -0
  68. package/esm2020/services/catalog/models/category-with-tree.model.mjs +10 -0
  69. package/esm2020/services/catalog/models/index.mjs +2 -0
  70. package/esm2020/services/catalog/services/catalog-helpers.service.mjs +33 -0
  71. package/esm2020/services/catalog/services/catalog-operations.facade.mjs +26 -0
  72. package/esm2020/services/catalog/services/catalog-repository.service.mjs +25 -0
  73. package/esm2020/services/catalog/services/index.mjs +5 -0
  74. package/esm2020/services/catalog/services/product-management.facade.mjs +25 -0
  75. package/esm2020/services/catalog/strategies/category-search.strategy.mjs +133 -0
  76. package/esm2020/services/catalog/strategies/index.mjs +4 -0
  77. package/esm2020/services/catalog/strategies/profile-search.strategy.mjs +42 -0
  78. package/esm2020/services/catalog/strategies/term-search.strategy.mjs +126 -0
  79. package/esm2020/services/catalog/strategies/types/strategy-params.type.mjs +2 -0
  80. package/esm2020/services/catalog/types/fetch-products-options.type.mjs +2 -0
  81. package/esm2020/services/catalog/types/fetch-products-params.type.mjs +2 -0
  82. package/esm2020/services/catalog/types/fetch-products-response.type.mjs +2 -0
  83. package/esm2020/services/catalog/types/index.mjs +6 -0
  84. package/esm2020/services/catalog/types/method-params.type.mjs +2 -0
  85. package/esm2020/services/catalog/types/product-sort.type.mjs +2 -0
  86. package/esm2020/services/catalog/wishlist.service.mjs +258 -0
  87. package/esm2020/services/checkout/checkout-dependencies.facade.mjs +20 -0
  88. package/esm2020/services/checkout/checkout-repositories.facade.mjs +20 -0
  89. package/esm2020/services/checkout/index.mjs +3 -0
  90. package/esm2020/services/checkout-subscription.service.mjs +55 -0
  91. package/esm2020/services/checkout.service.mjs +131 -0
  92. package/esm2020/services/coupon/coupon-repositories.facade.mjs +24 -0
  93. package/esm2020/services/coupon/index.mjs +2 -0
  94. package/esm2020/services/coupon/types/coupon-params.type.mjs +2 -0
  95. package/esm2020/services/coupon.service.mjs +248 -0
  96. package/esm2020/services/helpers/index.mjs +2 -0
  97. package/esm2020/services/helpers/util.helper.mjs +18 -0
  98. package/esm2020/services/home-shop/home-shop-repositories.facade.mjs +24 -0
  99. package/esm2020/services/home-shop/index.mjs +2 -0
  100. package/esm2020/services/home-shop.service.mjs +130 -0
  101. package/esm2020/services/index.mjs +12 -0
  102. package/esm2020/services/order-product-review.service.mjs +126 -0
  103. package/esm2020/services/order-recurrence.service.mjs +76 -0
  104. package/esm2020/services/order.service.mjs +30 -0
  105. package/esm2020/services/shared/configuration.facade.mjs +29 -0
  106. package/esm2020/services/shared/index.mjs +2 -0
  107. package/esm2020/services/types/index.mjs +5 -0
  108. package/esm2020/services/types/pending-product-review.type.mjs +2 -0
  109. package/esm2020/services/types/product-review-create.type.mjs +2 -0
  110. package/esm2020/services/types/required-checkout-data.type.mjs +2 -0
  111. package/esm2020/services/types/required-checkout-subscription-data.type.mjs +2 -0
  112. package/esm2020/types/firebase-app-config.type.mjs +2 -0
  113. package/esm2020/types/index.mjs +2 -0
  114. package/fesm2015/infrab4a-connect-angular.mjs +3786 -0
  115. package/fesm2015/infrab4a-connect-angular.mjs.map +1 -0
  116. package/fesm2020/infrab4a-connect-angular.mjs +3688 -0
  117. package/fesm2020/infrab4a-connect-angular.mjs.map +1 -0
  118. package/helpers/index.d.ts +1 -0
  119. package/helpers/mobile-operation-system-checker.helper.d.ts +3 -0
  120. package/index.d.ts +6 -0
  121. package/interfaces/catalog-strategies.interface.d.ts +31 -0
  122. package/interfaces/category-facades.interface.d.ts +6 -0
  123. package/interfaces/index.d.ts +2 -0
  124. package/package.json +24 -4
  125. package/persistence/cookie-data-persistence.d.ts +10 -0
  126. package/persistence/data-persistence.d.ts +6 -0
  127. package/persistence/index.d.ts +2 -0
  128. package/services/auth.service.d.ts +18 -0
  129. package/services/cart/cart-services.facade.d.ts +12 -0
  130. package/services/cart/index.d.ts +1 -0
  131. package/services/cart.service.d.ts +27 -0
  132. package/services/catalog/adapters/category-structure.adapter.d.ts +4 -0
  133. package/services/catalog/adapters/index.d.ts +3 -0
  134. package/services/catalog/adapters/new-category-structure.adapter.d.ts +12 -0
  135. package/services/catalog/adapters/old-category-structure.adapter.d.ts +10 -0
  136. package/services/catalog/catalog.service.d.ts +24 -0
  137. package/services/catalog/category.service.d.ts +23 -0
  138. package/services/catalog/context/catalog-search.context.d.ts +14 -0
  139. package/services/catalog/enums/index.d.ts +1 -0
  140. package/services/catalog/enums/product-sorts.enum.d.ts +9 -0
  141. package/services/catalog/facades/catalog-service.facade.d.ts +15 -0
  142. package/services/catalog/facades/catalog-strategies.facade.d.ts +10 -0
  143. package/services/catalog/facades/category-repository.facade.d.ts +9 -0
  144. package/services/catalog/facades/category-service.facade.d.ts +15 -0
  145. package/{src/services/catalog/facades/index.ts → services/catalog/facades/index.d.ts} +5 -5
  146. package/services/catalog/facades/product-catalog.facade.d.ts +10 -0
  147. package/services/catalog/helpers/brand-manager.helper.d.ts +14 -0
  148. package/services/catalog/helpers/catalog-filter.helper.d.ts +8 -0
  149. package/services/catalog/helpers/catalog-sort.helper.d.ts +7 -0
  150. package/services/catalog/helpers/index.d.ts +4 -0
  151. package/services/catalog/helpers/product-fields.helper.d.ts +7 -0
  152. package/services/catalog/index.d.ts +7 -0
  153. package/services/catalog/models/category-with-tree.model.d.ts +4 -0
  154. package/services/catalog/models/index.d.ts +1 -0
  155. package/services/catalog/services/catalog-helpers.service.d.ts +17 -0
  156. package/services/catalog/services/catalog-operations.facade.d.ts +13 -0
  157. package/services/catalog/services/catalog-repository.service.d.ts +12 -0
  158. package/{src/services/catalog/services/index.ts → services/catalog/services/index.d.ts} +4 -4
  159. package/services/catalog/services/product-management.facade.d.ts +12 -0
  160. package/services/catalog/strategies/category-search.strategy.d.ts +19 -0
  161. package/services/catalog/strategies/index.d.ts +3 -0
  162. package/services/catalog/strategies/profile-search.strategy.d.ts +14 -0
  163. package/services/catalog/strategies/term-search.strategy.d.ts +20 -0
  164. package/services/catalog/strategies/types/strategy-params.type.d.ts +59 -0
  165. package/services/catalog/types/fetch-products-options.type.d.ts +8 -0
  166. package/services/catalog/types/fetch-products-params.type.d.ts +25 -0
  167. package/services/catalog/types/fetch-products-response.type.d.ts +19 -0
  168. package/services/catalog/types/index.d.ts +5 -0
  169. package/services/catalog/types/method-params.type.d.ts +17 -0
  170. package/services/catalog/types/product-sort.type.d.ts +2 -0
  171. package/services/catalog/wishlist.service.d.ts +60 -0
  172. package/services/checkout/checkout-dependencies.facade.d.ts +10 -0
  173. package/services/checkout/checkout-repositories.facade.d.ts +9 -0
  174. package/{src/services/checkout/index.ts → services/checkout/index.d.ts} +2 -2
  175. package/services/checkout-subscription.service.d.ts +19 -0
  176. package/services/checkout.service.d.ts +33 -0
  177. package/services/coupon/coupon-repositories.facade.d.ts +10 -0
  178. package/{src/services/coupon/index.ts → services/coupon/index.d.ts} +1 -1
  179. package/services/coupon/types/coupon-params.type.d.ts +13 -0
  180. package/services/coupon.service.d.ts +36 -0
  181. package/services/helpers/index.d.ts +1 -0
  182. package/services/helpers/util.helper.d.ts +3 -0
  183. package/services/home-shop/home-shop-repositories.facade.d.ts +10 -0
  184. package/{src/services/home-shop/index.ts → services/home-shop/index.d.ts} +1 -1
  185. package/services/home-shop.service.d.ts +34 -0
  186. package/services/index.d.ts +11 -0
  187. package/services/order-product-review.service.d.ts +18 -0
  188. package/services/order-recurrence.service.d.ts +25 -0
  189. package/services/order.service.d.ts +13 -0
  190. package/services/shared/configuration.facade.d.ts +12 -0
  191. package/services/shared/index.d.ts +1 -0
  192. package/services/types/index.d.ts +4 -0
  193. package/services/types/pending-product-review.type.d.ts +12 -0
  194. package/services/types/product-review-create.type.d.ts +14 -0
  195. package/services/types/required-checkout-data.type.d.ts +2 -0
  196. package/services/types/required-checkout-subscription-data.type.d.ts +2 -0
  197. package/types/firebase-app-config.type.d.ts +1 -0
  198. package/types/index.d.ts +1 -0
  199. package/eslint.config.js +0 -18
  200. package/index.ts +0 -1
  201. package/karma.conf.js +0 -32
  202. package/ng-package.json +0 -8
  203. package/project.json +0 -37
  204. package/src/angular-connect.module.ts +0 -270
  205. package/src/angular-elastic-search.module.ts +0 -23
  206. package/src/angular-firebase-auth.module.ts +0 -101
  207. package/src/angular-firestore.module.ts +0 -416
  208. package/src/angular-hasura-graphql.module.ts +0 -269
  209. package/src/angular-vertex-search.module.ts +0 -23
  210. package/src/consts/backend-url.const.ts +0 -1
  211. package/src/consts/category-structure.ts +0 -1
  212. package/src/consts/default-shop.const.ts +0 -1
  213. package/src/consts/es-config.const.ts +0 -1
  214. package/src/consts/firebase-const.ts +0 -5
  215. package/src/consts/hasura-options.const.ts +0 -1
  216. package/src/consts/index.ts +0 -8
  217. package/src/consts/persistence.const.ts +0 -1
  218. package/src/consts/storage-base-url.const.ts +0 -1
  219. package/src/consts/vertex-config.const.ts +0 -1
  220. package/src/helpers/index.ts +0 -1
  221. package/src/helpers/mobile-operation-system-checker.helper.ts +0 -10
  222. package/src/index.ts +0 -6
  223. package/src/interfaces/catalog-strategies.interface.ts +0 -36
  224. package/src/interfaces/category-facades.interface.ts +0 -7
  225. package/src/interfaces/index.ts +0 -2
  226. package/src/persistence/cookie-data-persistence.ts +0 -21
  227. package/src/persistence/data-persistence.ts +0 -7
  228. package/src/persistence/index.ts +0 -2
  229. package/src/services/auth.service.ts +0 -39
  230. package/src/services/cart/cart-services.facade.ts +0 -14
  231. package/src/services/cart/index.ts +0 -1
  232. package/src/services/cart.service.ts +0 -148
  233. package/src/services/catalog/adapters/category-structure.adapter.ts +0 -5
  234. package/src/services/catalog/adapters/index.ts +0 -3
  235. package/src/services/catalog/adapters/new-category-structure.adapter.ts +0 -42
  236. package/src/services/catalog/adapters/old-category-structure.adapter.ts +0 -17
  237. package/src/services/catalog/catalog.service.ts +0 -153
  238. package/src/services/catalog/category.service.ts +0 -56
  239. package/src/services/catalog/context/catalog-search.context.ts +0 -59
  240. package/src/services/catalog/enums/index.ts +0 -1
  241. package/src/services/catalog/enums/product-sorts.enum.ts +0 -9
  242. package/src/services/catalog/facades/catalog-service.facade.ts +0 -32
  243. package/src/services/catalog/facades/catalog-strategies.facade.ts +0 -12
  244. package/src/services/catalog/facades/category-repository.facade.ts +0 -10
  245. package/src/services/catalog/facades/category-service.facade.ts +0 -25
  246. package/src/services/catalog/facades/product-catalog.facade.ts +0 -13
  247. package/src/services/catalog/helpers/brand-manager.helper.ts +0 -69
  248. package/src/services/catalog/helpers/catalog-filter.helper.ts +0 -50
  249. package/src/services/catalog/helpers/catalog-sort.helper.ts +0 -54
  250. package/src/services/catalog/helpers/index.ts +0 -4
  251. package/src/services/catalog/helpers/product-fields.helper.ts +0 -39
  252. package/src/services/catalog/index.ts +0 -7
  253. package/src/services/catalog/models/category-with-tree.model.ts +0 -7
  254. package/src/services/catalog/models/index.ts +0 -1
  255. package/src/services/catalog/services/catalog-helpers.service.ts +0 -35
  256. package/src/services/catalog/services/catalog-operations.facade.ts +0 -24
  257. package/src/services/catalog/services/catalog-repository.service.ts +0 -20
  258. package/src/services/catalog/services/product-management.facade.ts +0 -20
  259. package/src/services/catalog/strategies/category-search.strategy.ts +0 -168
  260. package/src/services/catalog/strategies/index.ts +0 -3
  261. package/src/services/catalog/strategies/profile-search.strategy.ts +0 -51
  262. package/src/services/catalog/strategies/term-search.strategy.ts +0 -163
  263. package/src/services/catalog/strategies/types/strategy-params.type.ts +0 -59
  264. package/src/services/catalog/types/fetch-products-options.type.ts +0 -10
  265. package/src/services/catalog/types/fetch-products-params.type.ts +0 -27
  266. package/src/services/catalog/types/fetch-products-response.type.ts +0 -11
  267. package/src/services/catalog/types/index.ts +0 -5
  268. package/src/services/catalog/types/method-params.type.ts +0 -21
  269. package/src/services/catalog/types/product-sort.type.ts +0 -3
  270. package/src/services/catalog/wishlist.service.ts +0 -364
  271. package/src/services/checkout/checkout-dependencies.facade.ts +0 -13
  272. package/src/services/checkout/checkout-repositories.facade.ts +0 -10
  273. package/src/services/checkout-subscription.service.ts +0 -76
  274. package/src/services/checkout.service.ts +0 -236
  275. package/src/services/coupon/coupon-repositories.facade.ts +0 -11
  276. package/src/services/coupon/types/coupon-params.type.ts +0 -15
  277. package/src/services/coupon.service.ts +0 -347
  278. package/src/services/errors/group-invalid-coupon.error.ts +0 -9
  279. package/src/services/errors/index.ts +0 -2
  280. package/src/services/errors/invalid-coupon.error.ts +0 -7
  281. package/src/services/helpers/index.ts +0 -1
  282. package/src/services/helpers/util.helper.ts +0 -17
  283. package/src/services/home-shop/home-shop-repositories.facade.ts +0 -11
  284. package/src/services/home-shop.service.ts +0 -210
  285. package/src/services/index.ts +0 -12
  286. package/src/services/order-product-review.service.ts +0 -135
  287. package/src/services/order-recurrence.service.ts +0 -121
  288. package/src/services/order.service.ts +0 -23
  289. package/src/services/shared/configuration.facade.ts +0 -21
  290. package/src/services/shared/index.ts +0 -1
  291. package/src/services/types/index.ts +0 -4
  292. package/src/services/types/pending-product-review.type.ts +0 -12
  293. package/src/services/types/product-review-create.type.ts +0 -15
  294. package/src/services/types/required-checkout-data.type.ts +0 -3
  295. package/src/services/types/required-checkout-subscription-data.type.ts +0 -3
  296. package/src/types/firebase-app-config.type.ts +0 -1
  297. package/src/types/index.ts +0 -1
  298. package/tsconfig.json +0 -17
  299. package/tsconfig.lib.json +0 -13
  300. package/tsconfig.lib.prod.json +0 -13
  301. package/tsconfig.spec.json +0 -17
@@ -1 +0,0 @@
1
- export const CATEGORY_STRUCTURE = 'CATEGORY_STRUCTURE'
@@ -1 +0,0 @@
1
- export const DEFAULT_SHOP = 'DEFAULT_SHOP'
@@ -1 +0,0 @@
1
- export const ES_CONFIG = 'ES_CONFIG'
@@ -1,5 +0,0 @@
1
- import { InjectionToken } from '@angular/core'
2
-
3
- export const FIREBASE_APP_NAME = new InjectionToken('firebaseAppName')
4
- export const FIREBASE_OPTIONS = new InjectionToken('firebaseOptions')
5
- export const APP_CHECK_PROVIDER = new InjectionToken('appCheckProvider')
@@ -1 +0,0 @@
1
- export const HASURA_OPTIONS = 'HASURA_OPTIONS'
@@ -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 const PERSISTENCE_PROVIDER = 'PERSISTENCE_PROVIDER'
@@ -1 +0,0 @@
1
- export const STORAGE_BASE_URL = 'STORAGE_BASE_URL'
@@ -1 +0,0 @@
1
- export const VERTEX_CONFIG = 'VERTEX_CONFIG'
@@ -1 +0,0 @@
1
- export * from './mobile-operation-system-checker.helper'
@@ -1,10 +0,0 @@
1
- export class MobileOperationSystemCheckerHelper {
2
- static isAppleDevice() {
3
- return (
4
- ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(
5
- navigator?.platform,
6
- ) ||
7
- (navigator?.userAgent?.includes?.('Mac') && 'ontouchend' in (document || {}))
8
- )
9
- }
10
- }
package/src/index.ts DELETED
@@ -1,6 +0,0 @@
1
- export * from './angular-connect.module'
2
- export * from './angular-firebase-auth.module'
3
- export * from './angular-firestore.module'
4
- export * from './angular-hasura-graphql.module'
5
- export * from './persistence'
6
- export * from './services'
@@ -1,36 +0,0 @@
1
- import {
2
- Category,
3
- Product,
4
- ProductGender,
5
- RepositoryCacheOptions,
6
- RepositoryFindResult,
7
- Shops,
8
- } from '@infrab4a/connect'
9
-
10
- export interface CatalogSearchParams {
11
- category?: Category
12
- profile?: string[]
13
- term?: string
14
- filters?: CatalogFilters
15
- mainGender?: ProductGender
16
- limits: { limit?: number; offset?: number }
17
- sort?: string
18
- }
19
-
20
- export interface CatalogFilters {
21
- clubDiscount?: number[]
22
- brands?: string[]
23
- prices?: { min?: number; max?: number; subscriberPrice?: boolean }
24
- gender?: ProductGender[]
25
- rate?: number
26
- customOptions?: string[]
27
- tags?: string[]
28
- }
29
-
30
- export interface CatalogSearchStrategy {
31
- search(
32
- params: CatalogSearchParams,
33
- shop: Shops,
34
- optionsCache?: { cache?: RepositoryCacheOptions },
35
- ): Promise<RepositoryFindResult<Product>>
36
- }
@@ -1,7 +0,0 @@
1
- import { CategoryRepository, ProductSearchIndex, ProductStockNotificationRepository } from '@infrab4a/connect'
2
-
3
- export interface ProductServicesFacade {
4
- productStockNotificationRepository: ProductStockNotificationRepository
5
- categoryRepository: CategoryRepository
6
- productSearch: ProductSearchIndex
7
- }
@@ -1,2 +0,0 @@
1
- export * from './catalog-strategies.interface'
2
- export * from './category-facades.interface'
@@ -1,21 +0,0 @@
1
- import { Injectable } from '@angular/core'
2
- import cookie from 'js-cookie'
3
- import { Observable, from, of } from 'rxjs'
4
- import { map } from 'rxjs/operators'
5
-
6
- import { DataPersistence } from './data-persistence'
7
-
8
- @Injectable()
9
- export class CookieDataPersistence implements DataPersistence {
10
- get(key: string): Observable<string> {
11
- return of(cookie.get(key))
12
- }
13
-
14
- remove(key: string): Observable<void> {
15
- return of(cookie.remove(key))
16
- }
17
-
18
- set(key: string, value: string): Observable<void> {
19
- return from(cookie.set(key, value)).pipe(map(() => {}))
20
- }
21
- }
@@ -1,7 +0,0 @@
1
- import { Observable } from 'rxjs'
2
-
3
- export interface DataPersistence {
4
- get(key: string): Observable<string>
5
- remove(key: string): Observable<void>
6
- set(key: string, value: string): Observable<void>
7
- }
@@ -1,2 +0,0 @@
1
- export * from './cookie-data-persistence'
2
- export * from './data-persistence'
@@ -1,39 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core'
2
- import { Auth, User as FirebaseUser, authState, getIdToken } from '@angular/fire/auth'
3
- import { User, UserRepository } from '@infrab4a/connect'
4
- import { Observable, combineLatest, from, of } from 'rxjs'
5
- import { catchError, map, mergeMap } from 'rxjs/operators'
6
-
7
- @Injectable()
8
- export class AuthService {
9
- constructor(
10
- private readonly angularFireAuth: Auth,
11
- @Inject('UserRepository') private readonly userRepository: UserRepository,
12
- ) {}
13
-
14
- getAuthstate(): Observable<{ user: User; isAnonymous: boolean }> {
15
- const observables: [Observable<FirebaseUser>, Observable<User>] = [this.getFireUser(), this.getUser()]
16
-
17
- return combineLatest(observables).pipe(
18
- map(([fireUser, user]) => ({
19
- user,
20
- isAnonymous: fireUser?.isAnonymous,
21
- })),
22
- )
23
- }
24
-
25
- getUser(): Observable<User> {
26
- return this.getFireUser().pipe(
27
- map((user) => user?.uid),
28
- mergeMap((id) => (id ? from(this.userRepository.get({ id })).pipe(catchError(() => of(null))) : of(null))),
29
- )
30
- }
31
-
32
- getTokenId(): Observable<string> {
33
- return from(getIdToken(this.angularFireAuth.currentUser))
34
- }
35
-
36
- getFireUser(): Observable<FirebaseUser> {
37
- return authState(this.angularFireAuth).pipe(catchError(() => of(null)))
38
- }
39
- }
@@ -1,14 +0,0 @@
1
- import { HttpClient } from '@angular/common/http'
2
- import { Injectable } from '@angular/core'
3
-
4
- import { AuthService } from '../auth.service'
5
- import { CheckoutService } from '../checkout.service'
6
-
7
- @Injectable()
8
- export class CartServicesFacade {
9
- constructor(
10
- public readonly authService: AuthService,
11
- public readonly checkoutService: CheckoutService,
12
- public readonly httpClient: HttpClient,
13
- ) {}
14
- }
@@ -1 +0,0 @@
1
- export { CartServicesFacade } from './cart-services.facade'
@@ -1,148 +0,0 @@
1
- /* eslint-disable max-params */
2
- import { Injectable } from '@angular/core'
3
- import { Checkout, LineItem, User } from '@infrab4a/connect'
4
- import { Observable, of, Subject } from 'rxjs'
5
- import { concatMap, map, tap } from 'rxjs/operators'
6
-
7
- import { CartServicesFacade } from './cart'
8
- import { ConfigurationFacade } from './shared'
9
- import { RequiredCheckoutData } from './types'
10
-
11
- export type Cart = {
12
- [id: string]: LineItem
13
- }
14
-
15
- @Injectable()
16
- export class CartService {
17
- private cartSubject: Subject<Cart> = new Subject()
18
- private checkoutUrl: string = null
19
-
20
- constructor(
21
- private readonly servicesFacade: CartServicesFacade,
22
- private readonly configurationFacade: ConfigurationFacade,
23
- ) {
24
- this.checkoutUrl = this.configurationFacade.getCheckoutUrl()
25
- }
26
-
27
- addItem(
28
- item: LineItem,
29
- quantity: number = 1,
30
- recurrence: boolean = false,
31
- recurrenceCycle: string = null,
32
- ): Observable<Cart> {
33
- return this.servicesFacade.checkoutService.getCheckout().pipe(
34
- concatMap((checkout) =>
35
- this.servicesFacade.httpClient.post(`${this.checkoutUrl}/checkoutAddItemToCart`, {
36
- checkoutId: checkout.id,
37
- productId: item.id,
38
- quantity,
39
- recurrence,
40
- recurrenceCycle,
41
- }),
42
- ),
43
- concatMap(() => this.servicesFacade.checkoutService.getCheckout()),
44
- map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)),
45
- tap((cart) => this.cartSubject.next(cart)),
46
- )
47
- }
48
-
49
- updateItemRecurrence(item: LineItem, recurrence: boolean = false, recurrenceCycle: string = null): Observable<Cart> {
50
- return this.servicesFacade.checkoutService.getCheckout().pipe(
51
- concatMap((checkout) =>
52
- this.servicesFacade.httpClient.post(`${this.checkoutUrl}/checkoutUpdateItemRecurrence`, {
53
- checkoutId: checkout.id,
54
- productId: item.id,
55
- recurrence,
56
- recurrenceCycle,
57
- }),
58
- ),
59
- concatMap(() => this.servicesFacade.checkoutService.getCheckout()),
60
- map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)),
61
- tap((cart) => this.cartSubject.next(cart)),
62
- )
63
- }
64
-
65
- decreaseItem(item: LineItem): Observable<Cart> {
66
- return this.servicesFacade.checkoutService.getCheckout().pipe(
67
- concatMap((checkout) =>
68
- this.servicesFacade.httpClient.post(`${this.checkoutUrl}/checkoutDecreaseProductFromCart`, {
69
- checkoutId: checkout.id,
70
- productId: item.id,
71
- quantity: 1,
72
- }),
73
- ),
74
- concatMap(() => this.servicesFacade.checkoutService.getCheckout()),
75
- map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)),
76
- tap((cart) => this.cartSubject.next(cart)),
77
- )
78
- }
79
-
80
- removeItem(item: LineItem): Observable<Cart> {
81
- return this.servicesFacade.checkoutService.getCheckout().pipe(
82
- concatMap((checkout) =>
83
- this.servicesFacade.httpClient.post(`${this.checkoutUrl}/checkoutRemoveProductFromCart`, {
84
- checkoutId: checkout.id,
85
- productId: item.id,
86
- }),
87
- ),
88
- concatMap(() => this.servicesFacade.checkoutService.getCheckout()),
89
- map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)),
90
- tap((cart) => this.cartSubject.next(cart)),
91
- )
92
- }
93
-
94
- updateUserCart(user: User): Observable<Cart> {
95
- return this.servicesFacade.checkoutService.getCheckout().pipe(
96
- concatMap((checkout) =>
97
- this.servicesFacade.checkoutService.updateCheckoutUser(Checkout.toInstance({ ...checkout.toPlain(), user })),
98
- ),
99
- concatMap((checkout) => {
100
- return this.servicesFacade.httpClient.post(`${this.checkoutUrl}/checkoutUpdateUserCart`, {
101
- checkoutId: checkout.id,
102
- })
103
- }),
104
- concatMap(() => this.servicesFacade.checkoutService.getCheckout()),
105
- map((updatedCheckout) => {
106
- return this.generateCartObject(updatedCheckout.lineItems)
107
- }),
108
- tap((cart) => this.cartSubject.next(cart)),
109
- )
110
- }
111
-
112
- getCart(checkout?: RequiredCheckoutData): Observable<Cart> {
113
- this.buildCartFromCheckout(checkout).subscribe((cart) => this.cartSubject.next(cart))
114
-
115
- return this.cartSubject
116
- }
117
-
118
- clearCart(): Observable<Cart> {
119
- return this.servicesFacade.checkoutService.getCheckout().pipe(
120
- map((checkout) => {
121
- this.servicesFacade.checkoutService.clearCheckoutFromSession()
122
-
123
- return checkout
124
- }),
125
- concatMap((oldCheckout) => this.buildCartFromCheckout(oldCheckout)),
126
- tap((cart) => this.cartSubject.next(cart)),
127
- )
128
- }
129
-
130
- private buildCartFromCheckout(checkoutData?: RequiredCheckoutData): Observable<Cart> {
131
- return this.servicesFacade.checkoutService.getCheckout(checkoutData).pipe(
132
- map((checkout) => checkout.lineItems),
133
- concatMap((lineItems) => of(this.generateCartObject(lineItems))),
134
- )
135
- }
136
-
137
- private generateCartObject = (items: LineItem[]): Cart =>
138
- items?.reduce(
139
- (cart, item) => ({
140
- ...cart,
141
- [item.id]: LineItem.toInstance({
142
- ...(cart[item.id] || item),
143
- quantity: (cart[item.id]?.quantity || 0) + (item.quantity ? item.quantity : 1),
144
- }),
145
- }),
146
- {} as Record<string, LineItem>,
147
- ) || {}
148
- }
@@ -1,5 +0,0 @@
1
- import { Category, Product, RepositoryFindFielters } from '@infrab4a/connect/'
2
-
3
- export interface CategoryStructureAdapter {
4
- buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>>
5
- }
@@ -1,3 +0,0 @@
1
- export * from './category-structure.adapter'
2
- export * from './new-category-structure.adapter'
3
- export * from './old-category-structure.adapter'
@@ -1,42 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core'
2
- import { Category, CategoryRepository, isNil, Product, RepositoryFindFielters, Where } from '@infrab4a/connect'
3
-
4
- import { CategoryStructureAdapter } from './category-structure.adapter'
5
-
6
- @Injectable()
7
- export class NewCategoryStructureAdapter implements CategoryStructureAdapter {
8
- constructor(@Inject('CategoryRepository') private readonly categoryRepository: CategoryRepository) {}
9
-
10
- async buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>> {
11
- const loadedCategory = await this.getCategory(category)
12
-
13
- if (loadedCategory.isCollection) return { id: { operator: Where.IN, value: loadedCategory.products } }
14
-
15
- const categoryIds = [...(await this.getAllCategoriesIdFromCategory(category)), category.id.toString()]
16
-
17
- return {
18
- category: {
19
- id: {
20
- operator: Where.IN,
21
- value: categoryIds,
22
- },
23
- },
24
- }
25
- }
26
-
27
- private async getAllCategoriesIdFromCategory(category: Category): Promise<string[]> {
28
- return this.categoryRepository
29
- .getChildren(+category.id)
30
- .then((categories) => categories.map((category) => category.id.toString()))
31
- }
32
-
33
- private async getCategory(category: Category): Promise<Category> {
34
- const collectionCategory =
35
- category.isCollection ||
36
- (isNil(category.isCollection) && !category.products?.length) ||
37
- category.isWishlist ||
38
- category.brandCategory
39
-
40
- return collectionCategory ? this.categoryRepository.get({ id: category.id }) : category
41
- }
42
- }
@@ -1,17 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core'
2
- import { Category, CategoryRepository, Product, RepositoryFindFielters, Where } from '@infrab4a/connect'
3
-
4
- import { CategoryStructureAdapter } from './category-structure.adapter'
5
-
6
- @Injectable()
7
- export class OldCategoryStructureAdapter implements CategoryStructureAdapter {
8
- constructor(@Inject('CategoryRepository') private readonly categoryRepository: CategoryRepository) {}
9
-
10
- async buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>> {
11
- const productsIds = category.products?.length
12
- ? category.products
13
- : await this.categoryRepository.get({ id: category.id }).then((categoryFound) => categoryFound.products)
14
-
15
- return { id: { operator: Where.IN, value: productsIds } }
16
- }
17
- }
@@ -1,153 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core'
2
- import {
3
- Category,
4
- InvalidArgumentError,
5
- RepositoryCacheOptions,
6
- RoundProductPricesHelper,
7
- Shops,
8
- } from '@infrab4a/connect'
9
-
10
- import { DEFAULT_SHOP } from '../../consts'
11
- import { CatalogFilters, CatalogSearchParams } from '../../interfaces'
12
-
13
- import { CatalogSearchContext } from './context/catalog-search.context'
14
- import { CatalogHelpersService } from './services'
15
- import {
16
- BuildResponseParams,
17
- FetchProductsMainParams,
18
- FetchProductsOptions,
19
- FetchProductsParams,
20
- FetchProductsResponse,
21
- StockNotificationParams,
22
- } from './types'
23
-
24
- @Injectable()
25
- export class CatalogService<T extends Category = Category> {
26
- constructor(
27
- private readonly searchContext: CatalogSearchContext,
28
- private readonly helpersService: CatalogHelpersService,
29
- @Inject(DEFAULT_SHOP) private readonly shop: Shops,
30
- ) {}
31
-
32
- async fetchProducts(
33
- options: FetchProductsParams<T>,
34
- optionsCache?: { cache?: RepositoryCacheOptions },
35
- ): Promise<FetchProductsResponse> {
36
- this.validateRequest(options)
37
-
38
- const searchParams = this.buildSearchParams(options)
39
- const {
40
- data,
41
- count: total,
42
- maximum,
43
- minimal,
44
- distinct,
45
- } = await this.searchContext.executeSearch(searchParams, this.shop, optionsCache)
46
-
47
- await this.helpersService.getBrandManager().setBrandsList(searchParams, distinct?.brand)
48
-
49
- return this.buildResponse({
50
- data,
51
- total,
52
- maximum,
53
- minimal,
54
- searchParams,
55
- options,
56
- })
57
- }
58
-
59
- async addCustomerToStockNotification(params: StockNotificationParams): Promise<void> {
60
- const { shop, productId, name, email } = params
61
- const productServices = this.helpersService.getProductServices()
62
-
63
- return productServices.productStockNotificationRepository.addCustomerEmail({
64
- shop,
65
- productId,
66
- name,
67
- email,
68
- })
69
- }
70
-
71
- private validateRequest(options: FetchProductsParams<T>): void {
72
- if (this.hasProfile(options) && options.filters?.customOptions) {
73
- throw new InvalidArgumentError(`It couldn't filled customOptions when profile is given`)
74
- }
75
-
76
- if (this.hasProfile(options) && options.filters?.tags) {
77
- throw new InvalidArgumentError(`It couldn't filled tags when profile is given`)
78
- }
79
-
80
- if (this.hasTerm(options) && options.filters?.customOptions) {
81
- throw new InvalidArgumentError(`It couldn't filled customOptions when term is given`)
82
- }
83
- }
84
-
85
- private buildSearchParams(options: FetchProductsParams<T>): CatalogSearchParams {
86
- const limits = this.buildLimitQuery(options)
87
-
88
- return {
89
- category: this.hasCategory(options) ? options.category : undefined,
90
- profile: this.hasProfile(options) ? options.profile : undefined,
91
- term: this.hasTerm(options) ? options.term : undefined,
92
- filters: options.filters,
93
- mainGender: options.mainGender,
94
- sort: options.sort,
95
- limits,
96
- }
97
- }
98
-
99
- private buildResponse(params: BuildResponseParams<T>): FetchProductsResponse {
100
- const { data, total, maximum, minimal, searchParams } = params
101
- const limits = searchParams.limits
102
- const indexKey = this.helpersService.getBrandManager().buildIndexBrands(searchParams)
103
-
104
- return {
105
- products: {
106
- data: data.map((product) => RoundProductPricesHelper.roundProductPrices(product)),
107
- total,
108
- },
109
- pages: Math.ceil(total / limits.limit),
110
- prices: {
111
- price: {
112
- min: +(minimal?.price?.price?.toFixed(2) || 0),
113
- max: +(maximum?.price?.price?.toFixed(2) || 0),
114
- },
115
- subscriberPrice: {
116
- min: +(minimal?.price?.subscriberPrice?.toFixed(2) || 0),
117
- max: +(maximum?.price?.subscriberPrice?.toFixed(2) || 0),
118
- },
119
- },
120
- brands: this.helpersService.getBrandManager().getBrandsList(indexKey),
121
- }
122
- }
123
-
124
- private buildLimitQuery(options: { page?: number; perPage?: number }): { limit: number; offset: number } {
125
- const limit = options?.perPage || 20
126
-
127
- return {
128
- limit,
129
- offset: ((options?.page || 1) - 1) * limit,
130
- }
131
- }
132
-
133
- private hasProfile(options: Partial<FetchProductsParams<T>>): options is FetchProductsOptions & {
134
- profile: FetchProductsMainParams<T>['profile']
135
- filters?: CatalogFilters & { customOptions?: never; tags?: never }
136
- } {
137
- return 'profile' in options
138
- }
139
-
140
- private hasTerm(options: Partial<FetchProductsParams<T>>): options is FetchProductsOptions & {
141
- term: FetchProductsMainParams<T>['term']
142
- filters?: CatalogFilters & { customOptions?: never }
143
- } {
144
- return 'term' in options
145
- }
146
-
147
- private hasCategory(options: Partial<FetchProductsParams<T>>): options is FetchProductsOptions & {
148
- category: FetchProductsMainParams<T>['category']
149
- filters?: CatalogFilters & { customOptions?: never }
150
- } {
151
- return 'category' in options
152
- }
153
- }
@@ -1,56 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core'
2
- import { Category, Filter, ProductGender, RepositoryCacheOptions, Shops } from '@infrab4a/connect'
3
-
4
- import { DEFAULT_SHOP } from '../../consts'
5
-
6
- import { CategoryRepositoryFacade, ProductCatalogFacade } from './facades'
7
-
8
- type FetchBrandsOptions = {
9
- mainGender?: ProductGender
10
- shop?: Shops
11
- }
12
-
13
- @Injectable()
14
- export class CategoryService {
15
- constructor(
16
- private readonly categoryFacade: CategoryRepositoryFacade,
17
- private readonly productCatalog: ProductCatalogFacade,
18
- @Inject(DEFAULT_SHOP) private readonly shop: Shops,
19
- ) {}
20
-
21
- async fetchBrands(
22
- category: Category,
23
- options?: FetchBrandsOptions,
24
- optionsCache?: { cache?: RepositoryCacheOptions },
25
- ): Promise<Category[]> {
26
- const brands = await this.productCatalog.productCatalogRepository
27
- .findCatalog(
28
- {
29
- filters: await this.productCatalog.categoryStructureAdapter.buildProductFilterByCategory(category),
30
- fields: ['brand'],
31
- },
32
- null,
33
- optionsCache,
34
- )
35
- .then(({ data }) =>
36
- Object.keys(data.map((product) => product.brand).reduce((brands, brand) => ({ ...brands, [brand]: true }), {})),
37
- )
38
-
39
- return this.categoryFacade.categoryRepository
40
- .find(
41
- { filters: { brandCategory: true, shop: options?.shop || this.shop }, orderBy: { name: 'asc' } },
42
- optionsCache,
43
- )
44
- .then(({ data }) => data.filter((category) => brands.includes(category.conditions.brand)))
45
- }
46
-
47
- async getMenuBrands() {
48
- return this.categoryFacade.categoryRepository.getBrandsWithProducts()
49
- }
50
-
51
- async fetchFilterOptions(category: Category, optionsCache?: { cache?: RepositoryCacheOptions }): Promise<Filter[]> {
52
- return await this.categoryFacade.categoryFilterRepository
53
- .find({ filters: { categoryId: +category.id } }, optionsCache)
54
- .then(({ data }) => data.map((categoryFilter) => categoryFilter.filter))
55
- }
56
- }