@infrab4a/connect-angular 3.11.0-beta.1 → 4.0.0-beta.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/angular-connect.module.d.ts +5 -6
- package/angular-firebase-auth.module.d.ts +6 -4
- package/angular-firestore.module.d.ts +7 -5
- package/consts/firebase-const.d.ts +3 -0
- package/consts/index.d.ts +1 -2
- package/esm2020/angular-connect.module.mjs +49 -0
- package/esm2020/angular-elastic-search.module.mjs +38 -0
- package/esm2020/angular-firebase-auth.module.mjs +130 -0
- package/esm2020/angular-firestore.module.mjs +358 -0
- package/esm2020/angular-hasura-graphql.module.mjs +90 -0
- package/esm2020/consts/firebase-const.mjs +4 -0
- package/esm2020/consts/index.mjs +5 -0
- package/esm2020/index.mjs +6 -0
- package/esm2020/services/auth.service.mjs +37 -0
- package/esm2020/services/cart.service.mjs +143 -0
- package/esm2020/services/checkout-subscription.service.mjs +51 -0
- package/esm2020/services/checkout.service.mjs +73 -0
- package/esm2020/services/coupon.service.mjs +226 -0
- package/esm2020/services/errors/group-invalid-coupon.error.mjs +8 -0
- package/esm2020/services/errors/index.mjs +3 -0
- package/esm2020/services/errors/invalid-coupon.error.mjs +7 -0
- package/esm2020/services/home-shop.service.mjs +114 -0
- package/esm2020/services/index.mjs +8 -0
- package/esm2020/services/order.service.mjs +30 -0
- package/esm2020/types/firebase-app-config.type.mjs +2 -0
- package/esm2020/types/index.mjs +2 -0
- package/fesm2015/infrab4a-connect-angular.mjs +1336 -0
- package/fesm2015/infrab4a-connect-angular.mjs.map +1 -0
- package/fesm2020/infrab4a-connect-angular.mjs +1291 -0
- package/fesm2020/infrab4a-connect-angular.mjs.map +1 -0
- package/index.d.ts +2 -2
- package/package.json +24 -12
- package/services/auth.service.d.ts +3 -4
- package/services/cart.service.d.ts +2 -9
- package/services/coupon.service.d.ts +10 -13
- package/services/errors/group-invalid-coupon.error.d.ts +6 -0
- package/services/errors/index.d.ts +2 -0
- package/services/errors/invalid-coupon.error.d.ts +4 -0
- package/services/index.d.ts +2 -4
- package/services/order.service.d.ts +2 -2
- package/types/firebase-app-config.type.d.ts +1 -0
- package/types/index.d.ts +1 -0
- package/bundles/infrab4a-connect-angular.umd.js +0 -2649
- package/bundles/infrab4a-connect-angular.umd.js.map +0 -1
- package/consts/backend-url.const.d.ts +0 -1
- package/consts/category-structure.d.ts +0 -1
- package/esm2015/angular-connect.module.js +0 -63
- package/esm2015/angular-elastic-search.module.js +0 -34
- package/esm2015/angular-firebase-auth.module.js +0 -113
- package/esm2015/angular-firestore.module.js +0 -394
- package/esm2015/angular-hasura-graphql.module.js +0 -172
- package/esm2015/consts/backend-url.const.js +0 -2
- package/esm2015/consts/category-structure.js +0 -2
- package/esm2015/consts/index.js +0 -6
- package/esm2015/index.js +0 -6
- package/esm2015/services/auth.service.js +0 -42
- package/esm2015/services/cart.service.js +0 -281
- package/esm2015/services/catalog/adapters/category-structure.adapter.js +0 -2
- package/esm2015/services/catalog/adapters/index.js +0 -4
- package/esm2015/services/catalog/adapters/new-category-structure.adapter.js +0 -51
- package/esm2015/services/catalog/adapters/old-category-structure.adapter.js +0 -27
- package/esm2015/services/catalog/catalog.service.js +0 -96
- package/esm2015/services/catalog/category.service.js +0 -56
- package/esm2015/services/catalog/enums/index.js +0 -2
- package/esm2015/services/catalog/enums/product-sorts.enum.js +0 -11
- package/esm2015/services/catalog/index.js +0 -6
- package/esm2015/services/catalog/models/category-with-tree.model.js +0 -10
- package/esm2015/services/catalog/models/index.js +0 -2
- package/esm2015/services/catalog/types/index.js +0 -2
- package/esm2015/services/catalog/types/product-sort.type.js +0 -2
- package/esm2015/services/checkout-subscription.service.js +0 -53
- package/esm2015/services/checkout.service.js +0 -70
- package/esm2015/services/coupon.service.js +0 -240
- package/esm2015/services/home-shop.service.js +0 -116
- package/esm2015/services/index.js +0 -10
- package/esm2015/services/order.service.js +0 -32
- package/esm2015/services/shipping.service.js +0 -98
- package/esm2015/services/types/shipping-methods.type.js +0 -2
- package/fesm2015/infrab4a-connect-angular.js +0 -1868
- package/fesm2015/infrab4a-connect-angular.js.map +0 -1
- package/infrab4a-connect-angular.d.ts +0 -5
- 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 -14
- package/services/catalog/adapters/old-category-structure.adapter.d.ts +0 -10
- package/services/catalog/catalog.service.d.ts +0 -54
- package/services/catalog/category.service.d.ts +0 -15
- 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 -5
- 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/shipping.service.d.ts +0 -19
- package/services/types/shipping-methods.type.d.ts +0 -12
- /package/{esm2015/consts/default-shop.const.js → esm2020/consts/default-shop.const.mjs} +0 -0
- /package/{esm2015/consts/es-config.const.js → esm2020/consts/es-config.const.mjs} +0 -0
- /package/{esm2015/consts/hasura-options.const.js → esm2020/consts/hasura-options.const.mjs} +0 -0
- /package/{esm2015/infrab4a-connect-angular.js → esm2020/infrab4a-connect-angular.mjs} +0 -0
- /package/{esm2015/services/types/index.js → esm2020/services/types/index.mjs} +0 -0
- /package/{esm2015/services/types/required-checkout-data.type.js → esm2020/services/types/required-checkout-data.type.mjs} +0 -0
- /package/{esm2015/services/types/required-checkout-subscription-data.type.js → esm2020/services/types/required-checkout-subscription-data.type.mjs} +0 -0
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CategoryCollectionChildrenHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository, CategoryHasuraGraphQLRepository, FilterHasuraGraphQLRepository, FilterOptionHasuraGraphQLRepository, ProductHasuraGraphQLRepository, VariantHasuraGraphQLRepository, } from '@infrab4a/connect';
|
|
3
|
-
import { HASURA_OPTIONS } from './consts';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class AngularHasuraGraphQLModule {
|
|
6
|
-
static initializeApp(options) {
|
|
7
|
-
return {
|
|
8
|
-
ngModule: AngularHasuraGraphQLModule,
|
|
9
|
-
providers: [{ provide: HASURA_OPTIONS, useValue: options }],
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
AngularHasuraGraphQLModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularHasuraGraphQLModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14
|
-
AngularHasuraGraphQLModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularHasuraGraphQLModule });
|
|
15
|
-
AngularHasuraGraphQLModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularHasuraGraphQLModule, providers: [
|
|
16
|
-
{
|
|
17
|
-
provide: 'CategoryRepository',
|
|
18
|
-
useExisting: CategoryHasuraGraphQLRepository,
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
provide: CategoryHasuraGraphQLRepository,
|
|
22
|
-
useFactory: (options, productRepository, categoryFilterRepository) => {
|
|
23
|
-
return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository, categoryFilterRepository);
|
|
24
|
-
},
|
|
25
|
-
deps: [HASURA_OPTIONS, ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
provide: 'ProductRepository',
|
|
29
|
-
useExisting: ProductHasuraGraphQLRepository,
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
provide: ProductHasuraGraphQLRepository,
|
|
33
|
-
useFactory: (options) => {
|
|
34
|
-
return new ProductHasuraGraphQLRepository(options.endpoint, options.credentials);
|
|
35
|
-
},
|
|
36
|
-
deps: [HASURA_OPTIONS],
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
provide: 'VariantRepository',
|
|
40
|
-
useExisting: VariantHasuraGraphQLRepository,
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
provide: VariantHasuraGraphQLRepository,
|
|
44
|
-
useFactory: (options) => {
|
|
45
|
-
return new VariantHasuraGraphQLRepository(options.endpoint, options.credentials);
|
|
46
|
-
},
|
|
47
|
-
deps: [HASURA_OPTIONS],
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
provide: 'CategoryFilterRepository',
|
|
51
|
-
useExisting: CategoryFilterHasuraGraphQLRepository,
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
provide: CategoryFilterHasuraGraphQLRepository,
|
|
55
|
-
useFactory: (options) => {
|
|
56
|
-
return new CategoryFilterHasuraGraphQLRepository(options.endpoint, options.credentials);
|
|
57
|
-
},
|
|
58
|
-
deps: [HASURA_OPTIONS],
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
provide: 'FilterOptionRepository',
|
|
62
|
-
useExisting: FilterOptionHasuraGraphQLRepository,
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
provide: FilterOptionHasuraGraphQLRepository,
|
|
66
|
-
useFactory: (options) => {
|
|
67
|
-
return new FilterOptionHasuraGraphQLRepository(options.endpoint, options.credentials);
|
|
68
|
-
},
|
|
69
|
-
deps: [HASURA_OPTIONS],
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
provide: 'FilterRepository',
|
|
73
|
-
useExisting: FilterHasuraGraphQLRepository,
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
provide: FilterHasuraGraphQLRepository,
|
|
77
|
-
useFactory: (options, filterOptionRepository, categoryFilterRepository) => {
|
|
78
|
-
return new FilterHasuraGraphQLRepository(options.endpoint, options.credentials, filterOptionRepository, categoryFilterRepository);
|
|
79
|
-
},
|
|
80
|
-
deps: [HASURA_OPTIONS, FilterOptionHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
provide: CategoryCollectionChildrenHasuraGraphQLRepository,
|
|
84
|
-
useFactory: (options) => new CategoryCollectionChildrenHasuraGraphQLRepository(options.endpoint, options.credentials),
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
provide: 'CategoryCollectionChildrenRepository',
|
|
88
|
-
useExisting: CategoryCollectionChildrenHasuraGraphQLRepository,
|
|
89
|
-
},
|
|
90
|
-
] });
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AngularHasuraGraphQLModule, decorators: [{
|
|
92
|
-
type: NgModule,
|
|
93
|
-
args: [{
|
|
94
|
-
providers: [
|
|
95
|
-
{
|
|
96
|
-
provide: 'CategoryRepository',
|
|
97
|
-
useExisting: CategoryHasuraGraphQLRepository,
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
provide: CategoryHasuraGraphQLRepository,
|
|
101
|
-
useFactory: (options, productRepository, categoryFilterRepository) => {
|
|
102
|
-
return new CategoryHasuraGraphQLRepository(options.endpoint, options.credentials, productRepository, categoryFilterRepository);
|
|
103
|
-
},
|
|
104
|
-
deps: [HASURA_OPTIONS, ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
provide: 'ProductRepository',
|
|
108
|
-
useExisting: ProductHasuraGraphQLRepository,
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
provide: ProductHasuraGraphQLRepository,
|
|
112
|
-
useFactory: (options) => {
|
|
113
|
-
return new ProductHasuraGraphQLRepository(options.endpoint, options.credentials);
|
|
114
|
-
},
|
|
115
|
-
deps: [HASURA_OPTIONS],
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
provide: 'VariantRepository',
|
|
119
|
-
useExisting: VariantHasuraGraphQLRepository,
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
provide: VariantHasuraGraphQLRepository,
|
|
123
|
-
useFactory: (options) => {
|
|
124
|
-
return new VariantHasuraGraphQLRepository(options.endpoint, options.credentials);
|
|
125
|
-
},
|
|
126
|
-
deps: [HASURA_OPTIONS],
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
provide: 'CategoryFilterRepository',
|
|
130
|
-
useExisting: CategoryFilterHasuraGraphQLRepository,
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
provide: CategoryFilterHasuraGraphQLRepository,
|
|
134
|
-
useFactory: (options) => {
|
|
135
|
-
return new CategoryFilterHasuraGraphQLRepository(options.endpoint, options.credentials);
|
|
136
|
-
},
|
|
137
|
-
deps: [HASURA_OPTIONS],
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
provide: 'FilterOptionRepository',
|
|
141
|
-
useExisting: FilterOptionHasuraGraphQLRepository,
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
provide: FilterOptionHasuraGraphQLRepository,
|
|
145
|
-
useFactory: (options) => {
|
|
146
|
-
return new FilterOptionHasuraGraphQLRepository(options.endpoint, options.credentials);
|
|
147
|
-
},
|
|
148
|
-
deps: [HASURA_OPTIONS],
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
provide: 'FilterRepository',
|
|
152
|
-
useExisting: FilterHasuraGraphQLRepository,
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
provide: FilterHasuraGraphQLRepository,
|
|
156
|
-
useFactory: (options, filterOptionRepository, categoryFilterRepository) => {
|
|
157
|
-
return new FilterHasuraGraphQLRepository(options.endpoint, options.credentials, filterOptionRepository, categoryFilterRepository);
|
|
158
|
-
},
|
|
159
|
-
deps: [HASURA_OPTIONS, FilterOptionHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
provide: CategoryCollectionChildrenHasuraGraphQLRepository,
|
|
163
|
-
useFactory: (options) => new CategoryCollectionChildrenHasuraGraphQLRepository(options.endpoint, options.credentials),
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
provide: 'CategoryCollectionChildrenRepository',
|
|
167
|
-
useExisting: CategoryCollectionChildrenHasuraGraphQLRepository,
|
|
168
|
-
},
|
|
169
|
-
],
|
|
170
|
-
}]
|
|
171
|
-
}] });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1oYXN1cmEtZ3JhcGhxbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2FuZ3VsYXItaGFzdXJhLWdyYXBocWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzdELE9BQU8sRUFDTCxpREFBaUQsRUFDakQscUNBQXFDLEVBRXJDLCtCQUErQixFQUUvQiw2QkFBNkIsRUFDN0IsbUNBQW1DLEVBSW5DLDhCQUE4QixFQUU5Qiw4QkFBOEIsR0FFL0IsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBOztBQXVHekMsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BR3BCO1FBQ0MsT0FBTztZQUNMLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztTQUM1RCxDQUFBO0lBQ0gsQ0FBQzs7d0hBVFUsMEJBQTBCO3lIQUExQiwwQkFBMEI7eUhBQTFCLDBCQUEwQixhQWxHMUI7UUFDVDtZQUNFLE9BQU8sRUFBRSxvQkFBb0I7WUFDN0IsV0FBVyxFQUFFLCtCQUErQjtTQUM3QztRQUNEO1lBQ0UsT0FBTyxFQUFFLCtCQUErQjtZQUN4QyxVQUFVLEVBQUUsQ0FDVixPQUE2QixFQUM3QixpQkFBaUQsRUFDakQsd0JBQStELEVBQzNDLEVBQUU7Z0JBQ3RCLE9BQU8sSUFBSSwrQkFBK0IsQ0FDeEMsT0FBTyxDQUFDLFFBQVEsRUFDaEIsT0FBTyxDQUFDLFdBQVcsRUFDbkIsaUJBQWlCLEVBQ2pCLHdCQUF3QixDQUN6QixDQUFBO1lBQ0gsQ0FBQztZQUNELElBQUksRUFBRSxDQUFDLGNBQWMs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QUFtQzt5QkFDakQ7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLG1DQUFtQzs0QkFDNUMsVUFBVSxFQUFFLENBQUMsT0FBNkIsRUFBMEIsRUFBRTtnQ0FDcEUsT0FBTyxJQUFJLG1DQUFtQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBOzRCQUN2RixDQUFDOzRCQUNELElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQzt5QkFDdkI7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsV0FBVyxFQUFFLDZCQUE2Qjt5QkFDM0M7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLDZCQUE2Qjs0QkFDdEMsVUFBVSxFQUFFLENBQ1YsT0FBNkIsRUFDN0Isc0JBQTJELEVBQzNELHdCQUErRCxFQUM3QyxFQUFFO2dDQUNwQixPQUFPLElBQUksNkJBQTZCLENBQ3RDLE9BQU8sQ0FBQyxRQUFRLEVBQ2hCLE9BQU8sQ0FBQyxXQUFXLEVBQ25CLHNCQUFzQixFQUN0Qix3QkFBd0IsQ0FDekIsQ0FBQTs0QkFDSCxDQUFDOzRCQUNELElBQUksRUFBRSxDQUFDLGNBQWMsRUFBRSxtQ0FBbUMsRUFBRSxxQ0FBcUMsQ0FBQzt5QkFDbkc7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGlEQUFpRDs0QkFDMUQsVUFBVSxFQUFFLENBQUMsT0FBNkIsRUFBcUQsRUFBRSxDQUMvRixJQUFJLGlEQUFpRCxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQzt5QkFDL0Y7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHNDQUFzQzs0QkFDL0MsV0FBVyxFQUFFLGlEQUFpRDt5QkFDL0Q7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDYXRlZ29yeUNvbGxlY3Rpb25DaGlsZHJlbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICBDYXRlZ29yeUZpbHRlckhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICBDYXRlZ29yeUZpbHRlclJlcG9zaXRvcnksXG4gIENhdGVnb3J5SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgRmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gIEZpbHRlck9wdGlvbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICBGaWx0ZXJPcHRpb25SZXBvc2l0b3J5LFxuICBGaWx0ZXJSZXBvc2l0b3J5LFxuICBIYXN1cmFHcmFwaFFMQXV0aE9wdGlvbnMsXG4gIFByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgUHJvZHVjdFJlcG9zaXRvcnksXG4gIFZhcmlhbnRIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgVmFyaWFudFJlcG9zaXRvcnksXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuaW1wb3J0IHsgSEFTVVJBX09QVElPTlMgfSBmcm9tICcuL2NvbnN0cydcblxuZXhwb3J0IHR5cGUgSGFzdXJhR3JhcGhRTE9wdGlvbnMgPSB7IGVuZHBvaW50OiBzdHJpbmc7IGNyZWRlbnRpYWxzOiBIYXN1cmFHcmFwaFFMQXV0aE9wdGlvbnMgfVxuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ2F0ZWdvcnlSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUV4aXN0aW5nOiBDYXRlZ29yeUhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQ2F0ZWdvcnlIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgb3B0aW9uczogSGFzdXJhR3JhcGhRTE9wdGlvbnMsXG4gICAgICAgIHByb2R1Y3RSZXBvc2l0b3J5OiBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICAgIGNhdGVnb3J5RmlsdGVyUmVwb3NpdG9yeTogQ2F0ZWdvcnlGaWx0ZXJIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgICk6IENhdGVnb3J5UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2F0ZWdvcnlIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeShcbiAgICAgICAgICBvcHRpb25zLmVuZHBvaW50LFxuICAgICAgICAgIG9wdGlvbnMuY3JlZGVudGlhbHMsXG4gICAgICAgICAgcHJvZHVjdFJlcG9zaXRvcnksXG4gICAgICAgICAgY2F0ZWdvcnlGaWx0ZXJSZXBvc2l0b3J5LFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgZGVwczogW0hBU1VSQV9PUFRJT05TLCBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksIENhdGVnb3J5RmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnldLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1Byb2R1Y3RSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUV4aXN0aW5nOiBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogSGFzdXJhR3JhcGhRTE9wdGlvbnMpOiBQcm9kdWN0UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvZHVjdEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5KG9wdGlvbnMuZW5kcG9pbnQsIG9wdGlvbnMuY3JlZGVudGlhbHMpXG4gICAgICB9LFxuICAgICAgZGVwczogW0hBU1VSQV9PUFRJT05TXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdWYXJpYW50UmVwb3NpdG9yeScsXG4gICAgICB1c2VFeGlzdGluZzogVmFyaWFudEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogVmFyaWFudEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEhhc3VyYUdyYXBoUUxPcHRpb25zKTogVmFyaWFudFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFZhcmlhbnRIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeShvcHRpb25zLmVuZHBvaW50LCBvcHRpb25zLmNyZWRlbnRpYWxzKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtIQVNVUkFfT1BUSU9OU10sXG4gICAgfSxcblxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdDYXRlZ29yeUZpbHRlclJlcG9zaXRvcnknLFxuICAgICAgdXNlRXhpc3Rpbmc6IENhdGVnb3J5RmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBDYXRlZ29yeUZpbHRlckhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEhhc3VyYUdyYXBoUUxPcHRpb25zKTogQ2F0ZWdvcnlGaWx0ZXJSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXRlZ29yeUZpbHRlckhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5KG9wdGlvbnMuZW5kcG9pbnQsIG9wdGlvbnMuY3JlZGVudGlhbHMpXG4gICAgICB9LFxuICAgICAgZGVwczogW0hBU1VSQV9PUFRJT05TXSxcbiAgICB9LFxuXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0ZpbHRlck9wdGlvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRXhpc3Rpbmc6IEZpbHRlck9wdGlvbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogRmlsdGVyT3B0aW9uSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogSGFzdXJhR3JhcGhRTE9wdGlvbnMpOiBGaWx0ZXJPcHRpb25SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXJPcHRpb25IYXN1cmFHcmFwaFFMUmVwb3NpdG9yeShvcHRpb25zLmVuZHBvaW50LCBvcHRpb25zLmNyZWRlbnRpYWxzKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFtIQVNVUkFfT1BUSU9OU10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnRmlsdGVyUmVwb3NpdG9yeScsXG4gICAgICB1c2VFeGlzdGluZzogRmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBGaWx0ZXJIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgb3B0aW9uczogSGFzdXJhR3JhcGhRTE9wdGlvbnMsXG4gICAgICAgIGZpbHRlck9wdGlvblJlcG9zaXRvcnk6IEZpbHRlck9wdGlvbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LFxuICAgICAgICBjYXRlZ29yeUZpbHRlclJlcG9zaXRvcnk6IENhdGVnb3J5RmlsdGVySGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICApOiBGaWx0ZXJSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXJIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeShcbiAgICAgICAgICBvcHRpb25zLmVuZHBvaW50LFxuICAgICAgICAgIG9wdGlvbnMuY3JlZGVudGlhbHMsXG4gICAgICAgICAgZmlsdGVyT3B0aW9uUmVwb3NpdG9yeSxcbiAgICAgICAgICBjYXRlZ29yeUZpbHRlclJlcG9zaXRvcnksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbSEFTVVJBX09QVElPTlMsIEZpbHRlck9wdGlvbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5LCBDYXRlZ29yeUZpbHRlckhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5XSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IENhdGVnb3J5Q29sbGVjdGlvbkNoaWxkcmVuSGFzdXJhR3JhcGhRTFJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogSGFzdXJhR3JhcGhRTE9wdGlvbnMpOiBDYXRlZ29yeUNvbGxlY3Rpb25DaGlsZHJlbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5ID0+XG4gICAgICAgIG5ldyBDYXRlZ29yeUNvbGxlY3Rpb25DaGlsZHJlbkhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5KG9wdGlvbnMuZW5kcG9pbnQsIG9wdGlvbnMuY3JlZGVudGlhbHMpLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NhdGVnb3J5Q29sbGVjdGlvbkNoaWxkcmVuUmVwb3NpdG9yeScsXG4gICAgICB1c2VFeGlzdGluZzogQ2F0ZWdvcnlDb2xsZWN0aW9uQ2hpbGRyZW5IYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFySGFzdXJhR3JhcGhRTE1vZHVsZSB7XG4gIHN0YXRpYyBpbml0aWFsaXplQXBwKG9wdGlvbnM6IHtcbiAgICBlbmRwb2ludDogc3RyaW5nXG4gICAgY3JlZGVudGlhbHM6IEhhc3VyYUdyYXBoUUxBdXRoT3B0aW9uc1xuICB9KTogTW9kdWxlV2l0aFByb3ZpZGVyczxBbmd1bGFySGFzdXJhR3JhcGhRTE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQW5ndWxhckhhc3VyYUdyYXBoUUxNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEhBU1VSQV9PUFRJT05TLCB1c2VWYWx1ZTogb3B0aW9ucyB9XSxcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const BACKEND_URL = 'BACKEND_URL';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC11cmwuY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2NvbnN0cy9iYWNrZW5kLXVybC5jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEJBQ0tFTkRfVVJMID0gJ0JBQ0tFTkRfVVJMJyJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const CATEGORY_STRUCTURE = 'CATEGORY_STRUCTURE';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktc3RydWN0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9jb25zdHMvY2F0ZWdvcnktc3RydWN0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IENBVEVHT1JZX1NUUlVDVFVSRSA9ICdDQVRFR09SWV9TVFJVQ1RVUkUnXG4iXX0=
|
package/esm2015/consts/index.js
DELETED
|
@@ -1,6 +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 './hasura-options.const';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2NvbnN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsd0JBQXdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JhY2tlbmQtdXJsLmNvbnN0J1xuZXhwb3J0ICogZnJvbSAnLi9jYXRlZ29yeS1zdHJ1Y3R1cmUnXG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtc2hvcC5jb25zdCdcbmV4cG9ydCAqIGZyb20gJy4vZXMtY29uZmlnLmNvbnN0J1xuZXhwb3J0ICogZnJvbSAnLi9oYXN1cmEtb3B0aW9ucy5jb25zdCdcbiJdfQ==
|
package/esm2015/index.js
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 './services';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYyxnQ0FBZ0MsQ0FBQTtBQUM5QyxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsaUNBQWlDLENBQUE7QUFDL0MsY0FBYyxZQUFZLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FuZ3VsYXItY29ubmVjdC5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2FuZ3VsYXItZmlyZWJhc2UtYXV0aC5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2FuZ3VsYXItZmlyZXN0b3JlLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vYW5ndWxhci1oYXN1cmEtZ3JhcGhxbC5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzJ1xuIl19
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { AngularFireAuth } from '@angular/fire/auth';
|
|
3
|
-
import { combineLatest, from, of } from 'rxjs';
|
|
4
|
-
import { catchError, map, mergeMap } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/fire/auth";
|
|
7
|
-
export class AuthService {
|
|
8
|
-
constructor(angularFireAuth, userRepository) {
|
|
9
|
-
this.angularFireAuth = angularFireAuth;
|
|
10
|
-
this.userRepository = userRepository;
|
|
11
|
-
}
|
|
12
|
-
getAuthstate() {
|
|
13
|
-
const observables = [
|
|
14
|
-
this.angularFireAuth.authState.pipe(catchError(() => of(null))),
|
|
15
|
-
this.getUser().pipe(catchError(() => of(null))),
|
|
16
|
-
];
|
|
17
|
-
return combineLatest(observables).pipe(map(([fireUser, user]) => {
|
|
18
|
-
return {
|
|
19
|
-
user,
|
|
20
|
-
isAnonymous: fireUser === null || fireUser === void 0 ? void 0 : fireUser.isAnonymous,
|
|
21
|
-
};
|
|
22
|
-
}));
|
|
23
|
-
}
|
|
24
|
-
getUser() {
|
|
25
|
-
return this.getFireUser().pipe(map((user) => user === null || user === void 0 ? void 0 : user.uid), mergeMap((id) => (id ? from(this.userRepository.get({ id })).pipe(catchError(() => of(null))) : of(null))));
|
|
26
|
-
}
|
|
27
|
-
getTokenId() {
|
|
28
|
-
return this.angularFireAuth.idToken;
|
|
29
|
-
}
|
|
30
|
-
getFireUser() {
|
|
31
|
-
return this.angularFireAuth.user.pipe(catchError(() => of(null)));
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AuthService, deps: [{ token: i1.AngularFireAuth }, { token: 'UserRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
35
|
-
AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AuthService });
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: AuthService, decorators: [{
|
|
37
|
-
type: Injectable
|
|
38
|
-
}], ctorParameters: function () { return [{ type: i1.AngularFireAuth }, { type: undefined, decorators: [{
|
|
39
|
-
type: Inject,
|
|
40
|
-
args: ['UserRepository']
|
|
41
|
-
}] }]; } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBR3BELE9BQU8sRUFBYyxhQUFhLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTs7O0FBRzFELE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQ21CLGVBQWdDLEVBQ04sY0FBOEI7UUFEeEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ04sbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQ3hFLENBQUM7SUFFSixZQUFZO1FBQ1YsTUFBTSxXQUFXLEdBQWtEO1lBQ2pFLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDaEQsQ0FBQTtRQUVELE9BQU8sYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDcEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUN2QixPQUFPO2dCQUNMLElBQUk7Z0JBQ0osV0FBVyxFQUFFLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxXQUFXO2FBQ0ssQ0FBQTtRQUMzQyxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLEdBQUcsQ0FBQyxFQUN4QixRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUMzRyxDQUFBO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFBO0lBQ3JDLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbkUsQ0FBQzs7eUdBbkNVLFdBQVcsaURBR1osZ0JBQWdCOzZHQUhmLFdBQVc7NEZBQVgsV0FBVztrQkFEdkIsVUFBVTs7MEJBSU4sTUFBTTsyQkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQW5ndWxhckZpcmVBdXRoIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hdXRoJ1xuaW1wb3J0IHsgVXNlciwgVXNlclJlcG9zaXRvcnkgfSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcbmltcG9ydCBmaXJlYmFzZSBmcm9tICdmaXJlYmFzZS9hcHAnXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBmcm9tLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYW5ndWxhckZpcmVBdXRoOiBBbmd1bGFyRmlyZUF1dGgsXG4gICAgQEluamVjdCgnVXNlclJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHVzZXJSZXBvc2l0b3J5OiBVc2VyUmVwb3NpdG9yeSxcbiAgKSB7fVxuXG4gIGdldEF1dGhzdGF0ZSgpOiBPYnNlcnZhYmxlPHsgdXNlcjogVXNlcjsgaXNBbm9ueW1vdXM6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IG9ic2VydmFibGVzOiBbT2JzZXJ2YWJsZTxmaXJlYmFzZS5Vc2VyPiwgT2JzZXJ2YWJsZTxVc2VyPl0gPSBbXG4gICAgICB0aGlzLmFuZ3VsYXJGaXJlQXV0aC5hdXRoU3RhdGUucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKG51bGwpKSksXG4gICAgICB0aGlzLmdldFVzZXIoKS5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpKSxcbiAgICBdXG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChvYnNlcnZhYmxlcykucGlwZShcbiAgICAgIG1hcCgoW2ZpcmVVc2VyLCB1c2VyXSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgaXNBbm9ueW1vdXM6IGZpcmVVc2VyPy5pc0Fub255bW91cyxcbiAgICAgICAgfSBhcyB7IHVzZXI6IFVzZXI7IGlzQW5vbnltb3VzOiBib29sZWFuIH1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGdldFVzZXIoKTogT2JzZXJ2YWJsZTxVc2VyPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmlyZVVzZXIoKS5waXBlKFxuICAgICAgbWFwKCh1c2VyKSA9PiB1c2VyPy51aWQpLFxuICAgICAgbWVyZ2VNYXAoKGlkKSA9PiAoaWQgPyBmcm9tKHRoaXMudXNlclJlcG9zaXRvcnkuZ2V0KHsgaWQgfSkpLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpIDogb2YobnVsbCkpKSxcbiAgICApXG4gIH1cblxuICBnZXRUb2tlbklkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuYW5ndWxhckZpcmVBdXRoLmlkVG9rZW5cbiAgfVxuXG4gIGdldEZpcmVVc2VyKCk6IE9ic2VydmFibGU8ZmlyZWJhc2UuVXNlcj4ge1xuICAgIHJldHVybiB0aGlzLmFuZ3VsYXJGaXJlQXV0aC51c2VyLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Inject, Injectable } from '@angular/core';
|
|
3
|
-
import { Buy2WinFirestoreRepository, Checkout, isNil, LineItem, NotFoundError, RoundProductPricesHelper, Shops, Where, } from '@infrab4a/connect';
|
|
4
|
-
import { from, iif, of, Subject } from 'rxjs';
|
|
5
|
-
import { catchError, concatMap, map, mergeMap, tap } from 'rxjs/operators';
|
|
6
|
-
import { DEFAULT_SHOP } from '../consts';
|
|
7
|
-
import { AuthService } from './auth.service';
|
|
8
|
-
import { CheckoutService } from './checkout.service';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "./auth.service";
|
|
11
|
-
import * as i2 from "./checkout.service";
|
|
12
|
-
import * as i3 from "@infrab4a/connect";
|
|
13
|
-
export class CartService {
|
|
14
|
-
constructor(authService, checkoutService, defaultShop, productRepository, categoryRepository, variantRepository, buy2WinRepository) {
|
|
15
|
-
this.authService = authService;
|
|
16
|
-
this.checkoutService = checkoutService;
|
|
17
|
-
this.defaultShop = defaultShop;
|
|
18
|
-
this.productRepository = productRepository;
|
|
19
|
-
this.categoryRepository = categoryRepository;
|
|
20
|
-
this.variantRepository = variantRepository;
|
|
21
|
-
this.buy2WinRepository = buy2WinRepository;
|
|
22
|
-
this.cartSubject = new Subject();
|
|
23
|
-
this.updateLineItemInCart = (lineItem, quantity, checkout) => (isNil(checkout) ? this.checkoutService.getCheckout() : of(checkout)).pipe(concatMap((checkoutLoaded) => {
|
|
24
|
-
var _a;
|
|
25
|
-
const items = [];
|
|
26
|
-
const index = (_a = checkoutLoaded.lineItems) === null || _a === void 0 ? void 0 : _a.map((checkoutItem) => checkoutItem.id).indexOf(lineItem.id);
|
|
27
|
-
if (index > -1) {
|
|
28
|
-
checkoutLoaded.lineItems[index].quantity += quantity;
|
|
29
|
-
checkoutLoaded.lineItems[index].pricePaid = lineItem.pricePaid;
|
|
30
|
-
}
|
|
31
|
-
else
|
|
32
|
-
checkoutLoaded.lineItems = items.concat(checkoutLoaded.lineItems ? checkoutLoaded.lineItems.concat([lineItem]) : [lineItem]);
|
|
33
|
-
return this.checkoutService
|
|
34
|
-
.updateCheckoutLineItems(checkoutLoaded)
|
|
35
|
-
.pipe(map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)));
|
|
36
|
-
}));
|
|
37
|
-
this.generateCartObject = (items) => items
|
|
38
|
-
? items.reduce((cart, item) => {
|
|
39
|
-
var _a;
|
|
40
|
-
return (Object.assign(Object.assign({}, cart), { [item.id]: LineItem.toInstance(Object.assign(Object.assign({}, (cart[item.id] || item)), { quantity: (((_a = cart[item.id]) === null || _a === void 0 ? void 0 : _a.quantity) || 0) + (item.quantity ? item.quantity : 1) })) }));
|
|
41
|
-
}, {})
|
|
42
|
-
: [];
|
|
43
|
-
this.buildLineItem = ({ checkout, item, quantity, }) => __awaiter(this, void 0, void 0, function* () {
|
|
44
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
45
|
-
const product = yield this.getProductData(item.id);
|
|
46
|
-
item.quantity = (item === null || item === void 0 ? void 0 : item.quantity) || ((_b = (_a = checkout === null || checkout === void 0 ? void 0 : checkout.lineItems) === null || _a === void 0 ? void 0 : _a.find((lineItem) => lineItem.id === item.id)) === null || _b === void 0 ? void 0 : _b.quantity) || 0;
|
|
47
|
-
if (this.checkMaxStock(item, quantity || 0))
|
|
48
|
-
throw new Error('Desculpe! Temos apenas ' + ((_c = item.stock) === null || _c === void 0 ? void 0 : _c.quantity) + ' em estoque.');
|
|
49
|
-
const image = item.image || ((_d = item.images) === null || _d === void 0 ? void 0 : _d.shift());
|
|
50
|
-
const { id, name, EAN, slug, stock, price, weight, sku, type } = item;
|
|
51
|
-
const isGift = item.isGift || null;
|
|
52
|
-
const pricePaid = this.getProductPrice({
|
|
53
|
-
product: item,
|
|
54
|
-
shop: checkout.shop || this.defaultShop,
|
|
55
|
-
isSubscriber: (_e = checkout.user) === null || _e === void 0 ? void 0 : _e.isSubscriber,
|
|
56
|
-
});
|
|
57
|
-
RoundProductPricesHelper.roundProductPrices(item);
|
|
58
|
-
return {
|
|
59
|
-
checkout,
|
|
60
|
-
lineItem: LineItem.toInstance({
|
|
61
|
-
id,
|
|
62
|
-
name: name !== null && name !== void 0 ? name : product.name,
|
|
63
|
-
EAN: EAN !== null && EAN !== void 0 ? EAN : product.EAN,
|
|
64
|
-
brand: product.brand,
|
|
65
|
-
slug: slug !== null && slug !== void 0 ? slug : product.slug,
|
|
66
|
-
sku: sku !== null && sku !== void 0 ? sku : product.sku,
|
|
67
|
-
stock,
|
|
68
|
-
price: this.roundPrice(price),
|
|
69
|
-
image,
|
|
70
|
-
weight: weight !== null && weight !== void 0 ? weight : product.weight,
|
|
71
|
-
quantity: (item.quantity || 0) + (quantity || 0),
|
|
72
|
-
pricePaid,
|
|
73
|
-
categories: (_f = product.categories) !== null && _f !== void 0 ? _f : [],
|
|
74
|
-
isGift: isGift !== null && isGift !== void 0 ? isGift : null,
|
|
75
|
-
costPrice: (_g = product.costPrice) !== null && _g !== void 0 ? _g : 0,
|
|
76
|
-
type,
|
|
77
|
-
}),
|
|
78
|
-
};
|
|
79
|
-
});
|
|
80
|
-
this.getProductPrice = ({ product, isSubscriber, }) => {
|
|
81
|
-
const info = product.price;
|
|
82
|
-
if (product.isGift)
|
|
83
|
-
return 0;
|
|
84
|
-
return isSubscriber && info.subscriberPrice > 0
|
|
85
|
-
? Number(info.subscriberPrice.toFixed(2))
|
|
86
|
-
: Number(info.price.toFixed(2));
|
|
87
|
-
};
|
|
88
|
-
this.checkMaxStock = (item, quantity) => {
|
|
89
|
-
var _a;
|
|
90
|
-
const maxStock = ((_a = item.stock) === null || _a === void 0 ? void 0 : _a.quantity) || 0;
|
|
91
|
-
const currentItemAmount = item.quantity || 0;
|
|
92
|
-
return currentItemAmount + quantity > maxStock;
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
addItem(item, quantity = 1) {
|
|
96
|
-
return from(this.checkoutService.getCheckout()).pipe(concatMap((checkout) => __awaiter(this, void 0, void 0, function* () { return yield this.buildLineItem({ checkout, item, quantity: quantity || 1 }); })), mergeMap(({ checkout, lineItem }) => this.updateLineItemInCart(lineItem, quantity || 1, checkout)), tap((cart) => this.cartSubject.next(cart)));
|
|
97
|
-
}
|
|
98
|
-
decreaseItem(item) {
|
|
99
|
-
return this.checkoutService.getCheckout().pipe(map((checkout) => {
|
|
100
|
-
var _a;
|
|
101
|
-
const checkoutItem = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.find((lineItem) => lineItem.id === item.id);
|
|
102
|
-
if (!isNil(checkoutItem))
|
|
103
|
-
checkoutItem.quantity -= checkoutItem.quantity > 1 ? 1 : 0;
|
|
104
|
-
return checkout;
|
|
105
|
-
}), concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
|
|
106
|
-
}
|
|
107
|
-
getCart(checkout) {
|
|
108
|
-
this.buildCartFromCheckout(checkout).subscribe((cart) => this.cartSubject.next(cart));
|
|
109
|
-
return this.cartSubject;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* @deprecated The method should not be used
|
|
113
|
-
*/
|
|
114
|
-
getVariantPriceDiscount(item) {
|
|
115
|
-
return this.authService.getUser().pipe(concatMap((user) => iif(() => user.isSubscriber && !!item.price.subscriberPrice, of(item.price.subscriberPrice), of(item.price.price))), catchError(() => of(item.price.price)));
|
|
116
|
-
}
|
|
117
|
-
removeItem(item) {
|
|
118
|
-
return this.checkoutService.getCheckout().pipe(map((checkout) => {
|
|
119
|
-
const index = checkout.lineItems.findIndex((lineItem) => lineItem.id === item.id);
|
|
120
|
-
if (index >= 0)
|
|
121
|
-
checkout.lineItems.splice(index, 1);
|
|
122
|
-
return checkout;
|
|
123
|
-
}), concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
|
|
124
|
-
}
|
|
125
|
-
updateUserCart(user) {
|
|
126
|
-
return this.checkoutService.getCheckout().pipe(concatMap((checkout) => this.checkoutService.updateCheckoutUser(Checkout.toInstance(Object.assign(Object.assign({}, checkout.toPlain()), { user })))), concatMap((checkout) => __awaiter(this, void 0, void 0, function* () {
|
|
127
|
-
var _a, _b;
|
|
128
|
-
return this.checkoutService
|
|
129
|
-
.updateCheckoutLineItems(Checkout.toInstance(Object.assign(Object.assign({}, checkout.toPlain()), { lineItems: ((_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.length)
|
|
130
|
-
? yield Promise.all((_b = checkout.lineItems) === null || _b === void 0 ? void 0 : _b.map((item) => __awaiter(this, void 0, void 0, function* () { return (yield this.buildLineItem({ checkout, item })).lineItem; })))
|
|
131
|
-
: [] })))
|
|
132
|
-
.toPromise();
|
|
133
|
-
})), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
|
|
134
|
-
}
|
|
135
|
-
clearCart() {
|
|
136
|
-
return this.checkoutService.getCheckout().pipe(map((checkout) => {
|
|
137
|
-
this.checkoutService.clearCheckoutFromSession();
|
|
138
|
-
return checkout;
|
|
139
|
-
}), concatMap((oldCheckout) => this.buildCartFromCheckout(oldCheckout)), tap((cart) => this.cartSubject.next(cart)));
|
|
140
|
-
}
|
|
141
|
-
buildCartFromCheckout(checkoutData) {
|
|
142
|
-
return this.checkoutService.getCheckout(checkoutData).pipe(map((checkout) => checkout.lineItems), concatMap((lineItems) => of(this.generateCartObject(lineItems))));
|
|
143
|
-
}
|
|
144
|
-
roundPrice(productPrice) {
|
|
145
|
-
const { price, fullPrice, subscriberPrice } = productPrice;
|
|
146
|
-
return Object.assign(Object.assign(Object.assign({}, productPrice), { price: Number(price.toFixed(2)), fullPrice: Number(fullPrice.toFixed(2)) }), (subscriberPrice && { subscriberPrice: Number(subscriberPrice.toFixed(2)) }));
|
|
147
|
-
}
|
|
148
|
-
getProductData(productId) {
|
|
149
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
-
let product;
|
|
151
|
-
let variant;
|
|
152
|
-
try {
|
|
153
|
-
product = yield this.productRepository.get({ id: productId });
|
|
154
|
-
}
|
|
155
|
-
catch (error) {
|
|
156
|
-
if (!(error instanceof NotFoundError))
|
|
157
|
-
throw error;
|
|
158
|
-
const { data: variants } = yield this.variantRepository.find({ filters: { id: productId } });
|
|
159
|
-
variant = variants.shift();
|
|
160
|
-
if (!variant)
|
|
161
|
-
throw error;
|
|
162
|
-
product = yield this.productRepository.get({ id: variant.productId });
|
|
163
|
-
}
|
|
164
|
-
return Object.assign(Object.assign({}, product.toPlain()), (variant && Object.assign({}, variant.toPlain())));
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
getGifts() {
|
|
168
|
-
return this.checkoutService.getCheckout().pipe(mergeMap((checkout) => __awaiter(this, void 0, void 0, function* () {
|
|
169
|
-
const notGiftItems = checkout.lineItems ? checkout.lineItems.filter((item) => !item.isGift) : [];
|
|
170
|
-
if (!notGiftItems.length)
|
|
171
|
-
return Object.assign(Object.assign({}, checkout), { lineItems: [] });
|
|
172
|
-
const cartTotal = notGiftItems.reduce((a, b) => a + b.pricePaid * b.quantity, 0);
|
|
173
|
-
const campaigns = yield this.buy2WinRepository
|
|
174
|
-
.find({
|
|
175
|
-
filters: {
|
|
176
|
-
active: { operator: Where.EQUALS, value: true },
|
|
177
|
-
shop: { operator: Where.EQUALS, value: this.defaultShop },
|
|
178
|
-
},
|
|
179
|
-
})
|
|
180
|
-
.then((data) => data.data);
|
|
181
|
-
if (!campaigns.length)
|
|
182
|
-
return Object.assign(Object.assign({}, checkout), { lineItems: notGiftItems });
|
|
183
|
-
const elegibleCampaigns = [];
|
|
184
|
-
for (const campaign of campaigns) {
|
|
185
|
-
const today = new Date().getDate();
|
|
186
|
-
if (!(campaign.startDate.getDate() <= today) && !(campaign.endDate.getDate() >= today))
|
|
187
|
-
continue;
|
|
188
|
-
if (campaign.activeCategory) {
|
|
189
|
-
const categoriesCampaing = campaign.categories.map((c) => c.id.toString());
|
|
190
|
-
const categoriesCampaingFullTree = [];
|
|
191
|
-
for (const id of categoriesCampaing) {
|
|
192
|
-
const children = yield this.categoryRepository.getChildren(parseInt(id));
|
|
193
|
-
categoriesCampaingFullTree.push(id, ...children.map((c) => c.id.toString()));
|
|
194
|
-
}
|
|
195
|
-
const categoriesCampaingTree = [...new Set(categoriesCampaingFullTree)];
|
|
196
|
-
const filterProductsCategories = checkout.lineItems.filter((l) => {
|
|
197
|
-
var _a;
|
|
198
|
-
if (!l.categories || !((_a = l.categories) === null || _a === void 0 ? void 0 : _a.length))
|
|
199
|
-
return true;
|
|
200
|
-
return l.categories.some((c) => categoriesCampaingTree.some((cat) => cat == c));
|
|
201
|
-
});
|
|
202
|
-
if (filterProductsCategories.length) {
|
|
203
|
-
const cartTotalCategories = filterProductsCategories.reduce((a, b) => a + b.pricePaid * b.quantity, 0);
|
|
204
|
-
if (cartTotalCategories >= campaign.cartValueMin)
|
|
205
|
-
elegibleCampaigns.push(campaign);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
if (campaign.cartValue && campaign.cartValue > 0) {
|
|
210
|
-
if (campaign.cartValue <= cartTotal)
|
|
211
|
-
elegibleCampaigns.push(campaign);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
if (!elegibleCampaigns.length)
|
|
216
|
-
return Object.assign(Object.assign({}, checkout), { lineItems: notGiftItems });
|
|
217
|
-
const campaingnProducts = [];
|
|
218
|
-
for (const campaign of elegibleCampaigns) {
|
|
219
|
-
let elegibleProducts = [];
|
|
220
|
-
for (const product of campaign.products) {
|
|
221
|
-
const { data: productData } = yield this.productRepository.find({ filters: { sku: product } });
|
|
222
|
-
if (!productData.length)
|
|
223
|
-
continue;
|
|
224
|
-
const gift = productData.shift();
|
|
225
|
-
if (gift.stock.quantity < 1)
|
|
226
|
-
continue;
|
|
227
|
-
elegibleProducts.push(gift);
|
|
228
|
-
}
|
|
229
|
-
campaingnProducts.push(elegibleProducts);
|
|
230
|
-
}
|
|
231
|
-
if (!campaingnProducts.length)
|
|
232
|
-
return Object.assign(Object.assign({}, checkout), { lineItems: notGiftItems });
|
|
233
|
-
const gifts = this.giftToLineItems([].concat(...campaingnProducts));
|
|
234
|
-
return Object.assign(Object.assign({}, checkout), { lineItems: notGiftItems.concat(gifts) });
|
|
235
|
-
})), concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
|
|
236
|
-
}
|
|
237
|
-
giftToLineItems(items) {
|
|
238
|
-
return items.map((item) => {
|
|
239
|
-
var _a;
|
|
240
|
-
const { brand, categories, id, name, price, sku, slug, stock, weight, EAN } = item;
|
|
241
|
-
const image = ((_a = item === null || item === void 0 ? void 0 : item.miniatures) === null || _a === void 0 ? void 0 : _a.length) ? item.miniatures[0] : item.images[0];
|
|
242
|
-
return LineItem.toInstance({
|
|
243
|
-
brand,
|
|
244
|
-
categories,
|
|
245
|
-
id: id.toString(),
|
|
246
|
-
name,
|
|
247
|
-
price,
|
|
248
|
-
sku,
|
|
249
|
-
slug,
|
|
250
|
-
stock,
|
|
251
|
-
weight,
|
|
252
|
-
EAN,
|
|
253
|
-
image,
|
|
254
|
-
pricePaid: 0,
|
|
255
|
-
quantity: 1,
|
|
256
|
-
isGift: true,
|
|
257
|
-
});
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
CartService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CartService, deps: [{ token: i1.AuthService }, { token: i2.CheckoutService }, { token: DEFAULT_SHOP }, { token: 'ProductRepository' }, { token: 'CategoryRepository' }, { token: 'VariantRepository' }, { token: 'Buy2WinRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
262
|
-
CartService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CartService });
|
|
263
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CartService, decorators: [{
|
|
264
|
-
type: Injectable
|
|
265
|
-
}], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.CheckoutService }, { type: i3.Shops, decorators: [{
|
|
266
|
-
type: Inject,
|
|
267
|
-
args: [DEFAULT_SHOP]
|
|
268
|
-
}] }, { type: undefined, decorators: [{
|
|
269
|
-
type: Inject,
|
|
270
|
-
args: ['ProductRepository']
|
|
271
|
-
}] }, { type: undefined, decorators: [{
|
|
272
|
-
type: Inject,
|
|
273
|
-
args: ['CategoryRepository']
|
|
274
|
-
}] }, { type: undefined, decorators: [{
|
|
275
|
-
type: Inject,
|
|
276
|
-
args: ['VariantRepository']
|
|
277
|
-
}] }, { type: i3.Buy2WinFirestoreRepository, decorators: [{
|
|
278
|
-
type: Inject,
|
|
279
|
-
args: ['Buy2WinRepository']
|
|
280
|
-
}] }]; } });
|
|
281
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFFTCwwQkFBMEIsRUFFMUIsUUFBUSxFQUNSLEtBQUssRUFDTCxRQUFRLEVBQ1IsYUFBYSxFQUdiLHdCQUF3QixFQUV4QixLQUFLLEVBSUwsS0FBSyxHQUNOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTs7Ozs7QUFRcEQsTUFBTSxPQUFPLFdBQVc7SUFHdEIsWUFDbUIsV0FBd0IsRUFDeEIsZUFBZ0MsRUFDVixXQUFrQixFQUNYLGlCQUFvQyxFQUNuQyxrQkFBc0MsRUFDdkMsaUJBQW9DLEVBQ3BDLGlCQUE2QztRQU4xRSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDVixnQkFBVyxHQUFYLFdBQVcsQ0FBTztRQUNYLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN2QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1C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VSwwQ0FBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFFNUUsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUN6QixLQUFLO2dCQUNMLFVBQVU7Z0JBQ1YsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pCLElBQUk7Z0JBQ0osS0FBSztnQkFDTCxHQUFHO2dCQUNILElBQUk7Z0JBQ0osS0FBSztnQkFDTCxNQUFNO2dCQUNOLEdBQUc7Z0JBQ0gsS0FBSztnQkFDTCxTQUFTLEVBQUUsQ0FBQztnQkFDWixRQUFRLEVBQUUsQ0FBQztnQkFDWCxNQUFNLEVBQUUsSUFBSTthQUNiLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7eUdBbFhVLFdBQVcsNEVBTVosWUFBWSxhQUNaLG1CQUFtQixhQUNuQixvQkFBb0IsYUFDcEIsbUJBQW1CLGFBQ25CLG1CQUFtQjs2R0FWbEIsV0FBVzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVOzswQkFPTixNQUFNOzJCQUFDLFlBQVk7OzBCQUNuQixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBCdXkyV2luLFxuICBCdXkyV2luRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5LFxuICBDaGVja291dCxcbiAgaXNOaWwsXG4gIExpbmVJdGVtLFxuICBOb3RGb3VuZEVycm9yLFxuICBQcm9kdWN0LFxuICBQcm9kdWN0UmVwb3NpdG9yeSxcbiAgUm91bmRQcm9kdWN0UHJpY2VzSGVscGVyLFxuICBTaG9wUHJpY2UsXG4gIFNob3BzLFxuICBVc2VyLFxuICBWYXJpYW50LFxuICBWYXJpYW50UmVwb3NpdG9yeSxcbiAgV2hlcmUsXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuaW1wb3J0IHsgZnJvbSwgaWlmLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBjb25jYXRNYXAsIG1hcCwgbWVyZ2VNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vY29uc3RzJ1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSdcbmltcG9ydCB7IENoZWNrb3V0U2VydmljZSB9IGZyb20gJy4vY2hlY2tvdXQuc2VydmljZSdcbmltcG9ydCB7IFJlcXVpcmVkQ2hlY2tvdXREYXRhIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IHR5cGUgQ2FydCA9IHtcbiAgW2lkOiBzdHJpbmddOiBMaW5lSXRlbVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2FydFNlcnZpY2Uge1xuICBwcml2YXRlIGNhcnRTdWJqZWN0OiBTdWJqZWN0PENhcnQ+ID0gbmV3IFN1YmplY3QoKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tvdXRTZXJ2aWNlOiBDaGVja291dFNlcnZpY2UsXG4gICAgQEluamVjdChERUZBVUxUX1NIT1ApIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNob3A6IFNob3BzLFxuICAgIEBJbmplY3QoJ1Byb2R1Y3RSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0UmVwb3NpdG9yeTogUHJvZHVjdFJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KCdWYXJpYW50UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgdmFyaWFudFJlcG9zaXRvcnk6IFZhcmlhbnRSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ0J1eTJXaW5SZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBidXkyV2luUmVwb3NpdG9yeTogQnV5MldpbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICkge31cblxuICBhZGRJdGVtKGl0ZW06IExpbmVJdGVtLCBxdWFudGl0eTogbnVtYmVyID0gMSk6IE9ic2VydmFibGU8Q2FydD4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldENoZWNrb3V0KCkpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoYXN5bmMgKGNoZWNrb3V0KSA9PiBhd2FpdCB0aGlzLmJ1aWxkTGluZUl0ZW0oeyBjaGVja291dCwgaXRlbSwgcXVhbnRpdHk6IHF1YW50aXR5IHx8IDEgfSkpLFxuICAgICAgbWVyZ2VNYXAoKHsgY2hlY2tvdXQsIGxpbmVJdGVtIH0pID0+IHRoaXMudXBkYXRlTGluZUl0ZW1JbkNhcnQobGluZUl0ZW0sIHF1YW50aXR5IHx8IDEsIGNoZWNrb3V0IGFzIENoZWNrb3V0KSksXG4gICAgICB0YXAoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSksXG4gICAgKVxuICB9XG5cbiAgZGVjcmVhc2VJdGVtKGl0ZW06IExpbmVJdGVtKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldENoZWNrb3V0KCkucGlwZShcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHtcbiAgICAgICAgY29uc3QgY2hlY2tvdXRJdGVtID0gY2hlY2tvdXQubGluZUl0ZW1zPy5maW5kKChsaW5lSXRlbSkgPT4gbGluZUl0ZW0uaWQgPT09IGl0ZW0uaWQpXG5cbiAgICAgICAgaWYgKCFpc05pbChjaGVja291dEl0ZW0pKSBjaGVja291dEl0ZW0ucXVhbnRpdHkgLT0gY2hlY2tvdXRJdGVtLnF1YW50aXR5ID4gMSA/IDEgOiAwXG5cbiAgICAgICAgcmV0dXJuIGNoZWNrb3V0XG4gICAgICB9KSxcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+IHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUNoZWNrb3V0TGluZUl0ZW1zKGNoZWNrb3V0KSksXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmdlbmVyYXRlQ2FydE9iamVjdChjaGVja291dC5saW5lSXRlbXMpKSxcbiAgICAgIHRhcCgoY2FydCkgPT4gdGhpcy5jYXJ0U3ViamVjdC5uZXh0KGNhcnQpKSxcbiAgICApXG4gIH1cblxuICBnZXRDYXJ0KGNoZWNrb3V0PzogUmVxdWlyZWRDaGVja291dERhdGEpOiBPYnNlcnZhYmxlPENhcnQ+IHtcbiAgICB0aGlzLmJ1aWxkQ2FydEZyb21DaGVja291dChjaGVja291dCkuc3Vic2NyaWJlKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpXG5cbiAgICByZXR1cm4gdGhpcy5jYXJ0U3ViamVjdFxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoZSBtZXRob2Qgc2hvdWxkIG5vdCBiZSB1c2VkXG4gICAqL1xuICBnZXRWYXJpYW50UHJpY2VEaXNjb3VudChpdGVtOiBMaW5lSXRlbSk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlcigpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKHVzZXIpID0+XG4gICAgICAgIGlpZihcbiAgICAgICAgICAoKSA9PiB1c2VyLmlzU3Vic2NyaWJlciAmJiAhIWl0ZW0ucHJpY2Uuc3Vic2NyaWJlclByaWNlLFxuICAgICAgICAgIG9mKGl0ZW0ucHJpY2Uuc3Vic2NyaWJlclByaWNlKSxcbiAgICAgICAgICBvZihpdGVtLnByaWNlLnByaWNlKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBjYXRjaEVycm9yKCgpID0+IG9mKGl0ZW0ucHJpY2UucHJpY2UpKSxcbiAgICApXG4gIH1cblxuICByZW1vdmVJdGVtKGl0ZW06IExpbmVJdGVtKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldENoZWNrb3V0KCkucGlwZShcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBjaGVja291dC5saW5lSXRlbXMuZmluZEluZGV4KChsaW5lSXRlbSkgPT4gbGluZUl0ZW0uaWQgPT09IGl0ZW0uaWQpXG5cbiAgICAgICAgaWYgKGluZGV4ID49IDApIGNoZWNrb3V0LmxpbmVJdGVtcy5zcGxpY2UoaW5kZXgsIDEpXG5cbiAgICAgICAgcmV0dXJuIGNoZWNrb3V0XG4gICAgICB9KSxcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+IHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUNoZWNrb3V0TGluZUl0ZW1zKGNoZWNrb3V0KSksXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmdlbmVyYXRlQ2FydE9iamVjdChjaGVja291dC5saW5lSXRlbXMpKSxcbiAgICAgIHRhcCgoY2FydCkgPT4gdGhpcy5jYXJ0U3ViamVjdC5uZXh0KGNhcnQpKSxcbiAgICApXG4gIH1cblxuICB1cGRhdGVVc2VyQ2FydCh1c2VyOiBVc2VyKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldENoZWNrb3V0KCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XG4gICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUNoZWNrb3V0VXNlcihDaGVja291dC50b0luc3RhbmNlKHsgLi4uY2hlY2tvdXQudG9QbGFpbigpLCB1c2VyIH0pKSxcbiAgICAgICksXG4gICAgICBjb25jYXRNYXAoYXN5bmMgKGNoZWNrb3V0KSA9PlxuICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZVxuICAgICAgICAgIC51cGRhdGVDaGVja291dExpbmVJdGVtcyhcbiAgICAgICAgICAgIENoZWNrb3V0LnRvSW5zdGFuY2Uoe1xuICAgICAgICAgICAgICAuLi5jaGVja291dC50b1BsYWluKCksXG4gICAgICAgICAgICAgIGxpbmVJdGVtczogY2hlY2tvdXQubGluZUl0ZW1zPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgICBjaGVja291dC5saW5lSXRlbXM/Lm1hcChhc3luYyAoaXRlbSkgPT4gKGF3YWl0IHRoaXMuYnVpbGRMaW5lSXRlbSh7IGNoZWNrb3V0LCBpdGVtIH0pKS5saW5lSXRlbSksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgICAudG9Qcm9taXNlKCksXG4gICAgICApLFxuICAgICAgbWFwKChjaGVja291dCkgPT4gdGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QoY2hlY2tvdXQubGluZUl0ZW1zKSksXG4gICAgICB0YXAoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSksXG4gICAgKVxuICB9XG5cbiAgY2xlYXJDYXJ0KCk6IE9ic2VydmFibGU8Q2FydD4ge1xuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpLnBpcGUoXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmNsZWFyQ2hlY2tvdXRGcm9tU2Vzc2lvbigpXG4gICAgICAgIHJldHVybiBjaGVja291dFxuICAgICAgfSksXG4gICAgICBjb25jYXRNYXAoKG9sZENoZWNrb3V0KSA9PiB0aGlzLmJ1aWxkQ2FydEZyb21DaGVja291dChvbGRDaGVja291dCkpLFxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDYXJ0RnJvbUNoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldENoZWNrb3V0KGNoZWNrb3V0RGF0YSkucGlwZShcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IGNoZWNrb3V0LmxpbmVJdGVtcyksXG4gICAgICBjb25jYXRNYXAoKGxpbmVJdGVtcykgPT4gb2YodGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QobGluZUl0ZW1zKSkpLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTGluZUl0ZW1JbkNhcnQgPSAobGluZUl0ZW06IExpbmVJdGVtLCBxdWFudGl0eTogbnVtYmVyLCBjaGVja291dD86IENoZWNrb3V0KTogT2JzZXJ2YWJsZTxDYXJ0PiA9PlxuICAgIChpc05pbChjaGVja291dCkgPyB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpIDogb2YoY2hlY2tvdXQpKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjaGVja291dExvYWRlZCkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtczogTGluZUl0ZW1bXSA9IFtdXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zPy5tYXAoKGNoZWNrb3V0SXRlbSkgPT4gY2hlY2tvdXRJdGVtLmlkKS5pbmRleE9mKGxpbmVJdGVtLmlkKVxuXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zW2luZGV4XS5xdWFudGl0eSArPSBxdWFudGl0eVxuICAgICAgICAgIGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtc1tpbmRleF0ucHJpY2VQYWlkID0gbGluZUl0ZW0ucHJpY2VQYWlkXG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcyA9IGl0ZW1zLmNvbmNhdChcbiAgICAgICAgICAgIGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcyA/IGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcy5jb25jYXQoW2xpbmVJdGVtXSkgOiBbbGluZUl0ZW1dLFxuICAgICAgICAgIClcblxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2VcbiAgICAgICAgICAudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXRMb2FkZWQpXG4gICAgICAgICAgLnBpcGUobWFwKCh1cGRhdGVkQ2hlY2tvdXQpID0+IHRoaXMuZ2VuZXJhdGVDYXJ0T2JqZWN0KHVwZGF0ZWRDaGVja291dC5saW5lSXRlbXMpKSlcbiAgICAgIH0pLFxuICAgIClcblxuICBwcml2YXRlIGdlbmVyYXRlQ2FydE9iamVjdCA9IChpdGVtczogTGluZUl0ZW1bXSk6IENhcnQgPT5cbiAgICBpdGVtc1xuICAgICAgPyBpdGVtcy5yZWR1Y2UoXG4gICAgICAgICAgKGNhcnQsIGl0ZW0pID0+ICh7XG4gICAgICAgICAgICAuLi5jYXJ0LFxuICAgICAgICAgICAgW2l0ZW0uaWRdOiBMaW5lSXRlbS50b0luc3RhbmNlKHtcbiAgICAgICAgICAgICAgLi4uKGNhcnRbaXRlbS5pZF0gfHwgaXRlbSksXG4gICAgICAgICAgICAgIHF1YW50aXR5OiAoY2FydFtpdGVtLmlkXT8ucXVhbnRpdHkgfHwgMCkgKyAoaXRlbS5xdWFudGl0eSA/IGl0ZW0ucXVhbnRpdHkgOiAxKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHt9LFxuICAgICAgICApXG4gICAgICA6IFtdXG5cbiAgcHJpdmF0ZSBidWlsZExpbmVJdGVtID0gYXN5bmMgKHtcbiAgICBjaGVja291dCxcbiAgICBpdGVtLFxuICAgIHF1YW50aXR5LFxuICB9OiB7XG4gICAgY2hlY2tvdXQ6IFJlcXVpcmVkQ2hlY2tvdXREYXRhXG4gICAgaXRlbTogTGluZUl0ZW1cbiAgICBxdWFudGl0eT86IG51bWJlclxuICB9KTogUHJvbWlzZTx7IGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0PjsgbGluZUl0ZW06IExpbmVJdGVtIH0+ID0+IHtcbiAgICBjb25zdCBwcm9kdWN0ID0gYXdhaXQgdGhpcy5nZXRQcm9kdWN0RGF0YShpdGVtLmlkKVxuXG4gICAgaXRlbS5xdWFudGl0eSA9IGl0ZW0/LnF1YW50aXR5IHx8IGNoZWNrb3V0Py5saW5lSXRlbXM/LmZpbmQoKGxpbmVJdGVtKSA9PiBsaW5lSXRlbS5pZCA9PT0gaXRlbS5pZCk/LnF1YW50aXR5IHx8IDBcblxuICAgIGlmICh0aGlzLmNoZWNrTWF4U3RvY2soaXRlbSwgcXVhbnRpdHkgfHwgMCkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rlc2N1bHBlISBUZW1vcyBhcGVuYXMgJyArIGl0ZW0uc3RvY2s/LnF1YW50aXR5ICsgJyBlbSBlc3RvcXVlLicpXG5cbiAgICBjb25zdCBpbWFnZSA9IGl0ZW0uaW1hZ2UgfHwgaXRlbS5pbWFnZXM/LnNoaWZ0KClcbiAgICBjb25zdCB7IGlkLCBuYW1lLCBFQU4sIHNsdWcsIHN0b2NrLCBwcmljZSwgd2VpZ2h0LCBza3UsIHR5cGUgfSA9IGl0ZW1cbiAgICBjb25zdCBpc0dpZnQgPSBpdGVtLmlzR2lmdCB8fCBudWxsXG4gICAgY29uc3QgcHJpY2VQYWlkID0gdGhpcy5nZXRQcm9kdWN0UHJpY2Uoe1xuICAgICAgcHJvZHVjdDogaXRlbSxcbiAgICAgIHNob3A6IGNoZWNrb3V0LnNob3AgfHwgdGhpcy5kZWZhdWx0U2hvcCxcbiAgICAgIGlzU3Vic2NyaWJlcjogY2hlY2tvdXQudXNlcj8uaXNTdWJzY3JpYmVyLFxuICAgIH0pXG5cbiAgICBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIucm91bmRQcm9kdWN0UHJpY2VzKGl0ZW0pXG5cbiAgICByZXR1cm4ge1xuICAgICAgY2hlY2tvdXQsXG4gICAgICBsaW5lSXRlbTogTGluZUl0ZW0udG9JbnN0YW5jZSh7XG4gICAgICAgIGlkLFxuICAgICAgICBuYW1lOiBuYW1lID8/IHByb2R1Y3QubmFtZSxcbiAgICAgICAgRUFOOiBFQU4gPz8gcHJvZHVjdC5FQU4sXG4gICAgICAgIGJyYW5kOiBwcm9kdWN0LmJyYW5kLFxuICAgICAgICBzbHVnOiBzbHVnID8/IHByb2R1Y3Quc2x1ZyxcbiAgICAgICAgc2t1OiBza3UgPz8gcHJvZHVjdC5za3UsXG4gICAgICAgIHN0b2NrLFxuICAgICAgICBwcmljZTogdGhpcy5yb3VuZFByaWNlKHByaWNlKSxcbiAgICAgICAgaW1hZ2UsXG4gICAgICAgIHdlaWdodDogd2VpZ2h0ID8/IHByb2R1Y3Qud2VpZ2h0LFxuICAgICAgICBxdWFudGl0eTogKGl0ZW0ucXVhbnRpdHkgfHwgMCkgKyAocXVhbnRpdHkgfHwgMCksXG4gICAgICAgIHByaWNlUGFpZCxcbiAgICAgICAgY2F0ZWdvcmllczogcHJvZHVjdC5jYXRlZ29yaWVzID8/IFtdLFxuICAgICAgICBpc0dpZnQ6IGlzR2lmdCA/PyBudWxsLFxuICAgICAgICBjb3N0UHJpY2U6IHByb2R1Y3QuY29zdFByaWNlID8/IDAsXG4gICAgICAgIHR5cGUsXG4gICAgICB9KSxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJvdW5kUHJpY2UocHJvZHVjdFByaWNlOiBTaG9wUHJpY2UpOiBTaG9wUHJpY2Uge1xuICAgIGNvbnN0IHsgcHJpY2UsIGZ1bGxQcmljZSwgc3Vic2NyaWJlclByaWNlIH0gPSBwcm9kdWN0UHJpY2VcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucHJvZHVjdFByaWNlLFxuICAgICAgcHJpY2U6IE51bWJlcihwcmljZS50b0ZpeGVkKDIpKSxcbiAgICAgIGZ1bGxQcmljZTogTnVtYmVyKGZ1bGxQcmljZS50b0ZpeGVkKDIpKSxcbiAgICAgIC4uLihzdWJzY3JpYmVyUHJpY2UgJiYgeyBzdWJzY3JpYmVyUHJpY2U6IE51bWJlcihzdWJzY3JpYmVyUHJpY2UudG9GaXhlZCgyKSkgfSksXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRQcm9kdWN0RGF0YShwcm9kdWN0SWQ6IHN0cmluZyk6IFByb21pc2U8UGFydGlhbDxQcm9kdWN0Pj4ge1xuICAgIGxldCBwcm9kdWN0OiBQcm9kdWN0XG4gICAgbGV0IHZhcmlhbnQ6IFZhcmlhbnRcblxuICAgIHRyeSB7XG4gICAgICBwcm9kdWN0ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5nZXQoeyBpZDogcHJvZHVjdElkIH0pXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikpIHRocm93IGVycm9yXG5cbiAgICAgIGNvbnN0IHsgZGF0YTogdmFyaWFudHMgfSA9IGF3YWl0IHRoaXMudmFyaWFudFJlcG9zaXRvcnkuZmluZCh7IGZpbHRlcnM6IHsgaWQ6IHByb2R1Y3RJZCB9IH0pXG5cbiAgICAgIHZhcmlhbnQgPSB2YXJpYW50cy5zaGlmdCgpXG5cbiAgICAgIGlmICghdmFyaWFudCkgdGhyb3cgZXJyb3JcblxuICAgICAgcHJvZHVjdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IHZhcmlhbnQucHJvZHVjdElkIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnByb2R1Y3QudG9QbGFpbigpLFxuICAgICAgLi4uKHZhcmlhbnQgJiYgeyAuLi52YXJpYW50LnRvUGxhaW4oKSB9KSxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFByb2R1Y3RQcmljZSA9ICh7XG4gICAgcHJvZHVjdCxcbiAgICBpc1N1YnNjcmliZXIsXG4gIH06IHtcbiAgICBwcm9kdWN0OiBMaW5lSXRlbVxuICAgIHNob3A6IFNob3BzXG4gICAgaXNTdWJzY3JpYmVyOiBib29sZWFuXG4gIH0pOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IGluZm8gPSBwcm9kdWN0LnByaWNlXG5cbiAgICBpZiAocHJvZHVjdC5pc0dpZnQpIHJldHVybiAwXG5cbiAgICByZXR1cm4gaXNTdWJzY3JpYmVyICYmIGluZm8uc3Vic2NyaWJlclByaWNlID4gMFxuICAgICAgPyBOdW1iZXIoaW5mby5zdWJzY3JpYmVyUHJpY2UudG9GaXhlZCgyKSlcbiAgICAgIDogTnVtYmVyKGluZm8ucHJpY2UudG9GaXhlZCgyKSlcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tNYXhTdG9jayA9IChpdGVtOiBMaW5lSXRlbSwgcXVhbnRpdHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG1heFN0b2NrID0gaXRlbS5zdG9jaz8ucXVhbnRpdHkgfHwgMFxuICAgIGNvbnN0IGN1cnJlbnRJdGVtQW1vdW50ID0gaXRlbS5xdWFudGl0eSB8fCAwXG5cbiAgICByZXR1cm4gY3VycmVudEl0ZW1BbW91bnQgKyBxdWFudGl0eSA+IG1heFN0b2NrXG4gIH1cblxuICBnZXRHaWZ0cygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoYXN5bmMgKGNoZWNrb3V0KSA9PiB7XG4gICAgICAgIGNvbnN0IG5vdEdpZnRJdGVtczogTGluZUl0ZW1bXSA9IGNoZWNrb3V0LmxpbmVJdGVtcyA/IGNoZWNrb3V0LmxpbmVJdGVtcy5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlzR2lmdCkgOiBbXVxuXG4gICAgICAgIGlmICghbm90R2lmdEl0ZW1zLmxlbmd0aCkgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogW10gfSBhcyBDaGVja291dFxuXG4gICAgICAgIGNvbnN0IGNhcnRUb3RhbCA9IG5vdEdpZnRJdGVtcy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLnByaWNlUGFpZCAqIGIucXVhbnRpdHksIDApXG5cbiAgICAgICAgY29uc3QgY2FtcGFpZ25zID0gYXdhaXQgdGhpcy5idXkyV2luUmVwb3NpdG9yeVxuICAgICAgICAgIC5maW5kKHtcbiAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgYWN0aXZlOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiB0cnVlIH0sXG4gICAgICAgICAgICAgIHNob3A6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRoaXMuZGVmYXVsdFNob3AgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAudGhlbigoZGF0YSkgPT4gZGF0YS5kYXRhKVxuXG4gICAgICAgIGlmICghY2FtcGFpZ25zLmxlbmd0aCkgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogbm90R2lmdEl0ZW1zIH0gYXMgQ2hlY2tvdXRcblxuICAgICAgICBjb25zdCBlbGVnaWJsZUNhbXBhaWduczogQnV5MldpbltdID0gW11cblxuICAgICAgICBmb3IgKGNvbnN0IGNhbXBhaWduIG9mIGNhbXBhaWducykge1xuICAgICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKS5nZXREYXRlKClcblxuICAgICAgICAgIGlmICghKGNhbXBhaWduLnN0YXJ0RGF0ZS5nZXREYXRlKCkgPD0gdG9kYXkpICYmICEoY2FtcGFpZ24uZW5kRGF0ZS5nZXREYXRlKCkgPj0gdG9kYXkpKSBjb250aW51ZVxuXG4gICAgICAgICAgaWYgKGNhbXBhaWduLmFjdGl2ZUNhdGVnb3J5KSB7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzQ2FtcGFpbmcgPSBjYW1wYWlnbi5jYXRlZ29yaWVzLm1hcCgoYykgPT4gYy5pZC50b1N0cmluZygpKVxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllc0NhbXBhaW5nRnVsbFRyZWUgPSBbXVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIGNhdGVnb3JpZXNDYW1wYWluZykge1xuICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGF3YWl0IHRoaXMuY2F0ZWdvcnlSZXBvc2l0b3J5LmdldENoaWxkcmVuKHBhcnNlSW50KGlkKSlcblxuICAgICAgICAgICAgICBjYXRlZ29yaWVzQ2FtcGFpbmdGdWxsVHJlZS5wdXNoKGlkLCAuLi5jaGlsZHJlbi5tYXAoKGMpID0+IGMuaWQudG9TdHJpbmcoKSkpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXNDYW1wYWluZ1RyZWUgPSBbLi4ubmV3IFNldChjYXRlZ29yaWVzQ2FtcGFpbmdGdWxsVHJlZSldXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJQcm9kdWN0c0NhdGVnb3JpZXMgPSBjaGVja291dC5saW5lSXRlbXMuZmlsdGVyKChsKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghbC5jYXRlZ29yaWVzIHx8ICFsLmNhdGVnb3JpZXM/Lmxlbmd0aCkgcmV0dXJuIHRydWVcblxuICAgICAgICAgICAgICByZXR1cm4gbC5jYXRlZ29yaWVzLnNvbWUoKGMpID0+IGNhdGVnb3JpZXNDYW1wYWluZ1RyZWUuc29tZSgoY2F0KSA9PiBjYXQgPT0gYykpXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBpZiAoZmlsdGVyUHJvZHVjdHNDYXRlZ29yaWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICBjb25zdCBjYXJ0VG90YWxDYXRlZ29yaWVzID0gZmlsdGVyUHJvZHVjdHNDYXRlZ29yaWVzLnJlZHVjZSgoYSwgYikgPT4gYSArIGIucHJpY2VQYWlkICogYi5xdWFudGl0eSwgMClcblxuICAgICAgICAgICAgICBpZiAoY2FydFRvdGFsQ2F0ZWdvcmllcyA+PSBjYW1wYWlnbi5jYXJ0VmFsdWVNaW4pIGVsZWdpYmxlQ2FtcGFpZ25zLnB1c2goY2FtcGFpZ24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYW1wYWlnbi5jYXJ0VmFsdWUgJiYgY2FtcGFpZ24uY2FydFZhbHVlID4gMCkge1xuICAgICAgICAgICAgICBpZiAoY2FtcGFpZ24uY2FydFZhbHVlIDw9IGNhcnRUb3RhbCkgZWxlZ2libGVDYW1wYWlnbnMucHVzaChjYW1wYWlnbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWVsZWdpYmxlQ2FtcGFpZ25zLmxlbmd0aCkgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogbm90R2lmdEl0ZW1zIH0gYXMgQ2hlY2tvdXRcblxuICAgICAgICBjb25zdCBjYW1wYWluZ25Qcm9kdWN0czogUHJvZHVjdFtdW10gPSBbXVxuXG4gICAgICAgIGZvciAoY29uc3QgY2FtcGFpZ24gb2YgZWxlZ2libGVDYW1wYWlnbnMpIHtcbiAgICAgICAgICBsZXQgZWxlZ2libGVQcm9kdWN0cyA9IFtdXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHByb2R1Y3Qgb2YgY2FtcGFpZ24ucHJvZHVjdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZGF0YTogcHJvZHVjdERhdGEgfSA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZCh7IGZpbHRlcnM6IHsgc2t1OiBwcm9kdWN0IH0gfSlcblxuICAgICAgICAgICAgaWYgKCFwcm9kdWN0RGF0YS5sZW5ndGgpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IGdpZnQgPSBwcm9kdWN0RGF0YS5zaGlmdCgpXG5cbiAgICAgICAgICAgIGlmIChnaWZ0LnN0b2NrLnF1YW50aXR5IDwgMSkgY29udGludWVcblxuICAgICAgICAgICAgZWxlZ2libGVQcm9kdWN0cy5wdXNoKGdpZnQpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FtcGFpbmduUHJvZHVjdHMucHVzaChlbGVnaWJsZVByb2R1Y3RzKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjYW1wYWluZ25Qcm9kdWN0cy5sZW5ndGgpIHJldHVybiB7IC4uLmNoZWNrb3V0LCBsaW5lSXRlbXM6IG5vdEdpZnRJdGVtcyB9IGFzIENoZWNrb3V0XG5cbiAgICAgICAgY29uc3QgZ2lmdHMgPSB0aGlzLmdpZnRUb0xpbmVJdGVtcyhbXS5jb25jYXQoLi4uY2FtcGFpbmduUHJvZHVjdHMpKVxuXG4gICAgICAgIHJldHVybiB7IC4uLmNoZWNrb3V0LCBsaW5lSXRlbXM6IG5vdEdpZnRJdGVtcy5jb25jYXQoZ2lmdHMpIH1cbiAgICAgIH0pLFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT4gdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQpKSxcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHRoaXMuZ2VuZXJhdGVDYXJ0T2JqZWN0KGNoZWNrb3V0LmxpbmVJdGVtcykpLFxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgZ2lmdFRvTGluZUl0ZW1zKGl0ZW1zOiBQcm9kdWN0W10pOiBMaW5lSXRlbVtdIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCB7IGJyYW5kLCBjYXRlZ29yaWVzLCBpZCwgbmFtZSwgcHJpY2UsIHNrdSwgc2x1Zywgc3RvY2ssIHdlaWdodCwgRUFOIH0gPSBpdGVtXG5cbiAgICAgIGNvbnN0IGltYWdlID0gaXRlbT8ubWluaWF0dXJlcz8ubGVuZ3RoID8gaXRlbS5taW5pYXR1cmVzWzBdIDogaXRlbS5pbWFnZXNbMF1cblxuICAgICAgcmV0dXJuIExpbmVJdGVtLnRvSW5zdGFuY2Uoe1xuICAgICAgICBicmFuZCxcbiAgICAgICAgY2F0ZWdvcmllcyxcbiAgICAgICAgaWQ6IGlkLnRvU3RyaW5nKCksXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHByaWNlLFxuICAgICAgICBza3UsXG4gICAgICAgIHNsdWcsXG4gICAgICAgIHN0b2NrLFxuICAgICAgICB3ZWlnaHQsXG4gICAgICAgIEVBTixcbiAgICAgICAgaW1hZ2UsXG4gICAgICAgIHByaWNlUGFpZDogMCxcbiAgICAgICAgcXVhbnRpdHk6IDEsXG4gICAgICAgIGlzR2lmdDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuIl19
|