@infrab4a/connect-angular 5.0.0-alpha.15 → 5.0.0-alpha.2

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 (287) hide show
  1. package/eslint.config.js +18 -0
  2. package/index.ts +1 -0
  3. package/karma.conf.js +32 -0
  4. package/ng-package.json +8 -0
  5. package/package.json +9 -22
  6. package/project.json +37 -0
  7. package/src/angular-connect.module.ts +266 -0
  8. package/src/angular-elastic-search.module.ts +23 -0
  9. package/src/angular-firebase-auth.module.ts +101 -0
  10. package/src/angular-firestore.module.ts +371 -0
  11. package/src/angular-hasura-graphql.module.ts +219 -0
  12. package/src/angular-vertex-search.module.ts +23 -0
  13. package/src/consts/backend-url.const.ts +1 -0
  14. package/src/consts/category-structure.ts +1 -0
  15. package/src/consts/default-shop.const.ts +1 -0
  16. package/src/consts/es-config.const.ts +1 -0
  17. package/src/consts/firebase-const.ts +5 -0
  18. package/src/consts/hasura-options.const.ts +1 -0
  19. package/src/consts/index.ts +8 -0
  20. package/src/consts/persistence.const.ts +1 -0
  21. package/src/consts/storage-base-url.const.ts +1 -0
  22. package/src/consts/vertex-config.const.ts +1 -0
  23. package/src/helpers/index.ts +1 -0
  24. package/src/helpers/mobile-operation-system-checker.helper.ts +10 -0
  25. package/src/index.ts +6 -0
  26. package/src/interfaces/catalog-strategies.interface.ts +36 -0
  27. package/src/interfaces/category-facades.interface.ts +7 -0
  28. package/src/interfaces/index.ts +2 -0
  29. package/src/persistence/cookie-data-persistence.ts +21 -0
  30. package/src/persistence/data-persistence.ts +7 -0
  31. package/src/persistence/index.ts +2 -0
  32. package/src/services/auth.service.ts +39 -0
  33. package/src/services/cart/cart-services.facade.ts +14 -0
  34. package/src/services/cart/index.ts +1 -0
  35. package/src/services/cart.service.ts +124 -0
  36. package/src/services/catalog/adapters/category-structure.adapter.ts +5 -0
  37. package/src/services/catalog/adapters/index.ts +3 -0
  38. package/src/services/catalog/adapters/new-category-structure.adapter.ts +42 -0
  39. package/src/services/catalog/adapters/old-category-structure.adapter.ts +17 -0
  40. package/src/services/catalog/catalog.service.ts +153 -0
  41. package/src/services/catalog/category.service.ts +52 -0
  42. package/src/services/catalog/context/catalog-search.context.ts +61 -0
  43. package/src/services/catalog/enums/index.ts +1 -0
  44. package/src/services/catalog/enums/product-sorts.enum.ts +9 -0
  45. package/src/services/catalog/facades/catalog-service.facade.ts +32 -0
  46. package/src/services/catalog/facades/catalog-strategies.facade.ts +12 -0
  47. package/src/services/catalog/facades/category-repository.facade.ts +10 -0
  48. package/src/services/catalog/facades/category-service.facade.ts +25 -0
  49. package/{services/catalog/facades/index.d.ts → src/services/catalog/facades/index.ts} +5 -5
  50. package/src/services/catalog/facades/product-catalog.facade.ts +13 -0
  51. package/src/services/catalog/helpers/brand-manager.helper.ts +63 -0
  52. package/src/services/catalog/helpers/catalog-filter.helper.ts +50 -0
  53. package/src/services/catalog/helpers/catalog-sort.helper.ts +54 -0
  54. package/src/services/catalog/helpers/index.ts +4 -0
  55. package/src/services/catalog/helpers/product-fields.helper.ts +35 -0
  56. package/src/services/catalog/index.ts +7 -0
  57. package/src/services/catalog/models/category-with-tree.model.ts +7 -0
  58. package/src/services/catalog/models/index.ts +1 -0
  59. package/src/services/catalog/services/catalog-helpers.service.ts +35 -0
  60. package/src/services/catalog/services/catalog-operations.facade.ts +24 -0
  61. package/src/services/catalog/services/catalog-repository.service.ts +20 -0
  62. package/{services/catalog/services/index.d.ts → src/services/catalog/services/index.ts} +4 -4
  63. package/src/services/catalog/services/product-management.facade.ts +20 -0
  64. package/src/services/catalog/strategies/category-search.strategy.ts +172 -0
  65. package/src/services/catalog/strategies/index.ts +3 -0
  66. package/src/services/catalog/strategies/profile-search.strategy.ts +51 -0
  67. package/src/services/catalog/strategies/term-search.strategy.ts +178 -0
  68. package/src/services/catalog/strategies/types/strategy-params.type.ts +58 -0
  69. package/src/services/catalog/types/fetch-products-options.type.ts +10 -0
  70. package/src/services/catalog/types/fetch-products-params.type.ts +27 -0
  71. package/src/services/catalog/types/fetch-products-response.type.ts +11 -0
  72. package/src/services/catalog/types/index.ts +5 -0
  73. package/src/services/catalog/types/method-params.type.ts +21 -0
  74. package/src/services/catalog/types/product-sort.type.ts +3 -0
  75. package/src/services/catalog/wishlist.service.ts +368 -0
  76. package/src/services/checkout/checkout-dependencies.facade.ts +13 -0
  77. package/src/services/checkout/checkout-repositories.facade.ts +10 -0
  78. package/{services/checkout/index.d.ts → src/services/checkout/index.ts} +2 -2
  79. package/src/services/checkout-subscription.service.ts +76 -0
  80. package/src/services/checkout.service.ts +196 -0
  81. package/src/services/coupon/coupon-repositories.facade.ts +11 -0
  82. package/{services/coupon/index.d.ts → src/services/coupon/index.ts} +1 -1
  83. package/src/services/coupon/types/coupon-params.type.ts +15 -0
  84. package/src/services/coupon.service.ts +347 -0
  85. package/src/services/errors/group-invalid-coupon.error.ts +9 -0
  86. package/src/services/errors/index.ts +2 -0
  87. package/src/services/errors/invalid-coupon.error.ts +7 -0
  88. package/src/services/helpers/index.ts +1 -0
  89. package/src/services/helpers/util.helper.ts +17 -0
  90. package/src/services/home-shop/home-shop-repositories.facade.ts +11 -0
  91. package/{services/home-shop/index.d.ts → src/services/home-shop/index.ts} +1 -1
  92. package/src/services/home-shop.service.ts +196 -0
  93. package/src/services/index.ts +9 -0
  94. package/src/services/order.service.ts +23 -0
  95. package/src/services/shared/configuration.facade.ts +21 -0
  96. package/src/services/shared/index.ts +1 -0
  97. package/src/services/types/index.ts +2 -0
  98. package/src/services/types/required-checkout-data.type.ts +3 -0
  99. package/src/services/types/required-checkout-subscription-data.type.ts +3 -0
  100. package/src/types/firebase-app-config.type.ts +1 -0
  101. package/src/types/index.ts +1 -0
  102. package/tsconfig.json +17 -0
  103. package/tsconfig.lib.json +13 -0
  104. package/tsconfig.lib.prod.json +13 -0
  105. package/tsconfig.spec.json +17 -0
  106. package/angular-connect.module.d.ts +0 -36
  107. package/angular-elastic-search.module.d.ts +0 -9
  108. package/angular-firebase-auth.module.d.ts +0 -11
  109. package/angular-firestore.module.d.ts +0 -17
  110. package/angular-hasura-graphql.module.d.ts +0 -14
  111. package/angular-vertex-search.module.d.ts +0 -9
  112. package/consts/backend-url.const.d.ts +0 -1
  113. package/consts/category-structure.d.ts +0 -1
  114. package/consts/default-shop.const.d.ts +0 -1
  115. package/consts/es-config.const.d.ts +0 -1
  116. package/consts/firebase-const.d.ts +0 -4
  117. package/consts/hasura-options.const.d.ts +0 -1
  118. package/consts/index.d.ts +0 -8
  119. package/consts/persistence.const.d.ts +0 -1
  120. package/consts/storage-base-url.const.d.ts +0 -1
  121. package/consts/vertex-config.const.d.ts +0 -1
  122. package/esm2022/angular-connect.module.mjs +0 -289
  123. package/esm2022/angular-elastic-search.module.mjs +0 -34
  124. package/esm2022/angular-firebase-auth.module.mjs +0 -141
  125. package/esm2022/angular-firestore.module.mjs +0 -541
  126. package/esm2022/angular-hasura-graphql.module.mjs +0 -333
  127. package/esm2022/angular-vertex-search.module.mjs +0 -34
  128. package/esm2022/consts/backend-url.const.mjs +0 -2
  129. package/esm2022/consts/category-structure.mjs +0 -2
  130. package/esm2022/consts/default-shop.const.mjs +0 -2
  131. package/esm2022/consts/es-config.const.mjs +0 -2
  132. package/esm2022/consts/firebase-const.mjs +0 -5
  133. package/esm2022/consts/hasura-options.const.mjs +0 -2
  134. package/esm2022/consts/index.mjs +0 -9
  135. package/esm2022/consts/persistence.const.mjs +0 -2
  136. package/esm2022/consts/storage-base-url.const.mjs +0 -2
  137. package/esm2022/consts/vertex-config.const.mjs +0 -2
  138. package/esm2022/helpers/index.mjs +0 -2
  139. package/esm2022/helpers/mobile-operation-system-checker.helper.mjs +0 -7
  140. package/esm2022/index.mjs +0 -7
  141. package/esm2022/infrab4a-connect-angular.mjs +0 -5
  142. package/esm2022/interfaces/catalog-strategies.interface.mjs +0 -2
  143. package/esm2022/interfaces/category-facades.interface.mjs +0 -2
  144. package/esm2022/interfaces/index.mjs +0 -3
  145. package/esm2022/persistence/cookie-data-persistence.mjs +0 -22
  146. package/esm2022/persistence/data-persistence.mjs +0 -2
  147. package/esm2022/persistence/index.mjs +0 -3
  148. package/esm2022/services/auth.service.mjs +0 -37
  149. package/esm2022/services/cart/cart-services.facade.mjs +0 -21
  150. package/esm2022/services/cart/index.mjs +0 -2
  151. package/esm2022/services/cart.service.mjs +0 -73
  152. package/esm2022/services/catalog/adapters/category-structure.adapter.mjs +0 -2
  153. package/esm2022/services/catalog/adapters/index.mjs +0 -4
  154. package/esm2022/services/catalog/adapters/new-category-structure.adapter.mjs +0 -43
  155. package/esm2022/services/catalog/adapters/old-category-structure.adapter.mjs +0 -23
  156. package/esm2022/services/catalog/catalog.service.mjs +0 -111
  157. package/esm2022/services/catalog/category.service.mjs +0 -39
  158. package/esm2022/services/catalog/context/catalog-search.context.mjs +0 -40
  159. package/esm2022/services/catalog/enums/index.mjs +0 -2
  160. package/esm2022/services/catalog/enums/product-sorts.enum.mjs +0 -11
  161. package/esm2022/services/catalog/facades/catalog-service.facade.mjs +0 -32
  162. package/esm2022/services/catalog/facades/catalog-strategies.facade.mjs +0 -17
  163. package/esm2022/services/catalog/facades/category-repository.facade.mjs +0 -20
  164. package/esm2022/services/catalog/facades/category-service.facade.mjs +0 -30
  165. package/esm2022/services/catalog/facades/index.mjs +0 -6
  166. package/esm2022/services/catalog/facades/product-catalog.facade.mjs +0 -21
  167. package/esm2022/services/catalog/helpers/brand-manager.helper.mjs +0 -57
  168. package/esm2022/services/catalog/helpers/catalog-filter.helper.mjs +0 -44
  169. package/esm2022/services/catalog/helpers/catalog-sort.helper.mjs +0 -52
  170. package/esm2022/services/catalog/helpers/index.mjs +0 -5
  171. package/esm2022/services/catalog/helpers/product-fields.helper.mjs +0 -39
  172. package/esm2022/services/catalog/index.mjs +0 -8
  173. package/esm2022/services/catalog/models/category-with-tree.model.mjs +0 -10
  174. package/esm2022/services/catalog/models/index.mjs +0 -2
  175. package/esm2022/services/catalog/services/catalog-helpers.service.mjs +0 -33
  176. package/esm2022/services/catalog/services/catalog-operations.facade.mjs +0 -26
  177. package/esm2022/services/catalog/services/catalog-repository.service.mjs +0 -25
  178. package/esm2022/services/catalog/services/index.mjs +0 -5
  179. package/esm2022/services/catalog/services/product-management.facade.mjs +0 -25
  180. package/esm2022/services/catalog/strategies/category-search.strategy.mjs +0 -133
  181. package/esm2022/services/catalog/strategies/index.mjs +0 -4
  182. package/esm2022/services/catalog/strategies/profile-search.strategy.mjs +0 -42
  183. package/esm2022/services/catalog/strategies/term-search.strategy.mjs +0 -126
  184. package/esm2022/services/catalog/strategies/types/strategy-params.type.mjs +0 -2
  185. package/esm2022/services/catalog/types/fetch-products-options.type.mjs +0 -2
  186. package/esm2022/services/catalog/types/fetch-products-params.type.mjs +0 -2
  187. package/esm2022/services/catalog/types/fetch-products-response.type.mjs +0 -2
  188. package/esm2022/services/catalog/types/index.mjs +0 -6
  189. package/esm2022/services/catalog/types/method-params.type.mjs +0 -2
  190. package/esm2022/services/catalog/types/product-sort.type.mjs +0 -2
  191. package/esm2022/services/catalog/wishlist.service.mjs +0 -255
  192. package/esm2022/services/checkout/checkout-dependencies.facade.mjs +0 -20
  193. package/esm2022/services/checkout/checkout-repositories.facade.mjs +0 -20
  194. package/esm2022/services/checkout/index.mjs +0 -3
  195. package/esm2022/services/checkout-subscription.service.mjs +0 -55
  196. package/esm2022/services/checkout.service.mjs +0 -106
  197. package/esm2022/services/coupon/coupon-repositories.facade.mjs +0 -24
  198. package/esm2022/services/coupon/index.mjs +0 -2
  199. package/esm2022/services/coupon/types/coupon-params.type.mjs +0 -2
  200. package/esm2022/services/coupon.service.mjs +0 -248
  201. package/esm2022/services/helpers/index.mjs +0 -2
  202. package/esm2022/services/helpers/util.helper.mjs +0 -18
  203. package/esm2022/services/home-shop/home-shop-repositories.facade.mjs +0 -24
  204. package/esm2022/services/home-shop/index.mjs +0 -2
  205. package/esm2022/services/home-shop.service.mjs +0 -119
  206. package/esm2022/services/index.mjs +0 -10
  207. package/esm2022/services/order.service.mjs +0 -30
  208. package/esm2022/services/shared/configuration.facade.mjs +0 -29
  209. package/esm2022/services/shared/index.mjs +0 -2
  210. package/esm2022/services/types/index.mjs +0 -3
  211. package/esm2022/services/types/required-checkout-data.type.mjs +0 -2
  212. package/esm2022/services/types/required-checkout-subscription-data.type.mjs +0 -2
  213. package/esm2022/types/firebase-app-config.type.mjs +0 -2
  214. package/esm2022/types/index.mjs +0 -2
  215. package/fesm2022/infrab4a-connect-angular.mjs +0 -3277
  216. package/fesm2022/infrab4a-connect-angular.mjs.map +0 -1
  217. package/helpers/index.d.ts +0 -1
  218. package/helpers/mobile-operation-system-checker.helper.d.ts +0 -3
  219. package/index.d.ts +0 -6
  220. package/interfaces/catalog-strategies.interface.d.ts +0 -31
  221. package/interfaces/category-facades.interface.d.ts +0 -6
  222. package/interfaces/index.d.ts +0 -2
  223. package/persistence/cookie-data-persistence.d.ts +0 -10
  224. package/persistence/data-persistence.d.ts +0 -6
  225. package/persistence/index.d.ts +0 -2
  226. package/services/auth.service.d.ts +0 -18
  227. package/services/cart/cart-services.facade.d.ts +0 -12
  228. package/services/cart/index.d.ts +0 -1
  229. package/services/cart.service.d.ts +0 -26
  230. package/services/catalog/adapters/category-structure.adapter.d.ts +0 -4
  231. package/services/catalog/adapters/index.d.ts +0 -3
  232. package/services/catalog/adapters/new-category-structure.adapter.d.ts +0 -12
  233. package/services/catalog/adapters/old-category-structure.adapter.d.ts +0 -10
  234. package/services/catalog/catalog.service.d.ts +0 -24
  235. package/services/catalog/category.service.d.ts +0 -22
  236. package/services/catalog/context/catalog-search.context.d.ts +0 -14
  237. package/services/catalog/enums/index.d.ts +0 -1
  238. package/services/catalog/enums/product-sorts.enum.d.ts +0 -9
  239. package/services/catalog/facades/catalog-service.facade.d.ts +0 -15
  240. package/services/catalog/facades/catalog-strategies.facade.d.ts +0 -10
  241. package/services/catalog/facades/category-repository.facade.d.ts +0 -9
  242. package/services/catalog/facades/category-service.facade.d.ts +0 -15
  243. package/services/catalog/facades/product-catalog.facade.d.ts +0 -10
  244. package/services/catalog/helpers/brand-manager.helper.d.ts +0 -14
  245. package/services/catalog/helpers/catalog-filter.helper.d.ts +0 -8
  246. package/services/catalog/helpers/catalog-sort.helper.d.ts +0 -7
  247. package/services/catalog/helpers/index.d.ts +0 -4
  248. package/services/catalog/helpers/product-fields.helper.d.ts +0 -7
  249. package/services/catalog/index.d.ts +0 -7
  250. package/services/catalog/models/category-with-tree.model.d.ts +0 -4
  251. package/services/catalog/models/index.d.ts +0 -1
  252. package/services/catalog/services/catalog-helpers.service.d.ts +0 -17
  253. package/services/catalog/services/catalog-operations.facade.d.ts +0 -13
  254. package/services/catalog/services/catalog-repository.service.d.ts +0 -12
  255. package/services/catalog/services/product-management.facade.d.ts +0 -12
  256. package/services/catalog/strategies/category-search.strategy.d.ts +0 -19
  257. package/services/catalog/strategies/index.d.ts +0 -3
  258. package/services/catalog/strategies/profile-search.strategy.d.ts +0 -14
  259. package/services/catalog/strategies/term-search.strategy.d.ts +0 -20
  260. package/services/catalog/strategies/types/strategy-params.type.d.ts +0 -58
  261. package/services/catalog/types/fetch-products-options.type.d.ts +0 -8
  262. package/services/catalog/types/fetch-products-params.type.d.ts +0 -25
  263. package/services/catalog/types/fetch-products-response.type.d.ts +0 -19
  264. package/services/catalog/types/index.d.ts +0 -5
  265. package/services/catalog/types/method-params.type.d.ts +0 -17
  266. package/services/catalog/types/product-sort.type.d.ts +0 -2
  267. package/services/catalog/wishlist.service.d.ts +0 -58
  268. package/services/checkout/checkout-dependencies.facade.d.ts +0 -10
  269. package/services/checkout/checkout-repositories.facade.d.ts +0 -9
  270. package/services/checkout-subscription.service.d.ts +0 -19
  271. package/services/checkout.service.d.ts +0 -30
  272. package/services/coupon/coupon-repositories.facade.d.ts +0 -10
  273. package/services/coupon/types/coupon-params.type.d.ts +0 -13
  274. package/services/coupon.service.d.ts +0 -36
  275. package/services/helpers/index.d.ts +0 -1
  276. package/services/helpers/util.helper.d.ts +0 -3
  277. package/services/home-shop/home-shop-repositories.facade.d.ts +0 -10
  278. package/services/home-shop.service.d.ts +0 -26
  279. package/services/index.d.ts +0 -9
  280. package/services/order.service.d.ts +0 -13
  281. package/services/shared/configuration.facade.d.ts +0 -12
  282. package/services/shared/index.d.ts +0 -1
  283. package/services/types/index.d.ts +0 -2
  284. package/services/types/required-checkout-data.type.d.ts +0 -2
  285. package/services/types/required-checkout-subscription-data.type.d.ts +0 -2
  286. package/types/firebase-app-config.type.d.ts +0 -1
  287. package/types/index.d.ts +0 -1
@@ -0,0 +1,18 @@
1
+ const baseConfig = require('../../eslint.config.js')
2
+
3
+ module.exports = [
4
+ ...baseConfig,
5
+ {
6
+ files: ['**/*.ts'],
7
+ languageOptions: {
8
+ parserOptions: {
9
+ project: './tsconfig.json',
10
+ },
11
+ },
12
+ rules: {
13
+ // Regras específicas para o projeto connect-angular
14
+ // Relaxar algumas regras para componentes Angular
15
+ '@typescript-eslint/explicit-member-accessibility': 'off',
16
+ },
17
+ },
18
+ ]
package/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './src'
package/karma.conf.js ADDED
@@ -0,0 +1,32 @@
1
+ // Karma configuration file, see link for more information
2
+ // https://karma-runner.github.io/1.0/config/configuration-file.html
3
+
4
+ module.exports = function (config) {
5
+ config.set({
6
+ basePath: '',
7
+ frameworks: ['jasmine', '@angular-devkit/build-angular'],
8
+ plugins: [
9
+ require('karma-jasmine'),
10
+ require('karma-chrome-launcher'),
11
+ require('karma-jasmine-html-reporter'),
12
+ require('karma-coverage-istanbul-reporter'),
13
+ require('@angular-devkit/build-angular/plugins/karma'),
14
+ ],
15
+ client: {
16
+ clearContext: false, // leave Jasmine Spec Runner output visible in browser
17
+ },
18
+ coverageIstanbulReporter: {
19
+ dir: require('path').join(__dirname, '../../coverage/connect-angular'),
20
+ reports: ['html', 'lcovonly', 'text-summary'],
21
+ fixWebpackSourcePaths: true,
22
+ },
23
+ reporters: ['progress', 'kjhtml'],
24
+ port: 9876,
25
+ colors: true,
26
+ logLevel: config.LOG_INFO,
27
+ autoWatch: true,
28
+ browsers: ['Chrome'],
29
+ singleRun: false,
30
+ restartOnFileChange: true,
31
+ })
32
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3
+ "dest": "../../dist/connect-angular",
4
+ "lib": {
5
+ "entryFile": "src/index.ts"
6
+ },
7
+ "allowedNonPeerDependencies": ["js-cookie", "ts-custom-error", "@infrab4a/connect"]
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infrab4a/connect-angular",
3
- "version": "5.0.0-alpha.15",
3
+ "version": "5.0.0-alpha.2",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org"
6
6
  },
@@ -9,30 +9,17 @@
9
9
  "url": "https://github.com/B4AGroup/b4a-firebase-libs"
10
10
  },
11
11
  "peerDependencies": {
12
- "@angular/common": "17.2.3",
13
- "@angular/core": "17.2.3",
14
- "@angular/fire": "17.0.1",
15
- "@infrab4a/connect": "5.0.0-alpha.14",
12
+ "@angular/common": "^15.1.4",
13
+ "@angular/core": "^15.1.4",
14
+ "@angular/fire": "7.5.0",
15
+ "@infrab4a/connect": "5.0.0-alpha.2",
16
+ "class-transformer": "^0.5.1",
16
17
  "js-cookie": "^3.0.1",
17
- "rxjs": "^7.8.1",
18
+ "rxjs": "^6.6.7",
18
19
  "ts-custom-error": "^3.3.1"
19
20
  },
20
21
  "dependencies": {
21
22
  "js-cookie": "^3.0.1",
22
23
  "tslib": "^2.4.0"
23
- },
24
- "module": "fesm2022/infrab4a-connect-angular.mjs",
25
- "typings": "index.d.ts",
26
- "exports": {
27
- "./package.json": {
28
- "default": "./package.json"
29
- },
30
- ".": {
31
- "types": "./index.d.ts",
32
- "esm2022": "./esm2022/infrab4a-connect-angular.mjs",
33
- "esm": "./esm2022/infrab4a-connect-angular.mjs",
34
- "default": "./fesm2022/infrab4a-connect-angular.mjs"
35
- }
36
- },
37
- "sideEffects": false
38
- }
24
+ }
25
+ }
package/project.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
3
+ "name": "connect-angular",
4
+ "projectType": "library",
5
+ "sourceRoot": "projects/connect-angular/src",
6
+ "prefix": "infrab4a",
7
+ "tags": ["type:lib", "scope:publishable", "framework:angular"],
8
+ "targets": {
9
+ "build": {
10
+ "executor": "@angular-devkit/build-angular:ng-packagr",
11
+ "options": {
12
+ "tsConfig": "projects/connect-angular/tsconfig.lib.json",
13
+ "project": "projects/connect-angular/ng-package.json"
14
+ },
15
+ "configurations": {
16
+ "production": {
17
+ "tsConfig": "projects/connect-angular/tsconfig.lib.prod.json"
18
+ }
19
+ },
20
+ "outputs": ["{workspaceRoot}/dist/connect-angular"]
21
+ },
22
+ "test": {
23
+ "executor": "@angular-devkit/build-angular:karma",
24
+ "options": {
25
+ "main": "projects/connect-angular/src/test.ts",
26
+ "tsConfig": "projects/connect-angular/tsconfig.spec.json",
27
+ "karmaConfig": "projects/connect-angular/karma.conf.js"
28
+ }
29
+ },
30
+ "lint": {
31
+ "executor": "@nx/eslint:lint",
32
+ "options": {
33
+ "lintFilePatterns": ["projects/connect-angular/**/*.ts"]
34
+ }
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,266 @@
1
+ import { Injector, ModuleWithProviders, NgModule, Type } from '@angular/core'
2
+ import { FirebaseApp, FirebaseOptions, getApp, initializeApp, provideFirebaseApp } from '@angular/fire/app'
3
+ import { AppCheckOptions, initializeAppCheck, provideAppCheck } from '@angular/fire/app-check'
4
+ import { getStorage, provideStorage, Storage } from '@angular/fire/storage'
5
+ import {
6
+ AxiosElasticSearchConfig,
7
+ FileUploaderService,
8
+ FirebaseFileUploaderService,
9
+ isNil,
10
+ ProductsVertexSearch,
11
+ Shops,
12
+ UpdateUserImage,
13
+ UserRepository,
14
+ VertexSearchConfig,
15
+ } from '@infrab4a/connect'
16
+
17
+ import { AngularElasticSeachModule } from './angular-elastic-search.module'
18
+ import { AngularFirebaseAuthModule } from './angular-firebase-auth.module'
19
+ import { AngularFirestoreModule } from './angular-firestore.module'
20
+ import { AngularHasuraGraphQLModule, HasuraGraphQLOptions } from './angular-hasura-graphql.module'
21
+ import { AngularVertexSeachModule } from './angular-vertex-search.module'
22
+ import {
23
+ APP_CHECK_PROVIDER,
24
+ BACKEND_URL,
25
+ CATEGORY_STRUCTURE,
26
+ DEFAULT_SHOP,
27
+ ES_CONFIG,
28
+ FIREBASE_APP_NAME,
29
+ FIREBASE_OPTIONS,
30
+ HASURA_OPTIONS,
31
+ PERSISTENCE_PROVIDER,
32
+ VERTEX_CONFIG,
33
+ } from './consts'
34
+ import { STORAGE_BASE_URL } from './consts/storage-base-url.const'
35
+ import { CookieDataPersistence, DataPersistence } from './persistence'
36
+ import {
37
+ AuthService,
38
+ CartService,
39
+ CatalogService,
40
+ CategoryService,
41
+ CheckoutService,
42
+ CheckoutSubscriptionService,
43
+ CouponService,
44
+ HomeShopService,
45
+ OrderService,
46
+ WishlistService,
47
+ } from './services'
48
+ import { CartServicesFacade } from './services/cart'
49
+ import { NewCategoryStructureAdapter, OldCategoryStructureAdapter } from './services/catalog/adapters'
50
+ import { CatalogSearchContext } from './services/catalog/context/catalog-search.context'
51
+ import {
52
+ CatalogServiceFacade,
53
+ CatalogStrategiesFacade,
54
+ CategoryRepositoryFacade,
55
+ CategoryServiceFacade,
56
+ ProductCatalogFacade,
57
+ } from './services/catalog/facades'
58
+ import {
59
+ BrandManagerHelper,
60
+ CatalogFilterHelper,
61
+ CatalogSortHelper,
62
+ ProductFieldsHelper,
63
+ } from './services/catalog/helpers'
64
+ import {
65
+ CatalogHelpersService,
66
+ CatalogOperationsFacade,
67
+ CatalogRepositoryService,
68
+ ProductManagementFacade,
69
+ } from './services/catalog/services'
70
+ import { CategorySearchStrategy, ProfileSearchStrategy, TermSearchStrategy } from './services/catalog/strategies'
71
+ import { CheckoutDependenciesFacade, CheckoutRepositoriesFacade } from './services/checkout'
72
+ import { CouponRepositoriesFacade } from './services/coupon'
73
+ import { HomeShopRepositoriesFacade } from './services/home-shop'
74
+ import { ConfigurationFacade } from './services/shared'
75
+ import { FirebaseAppConfig } from './types'
76
+
77
+ @NgModule({
78
+ imports: [
79
+ provideFirebaseApp((injector: Injector) => {
80
+ const appName = injector.get<string>(FIREBASE_APP_NAME)
81
+
82
+ try {
83
+ const app = appName ? getApp(appName) : getApp()
84
+
85
+ return app
86
+ } catch (error) {
87
+ console.warn('Firebase app not found, initializing new app')
88
+
89
+ if (error instanceof Error) console.error(error.message)
90
+
91
+ return initializeApp(injector.get(FIREBASE_OPTIONS), appName)
92
+ }
93
+ }),
94
+ provideAppCheck((injector: Injector) => {
95
+ const app = injector.get(FirebaseApp)
96
+
97
+ try {
98
+ const provider = injector.get<AppCheckOptions['provider']>(APP_CHECK_PROVIDER)
99
+
100
+ if (provider)
101
+ return initializeAppCheck(app, {
102
+ provider,
103
+ isTokenAutoRefreshEnabled: true,
104
+ })
105
+ } catch (error) {
106
+ if (error instanceof Error) console.error(error.message)
107
+
108
+ return
109
+ }
110
+ }),
111
+ provideStorage((injector: Injector) => getStorage(injector.get(FirebaseApp))),
112
+ AngularElasticSeachModule,
113
+ AngularVertexSeachModule,
114
+ AngularFirebaseAuthModule,
115
+ AngularFirestoreModule,
116
+ AngularHasuraGraphQLModule,
117
+ ],
118
+ providers: [
119
+ AuthService,
120
+ CartService,
121
+ CatalogService,
122
+ CategoryService,
123
+ CheckoutService,
124
+ CheckoutSubscriptionService,
125
+ CouponService,
126
+ HomeShopService,
127
+ OrderService,
128
+ WishlistService,
129
+ ConfigurationFacade,
130
+ CartServicesFacade,
131
+ CheckoutRepositoriesFacade,
132
+ CheckoutDependenciesFacade,
133
+ CategoryRepositoryFacade,
134
+ ProductCatalogFacade,
135
+ CatalogServiceFacade,
136
+ CategoryServiceFacade,
137
+ CatalogStrategiesFacade,
138
+ CatalogOperationsFacade,
139
+ ProductManagementFacade,
140
+ {
141
+ provide: 'ProductServicesFacade',
142
+ useFactory: (productStockNotificationRepository: any, categoryRepository: any, productSearch: any) => ({
143
+ productStockNotificationRepository,
144
+ categoryRepository,
145
+ productSearch,
146
+ }),
147
+ deps: ['ProductStockNotificationRepository', 'CategoryRepository', 'ProductSearch'],
148
+ },
149
+ CatalogFilterHelper,
150
+ CatalogSortHelper,
151
+ ProductFieldsHelper,
152
+ BrandManagerHelper,
153
+ CatalogRepositoryService,
154
+ CatalogHelpersService,
155
+ CategorySearchStrategy,
156
+ TermSearchStrategy,
157
+ ProfileSearchStrategy,
158
+ {
159
+ provide: CatalogSearchContext,
160
+ useFactory: (
161
+ categoryStrategy: CategorySearchStrategy,
162
+ termStrategy: TermSearchStrategy,
163
+ profileStrategy: ProfileSearchStrategy,
164
+ ) => {
165
+ return new CatalogSearchContext(categoryStrategy, termStrategy, profileStrategy)
166
+ },
167
+ deps: [CategorySearchStrategy, TermSearchStrategy, ProfileSearchStrategy],
168
+ },
169
+ {
170
+ provide: UpdateUserImage,
171
+ useFactory: (userRepository: UserRepository, fileUploader: FileUploaderService) => {
172
+ return new UpdateUserImage(userRepository, fileUploader)
173
+ },
174
+ deps: ['UserRepository', 'FileUploaderService'],
175
+ },
176
+ {
177
+ provide: 'FileUploaderService',
178
+ useFactory: (storage: Storage, baseUrl: string) => {
179
+ return new FirebaseFileUploaderService(storage, baseUrl)
180
+ },
181
+ deps: [Storage, STORAGE_BASE_URL],
182
+ },
183
+ {
184
+ provide: 'ProductSearch',
185
+ useExisting: ProductsVertexSearch,
186
+ },
187
+ CouponRepositoriesFacade,
188
+ HomeShopRepositoriesFacade,
189
+ ],
190
+ })
191
+ export class AngularConnectModule {
192
+ static initializeApp(
193
+ defaultShop: Shops,
194
+ options: {
195
+ firebase?: FirebaseOptions
196
+ elasticSearch?: AxiosElasticSearchConfig
197
+ vertexConfig?: VertexSearchConfig
198
+ hasura: HasuraGraphQLOptions
199
+ backendUrl: string
200
+ oldCategoryStructure?: boolean
201
+ storageBaseUrl?: string
202
+ persistenceProvider?: Type<DataPersistence>
203
+ appCheckProvider?: AppCheckOptions['provider']
204
+ },
205
+ nameOrConfig?: string | FirebaseAppConfig,
206
+ ): ModuleWithProviders<AngularConnectModule> {
207
+ return {
208
+ ngModule: AngularConnectModule,
209
+ providers: [
210
+ ...this.buildCoreProviders(nameOrConfig, options),
211
+ ...this.buildConditionalProviders(defaultShop, options),
212
+ ],
213
+ }
214
+ }
215
+
216
+ private static buildCoreProviders(
217
+ nameOrConfig: string | FirebaseAppConfig,
218
+ options: {
219
+ appCheckProvider?: AppCheckOptions['provider']
220
+ oldCategoryStructure?: boolean
221
+ persistenceProvider?: Type<DataPersistence>
222
+ },
223
+ ) {
224
+ return [
225
+ { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
226
+ { provide: APP_CHECK_PROVIDER, useValue: options.appCheckProvider },
227
+ {
228
+ provide: CATEGORY_STRUCTURE,
229
+ useClass: this.selectCategoryStructureAdapter(options.oldCategoryStructure),
230
+ },
231
+ { provide: PERSISTENCE_PROVIDER, useClass: options?.persistenceProvider || CookieDataPersistence },
232
+ ]
233
+ }
234
+
235
+ private static buildConditionalProviders(
236
+ defaultShop: Shops,
237
+ options: {
238
+ firebase?: FirebaseOptions
239
+ elasticSearch?: AxiosElasticSearchConfig
240
+ vertexConfig?: VertexSearchConfig
241
+ hasura: HasuraGraphQLOptions
242
+ backendUrl: string
243
+ storageBaseUrl?: string
244
+ },
245
+ ) {
246
+ return [
247
+ ...this.createProviderIfExists(DEFAULT_SHOP, defaultShop),
248
+ ...this.createProviderIfExists(FIREBASE_OPTIONS, options.firebase),
249
+ ...this.createProviderIfExists(ES_CONFIG, options.elasticSearch),
250
+ ...this.createProviderIfExists(VERTEX_CONFIG, options.vertexConfig),
251
+ ...this.createProviderIfExists(HASURA_OPTIONS, options.hasura),
252
+ ...this.createProviderIfExists(BACKEND_URL, options.backendUrl),
253
+ ...this.createProviderIfExists(STORAGE_BASE_URL, options.storageBaseUrl),
254
+ ]
255
+ }
256
+
257
+ private static selectCategoryStructureAdapter(oldCategoryStructure?: boolean) {
258
+ return isNil(oldCategoryStructure) || oldCategoryStructure
259
+ ? OldCategoryStructureAdapter
260
+ : NewCategoryStructureAdapter
261
+ }
262
+
263
+ private static createProviderIfExists(token: any, value: any) {
264
+ return isNil(value) ? [] : [{ provide: token, useValue: value }]
265
+ }
266
+ }
@@ -0,0 +1,23 @@
1
+ import { ModuleWithProviders, NgModule } from '@angular/core'
2
+ import { AxiosAdapter, AxiosElasticSearchConfig, ProductsIndex } from '@infrab4a/connect'
3
+
4
+ import { ES_CONFIG } from './consts/es-config.const'
5
+
6
+ @NgModule({
7
+ providers: [
8
+ {
9
+ provide: ProductsIndex,
10
+ useFactory: (configuration: AxiosElasticSearchConfig): ProductsIndex =>
11
+ new ProductsIndex(new AxiosAdapter(configuration)),
12
+ deps: [ES_CONFIG],
13
+ },
14
+ ],
15
+ })
16
+ export class AngularElasticSeachModule {
17
+ static initializeApp(options: AxiosElasticSearchConfig): ModuleWithProviders<AngularElasticSeachModule> {
18
+ return {
19
+ ngModule: AngularElasticSeachModule,
20
+ providers: [{ provide: ES_CONFIG, useValue: options }],
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,101 @@
1
+ import { Injector, ModuleWithProviders, NgModule } from '@angular/core'
2
+ import { FirebaseApp, FirebaseOptions } from '@angular/fire/app'
3
+ import {
4
+ Auth,
5
+ browserLocalPersistence,
6
+ browserSessionPersistence,
7
+ getAuth,
8
+ indexedDBLocalPersistence,
9
+ initializeAuth,
10
+ provideAuth,
11
+ } from '@angular/fire/auth'
12
+ import {
13
+ Authentication,
14
+ AuthenticationFirebaseAuthService,
15
+ AuthenticationService,
16
+ RecoveryPassword,
17
+ Register,
18
+ RegisterFirebaseAuthService,
19
+ RegisterService,
20
+ SignOut,
21
+ UserRepository,
22
+ } from '@infrab4a/connect'
23
+
24
+ import { FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts'
25
+ import { FirebaseAppConfig } from './types'
26
+
27
+ @NgModule({
28
+ imports: [
29
+ provideAuth((injector: Injector) => {
30
+ const app = injector.get(FirebaseApp)
31
+
32
+ try {
33
+ return initializeAuth(app, {
34
+ persistence: [indexedDBLocalPersistence, browserLocalPersistence, browserSessionPersistence],
35
+ })
36
+ } catch (error) {
37
+ if (error instanceof Error) console.error('Error initializing auth', error.message)
38
+
39
+ return getAuth(app)
40
+ }
41
+ }),
42
+ ],
43
+ providers: [
44
+ {
45
+ provide: 'Authentication',
46
+ useFactory: (authenticationService: AuthenticationService, userRepository: UserRepository): Authentication => {
47
+ return new Authentication(authenticationService, userRepository)
48
+ },
49
+ deps: ['AuthenticationService', 'UserRepository'],
50
+ },
51
+ {
52
+ provide: 'AuthenticationService',
53
+ useFactory: (angularFireAuth: Auth): AuthenticationService => {
54
+ return new AuthenticationFirebaseAuthService(angularFireAuth)
55
+ },
56
+ deps: [Auth],
57
+ },
58
+ {
59
+ provide: 'Register',
60
+ useFactory: (registerService: RegisterService, userRepository: UserRepository): Register => {
61
+ return new Register(registerService, userRepository)
62
+ },
63
+ deps: ['RegisterService', 'UserRepository'],
64
+ },
65
+ {
66
+ provide: 'RegisterService',
67
+ useFactory: (angularFireAuth: Auth): RegisterService => {
68
+ return new RegisterFirebaseAuthService(angularFireAuth)
69
+ },
70
+ deps: [Auth],
71
+ },
72
+ {
73
+ provide: 'SignOut',
74
+ useFactory: (authenticationService: AuthenticationService): SignOut => {
75
+ return new SignOut(authenticationService)
76
+ },
77
+ deps: ['AuthenticationService'],
78
+ },
79
+ {
80
+ provide: 'RecoveryPassword',
81
+ useFactory: (authenticationService: AuthenticationService): RecoveryPassword => {
82
+ return new RecoveryPassword(authenticationService)
83
+ },
84
+ deps: ['AuthenticationService'],
85
+ },
86
+ ],
87
+ })
88
+ export class AngularFirebaseAuthModule {
89
+ static initializeApp(
90
+ options: FirebaseOptions,
91
+ nameOrConfig?: string | FirebaseAppConfig,
92
+ ): ModuleWithProviders<AngularFirebaseAuthModule> {
93
+ return {
94
+ ngModule: AngularFirebaseAuthModule,
95
+ providers: [
96
+ { provide: FIREBASE_OPTIONS, useValue: options },
97
+ { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
98
+ ],
99
+ }
100
+ }
101
+ }