@infrab4a/connect-angular 5.1.0 → 6.0.0-alpha.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.
- package/eslint.config.js +18 -0
- package/index.ts +1 -0
- package/karma.conf.js +32 -0
- package/ng-package.json +8 -0
- package/package.json +10 -28
- package/project.json +37 -0
- package/src/angular-connect.module.ts +256 -0
- package/src/angular-elastic-search.module.ts +23 -0
- package/src/angular-firebase-auth.module.ts +101 -0
- package/src/angular-firestore.module.ts +371 -0
- package/src/angular-hasura-graphql.module.ts +219 -0
- package/src/angular-vertex-search.module.ts +23 -0
- package/src/consts/backend-url.const.ts +1 -0
- package/src/consts/category-structure.ts +1 -0
- package/src/consts/default-shop.const.ts +1 -0
- package/src/consts/es-config.const.ts +1 -0
- package/src/consts/firebase-const.ts +5 -0
- package/src/consts/hasura-options.const.ts +1 -0
- package/src/consts/index.ts +8 -0
- package/src/consts/persistence.const.ts +1 -0
- package/src/consts/storage-base-url.const.ts +1 -0
- package/src/consts/vertex-config.const.ts +1 -0
- package/src/helpers/index.ts +1 -0
- package/src/helpers/mobile-operation-system-checker.helper.ts +10 -0
- package/src/index.ts +6 -0
- package/src/interfaces/catalog-strategies.interface.ts +36 -0
- package/src/interfaces/category-facades.interface.ts +7 -0
- package/src/interfaces/index.ts +2 -0
- package/src/persistence/cookie-data-persistence.ts +21 -0
- package/src/persistence/data-persistence.ts +7 -0
- package/src/persistence/index.ts +2 -0
- package/src/services/auth.service.ts +39 -0
- package/src/services/cart/cart-services.facade.ts +14 -0
- package/src/services/cart/index.ts +1 -0
- package/src/services/cart.service.ts +124 -0
- package/src/services/catalog/adapters/category-structure.adapter.ts +5 -0
- package/src/services/catalog/adapters/index.ts +3 -0
- package/src/services/catalog/adapters/new-category-structure.adapter.ts +42 -0
- package/src/services/catalog/adapters/old-category-structure.adapter.ts +17 -0
- package/src/services/catalog/catalog.service.ts +153 -0
- package/src/services/catalog/category.service.ts +52 -0
- package/src/services/catalog/context/catalog-search.context.ts +61 -0
- package/src/services/catalog/enums/index.ts +1 -0
- package/src/services/catalog/enums/product-sorts.enum.ts +9 -0
- package/src/services/catalog/facades/catalog-service.facade.ts +32 -0
- package/src/services/catalog/facades/catalog-strategies.facade.ts +12 -0
- package/src/services/catalog/facades/category-repository.facade.ts +10 -0
- package/src/services/catalog/facades/category-service.facade.ts +25 -0
- package/src/services/catalog/facades/index.ts +5 -0
- package/src/services/catalog/facades/product-catalog.facade.ts +13 -0
- package/src/services/catalog/helpers/brand-manager.helper.ts +63 -0
- package/src/services/catalog/helpers/catalog-filter.helper.ts +50 -0
- package/src/services/catalog/helpers/catalog-sort.helper.ts +54 -0
- package/src/services/catalog/helpers/index.ts +4 -0
- package/src/services/catalog/helpers/product-fields.helper.ts +35 -0
- package/src/services/catalog/index.ts +7 -0
- package/src/services/catalog/models/category-with-tree.model.ts +7 -0
- package/src/services/catalog/models/index.ts +1 -0
- package/src/services/catalog/services/catalog-helpers.service.ts +35 -0
- package/src/services/catalog/services/catalog-operations.facade.ts +24 -0
- package/src/services/catalog/services/catalog-repository.service.ts +20 -0
- package/src/services/catalog/services/index.ts +4 -0
- package/src/services/catalog/services/product-management.facade.ts +20 -0
- package/src/services/catalog/strategies/category-search.strategy.ts +172 -0
- package/src/services/catalog/strategies/index.ts +3 -0
- package/src/services/catalog/strategies/profile-search.strategy.ts +51 -0
- package/src/services/catalog/strategies/term-search.strategy.ts +178 -0
- package/src/services/catalog/strategies/types/strategy-params.type.ts +58 -0
- package/src/services/catalog/types/fetch-products-options.type.ts +10 -0
- package/src/services/catalog/types/fetch-products-params.type.ts +27 -0
- package/src/services/catalog/types/fetch-products-response.type.ts +11 -0
- package/src/services/catalog/types/index.ts +5 -0
- package/src/services/catalog/types/method-params.type.ts +21 -0
- package/src/services/catalog/types/product-sort.type.ts +3 -0
- package/src/services/catalog/wishlist.service.ts +368 -0
- package/src/services/checkout/checkout-dependencies.facade.ts +13 -0
- package/src/services/checkout/checkout-repositories.facade.ts +10 -0
- package/src/services/checkout/index.ts +2 -0
- package/src/services/checkout-subscription.service.ts +76 -0
- package/src/services/checkout.service.ts +196 -0
- package/src/services/coupon/coupon-repositories.facade.ts +11 -0
- package/src/services/coupon/index.ts +1 -0
- package/src/services/coupon/types/coupon-params.type.ts +15 -0
- package/src/services/coupon.service.ts +347 -0
- package/src/services/errors/group-invalid-coupon.error.ts +9 -0
- package/src/services/errors/index.ts +2 -0
- package/src/services/errors/invalid-coupon.error.ts +7 -0
- package/src/services/helpers/index.ts +1 -0
- package/src/services/helpers/util.helper.ts +17 -0
- package/src/services/home-shop/home-shop-repositories.facade.ts +11 -0
- package/src/services/home-shop/index.ts +1 -0
- package/src/services/home-shop.service.ts +196 -0
- package/src/services/index.ts +9 -0
- package/src/services/order.service.ts +23 -0
- package/src/services/shared/configuration.facade.ts +21 -0
- package/src/services/shared/index.ts +1 -0
- package/src/services/types/index.ts +2 -0
- package/src/services/types/required-checkout-data.type.ts +3 -0
- package/src/services/types/required-checkout-subscription-data.type.ts +3 -0
- package/src/types/firebase-app-config.type.ts +1 -0
- package/src/types/index.ts +1 -0
- package/tsconfig.json +17 -0
- package/tsconfig.lib.json +13 -0
- package/tsconfig.lib.prod.json +13 -0
- package/tsconfig.spec.json +17 -0
- package/angular-connect.module.d.ts +0 -26
- package/angular-elastic-search.module.d.ts +0 -9
- package/angular-firebase-auth.module.d.ts +0 -11
- package/angular-firestore.module.d.ts +0 -18
- package/angular-hasura-graphql.module.d.ts +0 -16
- package/consts/backend-url.const.d.ts +0 -1
- package/consts/category-structure.d.ts +0 -1
- package/consts/default-shop.const.d.ts +0 -1
- package/consts/es-config.const.d.ts +0 -1
- package/consts/firebase-const.d.ts +0 -3
- package/consts/hasura-options.const.d.ts +0 -1
- package/consts/index.d.ts +0 -7
- package/consts/persistence.const.d.ts +0 -1
- package/consts/storage-base-url.const.d.ts +0 -1
- package/esm2020/angular-connect.module.mjs +0 -115
- package/esm2020/angular-elastic-search.module.mjs +0 -34
- package/esm2020/angular-firebase-auth.module.mjs +0 -115
- package/esm2020/angular-firestore.module.mjs +0 -504
- package/esm2020/angular-hasura-graphql.module.mjs +0 -265
- package/esm2020/consts/backend-url.const.mjs +0 -2
- package/esm2020/consts/category-structure.mjs +0 -2
- package/esm2020/consts/default-shop.const.mjs +0 -2
- package/esm2020/consts/es-config.const.mjs +0 -2
- package/esm2020/consts/firebase-const.mjs +0 -4
- package/esm2020/consts/hasura-options.const.mjs +0 -2
- package/esm2020/consts/index.mjs +0 -8
- package/esm2020/consts/persistence.const.mjs +0 -2
- package/esm2020/consts/storage-base-url.const.mjs +0 -2
- package/esm2020/helpers/index.mjs +0 -2
- package/esm2020/helpers/mobile-operation-system-checker.helper.mjs +0 -7
- package/esm2020/index.mjs +0 -7
- package/esm2020/infrab4a-connect-angular.mjs +0 -5
- package/esm2020/persistence/cookie-data-persistence.mjs +0 -22
- package/esm2020/persistence/data-persistence.mjs +0 -2
- package/esm2020/persistence/index.mjs +0 -3
- package/esm2020/services/auth.service.mjs +0 -37
- package/esm2020/services/cart.service.mjs +0 -281
- package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +0 -2
- package/esm2020/services/catalog/adapters/index.mjs +0 -4
- package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +0 -43
- package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +0 -23
- package/esm2020/services/catalog/catalog.service.mjs +0 -194
- package/esm2020/services/catalog/category.service.mjs +0 -51
- package/esm2020/services/catalog/enums/index.mjs +0 -2
- package/esm2020/services/catalog/enums/product-sorts.enum.mjs +0 -11
- package/esm2020/services/catalog/index.mjs +0 -8
- package/esm2020/services/catalog/models/category-with-tree.model.mjs +0 -10
- package/esm2020/services/catalog/models/index.mjs +0 -2
- package/esm2020/services/catalog/types/index.mjs +0 -2
- package/esm2020/services/catalog/types/product-sort.type.mjs +0 -2
- package/esm2020/services/catalog/wishlist.service.mjs +0 -115
- package/esm2020/services/checkout-subscription.service.mjs +0 -50
- package/esm2020/services/checkout.service.mjs +0 -68
- package/esm2020/services/coupon.service.mjs +0 -235
- package/esm2020/services/helpers/index.mjs +0 -2
- package/esm2020/services/helpers/util.helper.mjs +0 -18
- package/esm2020/services/home-shop.service.mjs +0 -125
- package/esm2020/services/index.mjs +0 -11
- package/esm2020/services/order.service.mjs +0 -30
- package/esm2020/services/shipping.service.mjs +0 -96
- package/esm2020/services/types/index.mjs +0 -3
- package/esm2020/services/types/required-checkout-data.type.mjs +0 -2
- package/esm2020/services/types/required-checkout-subscription-data.type.mjs +0 -2
- package/esm2020/services/types/shipping-methods.type.mjs +0 -2
- package/esm2020/types/firebase-app-config.type.mjs +0 -2
- package/esm2020/types/index.mjs +0 -2
- package/fesm2015/infrab4a-connect-angular.mjs +0 -2417
- package/fesm2015/infrab4a-connect-angular.mjs.map +0 -1
- package/fesm2020/infrab4a-connect-angular.mjs +0 -2352
- package/fesm2020/infrab4a-connect-angular.mjs.map +0 -1
- package/helpers/index.d.ts +0 -1
- package/helpers/mobile-operation-system-checker.helper.d.ts +0 -3
- package/index.d.ts +0 -6
- package/persistence/cookie-data-persistence.d.ts +0 -10
- package/persistence/data-persistence.d.ts +0 -6
- package/persistence/index.d.ts +0 -2
- package/services/auth.service.d.ts +0 -18
- package/services/cart.service.d.ts +0 -42
- package/services/catalog/adapters/category-structure.adapter.d.ts +0 -4
- package/services/catalog/adapters/index.d.ts +0 -3
- package/services/catalog/adapters/new-category-structure.adapter.d.ts +0 -12
- package/services/catalog/adapters/old-category-structure.adapter.d.ts +0 -10
- package/services/catalog/catalog.service.d.ts +0 -86
- package/services/catalog/category.service.d.ts +0 -20
- package/services/catalog/enums/index.d.ts +0 -1
- package/services/catalog/enums/product-sorts.enum.d.ts +0 -9
- package/services/catalog/index.d.ts +0 -7
- package/services/catalog/models/category-with-tree.model.d.ts +0 -4
- package/services/catalog/models/index.d.ts +0 -1
- package/services/catalog/types/index.d.ts +0 -1
- package/services/catalog/types/product-sort.type.d.ts +0 -2
- package/services/catalog/wishlist.service.d.ts +0 -38
- package/services/checkout-subscription.service.d.ts +0 -19
- package/services/checkout.service.d.ts +0 -24
- package/services/coupon.service.d.ts +0 -29
- package/services/helpers/index.d.ts +0 -1
- package/services/helpers/util.helper.d.ts +0 -3
- package/services/home-shop.service.d.ts +0 -26
- package/services/index.d.ts +0 -10
- package/services/order.service.d.ts +0 -13
- package/services/shipping.service.d.ts +0 -19
- package/services/types/index.d.ts +0 -2
- package/services/types/required-checkout-data.type.d.ts +0 -2
- package/services/types/required-checkout-subscription-data.type.d.ts +0 -2
- package/services/types/shipping-methods.type.d.ts +0 -12
- package/types/firebase-app-config.type.d.ts +0 -1
- package/types/index.d.ts +0 -1
package/eslint.config.js
ADDED
|
@@ -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
|
+
}
|
package/ng-package.json
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@infrab4a/connect-angular",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0-alpha.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org"
|
|
6
6
|
},
|
|
@@ -9,35 +9,17 @@
|
|
|
9
9
|
"url": "https://github.com/B4AGroup/b4a-firebase-libs"
|
|
10
10
|
},
|
|
11
11
|
"peerDependencies": {
|
|
12
|
-
"@angular/common": "^
|
|
13
|
-
"@angular/core": "^
|
|
14
|
-
"@angular/fire": "
|
|
15
|
-
"@infrab4a/connect": "
|
|
12
|
+
"@angular/common": "^15.1.4",
|
|
13
|
+
"@angular/core": "^15.1.4",
|
|
14
|
+
"@angular/fire": "7.5.0",
|
|
15
|
+
"@infrab4a/connect": "6.0.0-alpha.0",
|
|
16
|
+
"class-transformer": "^0.5.1",
|
|
16
17
|
"js-cookie": "^3.0.1",
|
|
17
|
-
"rxjs": "^
|
|
18
|
+
"rxjs": "^6.6.7",
|
|
19
|
+
"ts-custom-error": "^3.3.1"
|
|
18
20
|
},
|
|
19
21
|
"dependencies": {
|
|
20
22
|
"js-cookie": "^3.0.1",
|
|
21
23
|
"tslib": "^2.4.0"
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
"es2020": "fesm2020/infrab4a-connect-angular.mjs",
|
|
25
|
-
"esm2020": "esm2020/infrab4a-connect-angular.mjs",
|
|
26
|
-
"fesm2020": "fesm2020/infrab4a-connect-angular.mjs",
|
|
27
|
-
"fesm2015": "fesm2015/infrab4a-connect-angular.mjs",
|
|
28
|
-
"typings": "index.d.ts",
|
|
29
|
-
"exports": {
|
|
30
|
-
"./package.json": {
|
|
31
|
-
"default": "./package.json"
|
|
32
|
-
},
|
|
33
|
-
".": {
|
|
34
|
-
"types": "./index.d.ts",
|
|
35
|
-
"esm2020": "./esm2020/infrab4a-connect-angular.mjs",
|
|
36
|
-
"es2020": "./fesm2020/infrab4a-connect-angular.mjs",
|
|
37
|
-
"es2015": "./fesm2015/infrab4a-connect-angular.mjs",
|
|
38
|
-
"node": "./fesm2015/infrab4a-connect-angular.mjs",
|
|
39
|
-
"default": "./fesm2020/infrab4a-connect-angular.mjs"
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
"sideEffects": false
|
|
43
|
-
}
|
|
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,256 @@
|
|
|
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
|
+
CatalogSearchContext,
|
|
159
|
+
{
|
|
160
|
+
provide: UpdateUserImage,
|
|
161
|
+
useFactory: (userRepository: UserRepository, fileUploader: FileUploaderService) => {
|
|
162
|
+
return new UpdateUserImage(userRepository, fileUploader)
|
|
163
|
+
},
|
|
164
|
+
deps: ['UserRepository', 'FileUploaderService'],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
provide: 'FileUploaderService',
|
|
168
|
+
useFactory: (storage: Storage, baseUrl: string) => {
|
|
169
|
+
return new FirebaseFileUploaderService(storage, baseUrl)
|
|
170
|
+
},
|
|
171
|
+
deps: [Storage, STORAGE_BASE_URL],
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
provide: 'ProductSearch',
|
|
175
|
+
useExisting: ProductsVertexSearch,
|
|
176
|
+
},
|
|
177
|
+
CouponRepositoriesFacade,
|
|
178
|
+
HomeShopRepositoriesFacade,
|
|
179
|
+
],
|
|
180
|
+
})
|
|
181
|
+
export class AngularConnectModule {
|
|
182
|
+
static initializeApp(
|
|
183
|
+
defaultShop: Shops,
|
|
184
|
+
options: {
|
|
185
|
+
firebase?: FirebaseOptions
|
|
186
|
+
elasticSearch?: AxiosElasticSearchConfig
|
|
187
|
+
vertexConfig?: VertexSearchConfig
|
|
188
|
+
hasura: HasuraGraphQLOptions
|
|
189
|
+
backendUrl: string
|
|
190
|
+
oldCategoryStructure?: boolean
|
|
191
|
+
storageBaseUrl?: string
|
|
192
|
+
persistenceProvider?: Type<DataPersistence>
|
|
193
|
+
appCheckProvider?: AppCheckOptions['provider']
|
|
194
|
+
},
|
|
195
|
+
nameOrConfig?: string | FirebaseAppConfig,
|
|
196
|
+
): ModuleWithProviders<AngularConnectModule> {
|
|
197
|
+
return {
|
|
198
|
+
ngModule: AngularConnectModule,
|
|
199
|
+
providers: [
|
|
200
|
+
...this.buildCoreProviders(nameOrConfig, options),
|
|
201
|
+
...this.buildConditionalProviders(defaultShop, options),
|
|
202
|
+
],
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
private static buildCoreProviders(
|
|
207
|
+
nameOrConfig: string | FirebaseAppConfig,
|
|
208
|
+
options: {
|
|
209
|
+
appCheckProvider?: AppCheckOptions['provider']
|
|
210
|
+
oldCategoryStructure?: boolean
|
|
211
|
+
persistenceProvider?: Type<DataPersistence>
|
|
212
|
+
},
|
|
213
|
+
) {
|
|
214
|
+
return [
|
|
215
|
+
{ provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
|
|
216
|
+
{ provide: APP_CHECK_PROVIDER, useValue: options.appCheckProvider },
|
|
217
|
+
{
|
|
218
|
+
provide: CATEGORY_STRUCTURE,
|
|
219
|
+
useClass: this.selectCategoryStructureAdapter(options.oldCategoryStructure),
|
|
220
|
+
},
|
|
221
|
+
{ provide: PERSISTENCE_PROVIDER, useClass: options?.persistenceProvider || CookieDataPersistence },
|
|
222
|
+
]
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
private static buildConditionalProviders(
|
|
226
|
+
defaultShop: Shops,
|
|
227
|
+
options: {
|
|
228
|
+
firebase?: FirebaseOptions
|
|
229
|
+
elasticSearch?: AxiosElasticSearchConfig
|
|
230
|
+
vertexConfig?: VertexSearchConfig
|
|
231
|
+
hasura: HasuraGraphQLOptions
|
|
232
|
+
backendUrl: string
|
|
233
|
+
storageBaseUrl?: string
|
|
234
|
+
},
|
|
235
|
+
) {
|
|
236
|
+
return [
|
|
237
|
+
...this.createProviderIfExists(DEFAULT_SHOP, defaultShop),
|
|
238
|
+
...this.createProviderIfExists(FIREBASE_OPTIONS, options.firebase),
|
|
239
|
+
...this.createProviderIfExists(ES_CONFIG, options.elasticSearch),
|
|
240
|
+
...this.createProviderIfExists(VERTEX_CONFIG, options.vertexConfig),
|
|
241
|
+
...this.createProviderIfExists(HASURA_OPTIONS, options.hasura),
|
|
242
|
+
...this.createProviderIfExists(BACKEND_URL, options.backendUrl),
|
|
243
|
+
...this.createProviderIfExists(STORAGE_BASE_URL, options.storageBaseUrl),
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
private static selectCategoryStructureAdapter(oldCategoryStructure?: boolean) {
|
|
248
|
+
return isNil(oldCategoryStructure) || oldCategoryStructure
|
|
249
|
+
? OldCategoryStructureAdapter
|
|
250
|
+
: NewCategoryStructureAdapter
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
private static createProviderIfExists(token: any, value: any) {
|
|
254
|
+
return isNil(value) ? [] : [{ provide: token, useValue: value }]
|
|
255
|
+
}
|
|
256
|
+
}
|
|
@@ -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
|
+
}
|