@daffodil/category 0.64.2 → 0.66.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/driver/in-memory/backend/category.service.d.ts +2 -1
- package/esm2020/driver/in-memory/backend/category.service.mjs +8 -21
- package/esm2020/public_api.mjs +1 -2
- package/esm2020/state/effects/category-page-filter.effects.mjs +3 -2
- package/esm2020/state/effects/category-page.effects.mjs +3 -2
- package/esm2020/state/effects/category.effects.mjs +2 -2
- package/esm2020/state/injection-tokens/error-matcher.token.mjs +8 -0
- package/esm2020/state/injection-tokens/public_api.mjs +2 -0
- package/esm2020/state/public_api.mjs +2 -1
- package/esm2020/state/testing/category-testing.module.mjs +6 -6
- package/esm2020/state/testing/public_api.mjs +2 -2
- package/esm2020/testing/factories/category-breadcrumb.factory.mjs +29 -0
- package/esm2020/testing/factories/category.factory.mjs +41 -18
- package/esm2020/testing/factories/public_api.mjs +4 -3
- package/fesm2015/daffodil-category-driver-in-memory.mjs +7 -20
- package/fesm2015/daffodil-category-driver-in-memory.mjs.map +1 -1
- package/fesm2015/daffodil-category-state-testing.mjs +6 -6
- package/fesm2015/daffodil-category-state-testing.mjs.map +1 -1
- package/fesm2015/daffodil-category-state.mjs +9 -3
- package/fesm2015/daffodil-category-state.mjs.map +1 -1
- package/fesm2015/daffodil-category-testing.mjs +52 -18
- package/fesm2015/daffodil-category-testing.mjs.map +1 -1
- package/fesm2015/daffodil-category.mjs +1 -10
- package/fesm2015/daffodil-category.mjs.map +1 -1
- package/fesm2020/daffodil-category-driver-in-memory.mjs +7 -20
- package/fesm2020/daffodil-category-driver-in-memory.mjs.map +1 -1
- package/fesm2020/daffodil-category-state-testing.mjs +6 -6
- package/fesm2020/daffodil-category-state-testing.mjs.map +1 -1
- package/fesm2020/daffodil-category-state.mjs +9 -3
- package/fesm2020/daffodil-category-state.mjs.map +1 -1
- package/fesm2020/daffodil-category-testing.mjs +64 -18
- package/fesm2020/daffodil-category-testing.mjs.map +1 -1
- package/fesm2020/daffodil-category.mjs +1 -10
- package/fesm2020/daffodil-category.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +0 -1
- package/state/public_api.d.ts +1 -0
- package/state/testing/category-testing.module.d.ts +4 -4
- package/state/testing/public_api.d.ts +1 -1
- package/testing/factories/category-breadcrumb.factory.d.ts +17 -0
- package/testing/factories/category.factory.d.ts +13 -8
- package/testing/factories/public_api.d.ts +3 -2
- package/esm2020/injection-tokens/error-matcher.token.mjs +0 -8
- package/esm2020/injection-tokens/public_api.mjs +0 -2
- /package/{injection-tokens → state/injection-tokens}/error-matcher.token.d.ts +0 -0
- /package/{injection-tokens → state/injection-tokens}/public_api.d.ts +0 -0
@@ -1,26 +1,48 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
2
|
import { Injectable } from '@angular/core';
|
3
3
|
import { faker } from '@faker-js/faker/locale/en_US';
|
4
|
+
import { randomSubset } from '@daffodil/core';
|
4
5
|
import * as i1 from '@daffodil/core/testing';
|
5
6
|
import { DaffModelFactory, MockCollectionMetadata } from '@daffodil/core/testing';
|
6
7
|
|
7
|
-
class
|
8
|
+
class MockCategoryBreadcrumb {
|
8
9
|
constructor() {
|
9
10
|
this.id = faker.datatype.uuid();
|
10
|
-
this.url = `/${faker.internet.domainWord()}.html`;
|
11
|
-
this.canonicalUrl = faker.internet.url();
|
12
11
|
this.name = faker.commerce.productMaterial();
|
13
|
-
this.
|
14
|
-
this.
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
this.level = faker.datatype.number({ min: 1, max: 5 });
|
13
|
+
this.url = faker.commerce.productMaterial();
|
14
|
+
}
|
15
|
+
}
|
16
|
+
/**
|
17
|
+
* A factory for creating a {@link DaffCategoryBreadcrumb}.
|
18
|
+
*/
|
19
|
+
class DaffCategoryBreadcrumbFactory extends DaffModelFactory {
|
20
|
+
constructor() {
|
21
|
+
super(MockCategoryBreadcrumb);
|
22
|
+
}
|
23
|
+
}
|
24
|
+
/** @nocollapse */ DaffCategoryBreadcrumbFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryBreadcrumbFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
25
|
+
/** @nocollapse */ DaffCategoryBreadcrumbFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryBreadcrumbFactory, providedIn: 'root' });
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryBreadcrumbFactory, decorators: [{
|
27
|
+
type: Injectable,
|
28
|
+
args: [{
|
29
|
+
providedIn: 'root',
|
30
|
+
}]
|
31
|
+
}], ctorParameters: function () { return []; } });
|
32
|
+
|
33
|
+
class MockCategory {
|
34
|
+
constructor(breadcrumbFactory) {
|
35
|
+
this.breadcrumbFactory = breadcrumbFactory;
|
36
|
+
this.id = faker.datatype.uuid();
|
37
|
+
this.url = `/${faker.helpers.unique(faker.internet.domainWord)}.html`;
|
38
|
+
this.canonicalUrl = faker.internet.url();
|
39
|
+
this.name = faker.commerce.department();
|
40
|
+
this.description = faker.commerce.productDescription();
|
41
|
+
this.meta_title = faker.commerce.department();
|
42
|
+
this.meta_description = faker.commerce.productDescription();
|
43
|
+
this.breadcrumbs = this.breadcrumbFactory.createMany(faker.datatype.number({ min: 1, max: 5 }));
|
22
44
|
this.children_count = faker.datatype.number({ min: 1, max: 10 });
|
23
|
-
this.total_products =
|
45
|
+
this.total_products = faker.datatype.number({ min: 0, max: 9999 });
|
24
46
|
this.product_ids = [faker.datatype.number({ min: 1, max: 100 }).toString()];
|
25
47
|
}
|
26
48
|
}
|
@@ -28,18 +50,30 @@ class MockCategory {
|
|
28
50
|
* A factory for creating a {@link DaffCategory}.
|
29
51
|
*/
|
30
52
|
class DaffCategoryFactory extends DaffModelFactory {
|
31
|
-
constructor() {
|
32
|
-
super(MockCategory);
|
53
|
+
constructor(breadcrumbFactory) {
|
54
|
+
super(MockCategory, breadcrumbFactory);
|
55
|
+
}
|
56
|
+
/**
|
57
|
+
* Creates a category tree of specified depth, optionally using the passed product IDs.
|
58
|
+
* This is very useful for creating a category tree that closely resembles those found in the wild.
|
59
|
+
* Each child has a minimum of half of the parent's products.
|
60
|
+
*/
|
61
|
+
createTree(depth, productIds = [], partial = {}) {
|
62
|
+
if (depth > 0) {
|
63
|
+
const childrenCount = faker.datatype.number({ min: 1, max: depth * 2 });
|
64
|
+
return this.create(Object.assign({ children: Array(childrenCount).fill(0).map(() => this.createTree(depth - 1, randomSubset(productIds, faker.datatype.number({ min: Math.floor(productIds.length / 2), max: productIds.length })))), children_count: childrenCount, product_ids: productIds, total_products: productIds.length }, partial));
|
65
|
+
}
|
66
|
+
return this.create(Object.assign({ children: [], children_count: 0, product_ids: productIds, total_products: productIds.length }, partial));
|
33
67
|
}
|
34
68
|
}
|
35
|
-
/** @nocollapse */ DaffCategoryFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
69
|
+
/** @nocollapse */ DaffCategoryFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryFactory, deps: [{ token: DaffCategoryBreadcrumbFactory }], target: i0.ɵɵFactoryTarget.Injectable });
|
36
70
|
/** @nocollapse */ DaffCategoryFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryFactory, providedIn: 'root' });
|
37
71
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryFactory, decorators: [{
|
38
72
|
type: Injectable,
|
39
73
|
args: [{
|
40
74
|
providedIn: 'root',
|
41
75
|
}]
|
42
|
-
}], ctorParameters: function () { return []; } });
|
76
|
+
}], ctorParameters: function () { return [{ type: DaffCategoryBreadcrumbFactory }]; } });
|
43
77
|
|
44
78
|
/**
|
45
79
|
* A helper function to verify that a model is a Category.
|
@@ -78,5 +112,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
78
112
|
* Generated bundle index. Do not edit.
|
79
113
|
*/
|
80
114
|
|
81
|
-
export { DaffCategoryFactory, DaffCategoryPageMetadataFactory, MockCategoryPageMetadata, isCategory };
|
115
|
+
export { DaffCategoryBreadcrumbFactory, DaffCategoryFactory, DaffCategoryPageMetadataFactory, MockCategory, MockCategoryBreadcrumb, MockCategoryPageMetadata, isCategory };
|
82
116
|
//# sourceMappingURL=daffodil-category-testing.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"daffodil-category-testing.mjs","sources":["../../../libs/category/testing/src/factories/category.factory.ts","../../../libs/category/testing/src/helpers/category-helper.ts","../../../libs/category/testing/src/factories/category-page-metadata.factory.ts","../../../libs/category/testing/src/daffodil-category-testing.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\n\nimport { DaffCategory } from '@daffodil/category';\nimport { DaffModelFactory } from '@daffodil/core/testing';\n\nexport class MockCategory implements DaffCategory {\n id = faker.datatype.uuid();\n url = `/${faker.internet.domainWord
|
1
|
+
{"version":3,"file":"daffodil-category-testing.mjs","sources":["../../../libs/category/testing/src/factories/category-breadcrumb.factory.ts","../../../libs/category/testing/src/factories/category.factory.ts","../../../libs/category/testing/src/helpers/category-helper.ts","../../../libs/category/testing/src/factories/category-page-metadata.factory.ts","../../../libs/category/testing/src/daffodil-category-testing.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\n\nimport { DaffCategoryBreadcrumb } from '@daffodil/category';\nimport { DaffModelFactory } from '@daffodil/core/testing';\n\nexport class MockCategoryBreadcrumb implements DaffCategoryBreadcrumb {\n id = faker.datatype.uuid();\n name = faker.commerce.productMaterial();\n level = faker.datatype.number({ min: 1, max: 5 });\n url = faker.commerce.productMaterial();\n}\n\n/**\n * A factory for creating a {@link DaffCategoryBreadcrumb}.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCategoryBreadcrumbFactory extends DaffModelFactory<DaffCategoryBreadcrumb, typeof MockCategoryBreadcrumb>{\n constructor() {\n super(MockCategoryBreadcrumb);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\n\nimport { DaffCategory } from '@daffodil/category';\nimport { randomSubset } from '@daffodil/core';\nimport { DaffModelFactory } from '@daffodil/core/testing';\nimport { DaffProduct } from '@daffodil/product';\n\nimport { DaffCategoryBreadcrumbFactory } from './category-breadcrumb.factory';\n\nexport class MockCategory implements DaffCategory {\n id = faker.datatype.uuid();\n url = `/${faker.helpers.unique(faker.internet.domainWord)}.html`;\n canonicalUrl = faker.internet.url();\n name = faker.commerce.department();\n description = faker.commerce.productDescription();\n meta_title = faker.commerce.department();\n meta_description = faker.commerce.productDescription();\n breadcrumbs = this.breadcrumbFactory.createMany(faker.datatype.number({ min: 1, max: 5 }));\n children_count = faker.datatype.number({ min: 1, max: 10 });\n total_products = faker.datatype.number({ min: 0, max: 9999 });\n product_ids = [faker.datatype.number({ min: 1, max: 100 }).toString()];\n\n constructor(\n protected breadcrumbFactory: DaffCategoryBreadcrumbFactory,\n ) {}\n}\n\n/**\n * A factory for creating a {@link DaffCategory}.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCategoryFactory extends DaffModelFactory<DaffCategory, typeof MockCategory>{\n constructor(\n breadcrumbFactory: DaffCategoryBreadcrumbFactory,\n ) {\n super(MockCategory, breadcrumbFactory);\n }\n\n /**\n * Creates a category tree of specified depth, optionally using the passed product IDs.\n * This is very useful for creating a category tree that closely resembles those found in the wild.\n * Each child has a minimum of half of the parent's products.\n */\n createTree(depth: number, productIds: DaffProduct['id'][] = [], partial: Partial<DaffCategory> = {}): DaffCategory {\n if (depth > 0) {\n const childrenCount = faker.datatype.number({ min: 1, max: depth * 2 });\n\n return this.create({\n children: Array(childrenCount).fill(0).map(() =>\n this.createTree(\n depth - 1,\n randomSubset(productIds, faker.datatype.number({ min: Math.floor(productIds.length / 2), max: productIds.length })),\n ),\n ),\n children_count: childrenCount,\n product_ids: productIds,\n total_products: productIds.length,\n ...partial,\n });\n }\n\n return this.create({\n children: [],\n children_count: 0,\n product_ids: productIds,\n total_products: productIds.length,\n ...partial,\n });\n }\n}\n","import { DaffCategory } from '@daffodil/category';\n\n/**\n * A helper function to verify that a model is a Category.\n *\n * @param category\n */\nexport function isCategory(category: DaffCategory): boolean {\n return !!category.id\n && !!category.name;\n}\n","import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\n\nimport { DaffCategoryPageMetadata } from '@daffodil/category';\nimport {\n DaffModelFactory,\n DaffNumericallyPaginableFactory,\n DaffSortableFactory,\n} from '@daffodil/core/testing';\nimport {\n DaffFilterFactory,\n MockCollectionMetadata,\n} from '@daffodil/core/testing';\n\nexport class MockCategoryPageMetadata extends MockCollectionMetadata implements DaffCategoryPageMetadata {\n id = faker.datatype.uuid();\n}\n\n/**\n * A factory for creating {@link DaffCategoryPageMetadata}.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCategoryPageMetadataFactory extends DaffModelFactory<DaffCategoryPageMetadata>{\n constructor(\n pageInfoFactory: DaffNumericallyPaginableFactory,\n sortFieldsFactory: DaffSortableFactory,\n filterFactory: DaffFilterFactory,\n ) {\n super(MockCategoryPageMetadata, pageInfoFactory, sortFieldsFactory, filterFactory);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DaffCategoryBreadcrumbFactory"],"mappings":"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"}
|
@@ -1,6 +1,3 @@
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
2
|
-
import { daffTransformErrorToStateError } from '@daffodil/core/state';
|
3
|
-
|
4
1
|
/**
|
5
2
|
* When you request a category page, there's two ways to do so, via URL or via ID.
|
6
3
|
*/
|
@@ -12,15 +9,9 @@ var DaffCategoryRequestKind;
|
|
12
9
|
})(DaffCategoryRequestKind || (DaffCategoryRequestKind = {}));
|
13
10
|
;
|
14
11
|
|
15
|
-
/**
|
16
|
-
* Transforms `DaffError`s into `DaffStateError`s before they are serialized into state.
|
17
|
-
* Can be used to further refine Daffodil errors into more specific app errors.
|
18
|
-
*/
|
19
|
-
const DAFF_CATEGORY_ERROR_MATCHER = new InjectionToken('DAFF_CATEGORY_ERROR_MATCHER', { factory: () => daffTransformErrorToStateError });
|
20
|
-
|
21
12
|
/**
|
22
13
|
* Generated bundle index. Do not edit.
|
23
14
|
*/
|
24
15
|
|
25
|
-
export {
|
16
|
+
export { DaffCategoryRequestKind };
|
26
17
|
//# sourceMappingURL=daffodil-category.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"daffodil-category.mjs","sources":["../../../libs/category/src/models/category-request.ts","../../../libs/category/src/
|
1
|
+
{"version":3,"file":"daffodil-category.mjs","sources":["../../../libs/category/src/models/category-request.ts","../../../libs/category/src/daffodil-category.ts"],"sourcesContent":["import {\n ID,\n DaffLocatable,\n} from '@daffodil/core';\nimport { DaffCollectionRequest } from '@daffodil/core';\n\nimport { DaffCategory } from './category';\n\n/**\n * When you request a category page, there's two ways to do so, via URL or via ID.\n */\nexport enum DaffCategoryRequestKind {\n URL = 'URL',\n // eslint-disable-next-line @typescript-eslint/no-shadow\n ID = 'ID'\n}\n\n/**\n * The request used to retrieve a category and its relevant items.\n */\nexport type DaffCategoryRequest = DaffCategoryIdRequest | DaffCategoryUrlRequest;\n\n/**\n * A request used to retrieve a category by its uid.\n */\nexport interface DaffCategoryIdRequest extends DaffCollectionRequest {\n id: DaffCategory['id'];\n kind: DaffCategoryRequestKind.ID;\n}\n\n/**\n * A request used to retrieve a category by its URL.\n * The qualified URL without domain.\n * e.g. a/path/to/the/category.html\n */\nexport interface DaffCategoryUrlRequest extends DaffCollectionRequest, DaffLocatable {\n kind: DaffCategoryRequestKind.URL;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAQA;;AAEG;AACS,IAAA,wBAIX;AAJD,CAAA,UAAY,uBAAuB,EAAA;AACjC,IAAA,uBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;;AAEX,IAAA,uBAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACX,CAAC,EAJW,uBAAuB,KAAvB,uBAAuB,GAIlC,EAAA,CAAA,CAAA,CAAA;AAsBA;;ACrCD;;AAEG;;;;"}
|
@@ -7,7 +7,7 @@ import { CommonModule } from '@angular/common';
|
|
7
7
|
import { DaffCategoryDriver } from '@daffodil/category/driver';
|
8
8
|
import { STATUS } from 'angular-in-memory-web-api';
|
9
9
|
import * as i1$1 from '@daffodil/category/testing';
|
10
|
-
import {
|
10
|
+
import { collect } from '@daffodil/core';
|
11
11
|
import * as i2 from '@daffodil/product/driver/in-memory';
|
12
12
|
|
13
13
|
/**
|
@@ -79,21 +79,11 @@ class DaffInMemoryBackendCategoryService {
|
|
79
79
|
this.metadataFactory = metadataFactory;
|
80
80
|
this.productInMemoryBackendService = productInMemoryBackendService;
|
81
81
|
this._categories = [];
|
82
|
-
this.
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
'1005',
|
88
|
-
'1006',
|
89
|
-
'1007',
|
90
|
-
'1008',
|
91
|
-
'1009',
|
92
|
-
'1010',
|
93
|
-
].map(id => {
|
94
|
-
const allCategoryProductIds = this.generateProductIdSubset(this.productInMemoryBackendService.products);
|
95
|
-
return this.categoryFactory.create({ id, url: `/${id}`, product_ids: allCategoryProductIds, count: allCategoryProductIds.length });
|
96
|
-
});
|
82
|
+
this._root = this.categoryFactory.createTree(3, this.productInMemoryBackendService.products.map(({ id }) => id));
|
83
|
+
this._categories = collect(this._root, (category) => category?.children || []);
|
84
|
+
}
|
85
|
+
get rootCategory() {
|
86
|
+
return this._root;
|
97
87
|
}
|
98
88
|
/**
|
99
89
|
* The collection of categories in the backend.
|
@@ -135,7 +125,7 @@ class DaffInMemoryBackendCategoryService {
|
|
135
125
|
pageSize: this.generatePageSize(reqInfo),
|
136
126
|
currentPage: this.getCurrentPageParam(reqInfo),
|
137
127
|
totalPages: this.getTotalPages(category.product_ids, this.generatePageSize(reqInfo)),
|
138
|
-
|
128
|
+
ids: this.trimProductIdsToSinglePage(category.product_ids, this.getCurrentPageParam(reqInfo), this.generatePageSize(reqInfo)),
|
139
129
|
count: category.total_products,
|
140
130
|
});
|
141
131
|
return reqInfo.utils.createResponse$(() => ({
|
@@ -164,9 +154,6 @@ class DaffInMemoryBackendCategoryService {
|
|
164
154
|
tempIds.splice(pageSize, tempIds.length - pageSize);
|
165
155
|
return tempIds;
|
166
156
|
}
|
167
|
-
generateProductIdSubset(products) {
|
168
|
-
return randomSubset(products).map(product => product.id);
|
169
|
-
}
|
170
157
|
generatePageSize(reqInfo) {
|
171
158
|
if (reqInfo.req.params.map && reqInfo.req.params.map.get('pageSize') && reqInfo.req.params.map.get('pageSize')[0]) {
|
172
159
|
return parseInt(reqInfo.req.params.map.get('pageSize')[0], 10);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"daffodil-category-driver-in-memory.mjs","sources":["../../../libs/category/driver/in-memory/src/drivers/category.service.ts","../../../libs/category/driver/in-memory/src/drivers/category-driver.module.ts","../../../libs/category/driver/in-memory/src/backend/category.service.ts","../../../libs/category/driver/in-memory/src/daffodil-category-driver-in-memory.ts"],"sourcesContent":["import {\n HttpClient,\n HttpParams,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport {\n DaffGetCategoryResponse,\n DaffCategoryIdRequest,\n DaffCategoryUrlRequest,\n} from '@daffodil/category';\nimport { DaffCategoryServiceInterface } from '@daffodil/category/driver';\nimport { daffUriTruncateLeadingSlash } from '@daffodil/core/routing';\n\n/**\n * The category in memory driver for mocking the {@link DaffCategoryDriver} with in memory data.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffInMemoryCategoryService implements DaffCategoryServiceInterface {\n url = '/api/category/';\n\n constructor(private http: HttpClient) {}\n\n get(categoryRequest: DaffCategoryIdRequest): Observable<DaffGetCategoryResponse> {\n const params = new HttpParams()\n .set('pageSize', categoryRequest.pageSize ? categoryRequest.pageSize.toString() : null)\n .set('currentPage', categoryRequest.currentPage ? categoryRequest.currentPage.toString() : null);\n\n return this.http.get<DaffGetCategoryResponse>(this.url + categoryRequest.id, { params });\n }\n\n getByUrl(categoryRequest: DaffCategoryUrlRequest): Observable<DaffGetCategoryResponse> {\n const params = new HttpParams()\n .set('pageSize', categoryRequest.pageSize ? categoryRequest.pageSize.toString() : null)\n .set('currentPage', categoryRequest.currentPage ? categoryRequest.currentPage.toString() : null);\n\n return this.http.get<DaffGetCategoryResponse>(`${this.url}${daffUriTruncateLeadingSlash(categoryRequest.url)}`, { params });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n NgModule,\n ModuleWithProviders,\n} from '@angular/core';\n\nimport { DaffCategoryDriver } from '@daffodil/category/driver';\n\nimport { DaffInMemoryCategoryService } from './category.service';\n\n/**\n * A module that provides the {@link DaffInMemoryCategoryService} for the {@link DaffCategoryDriver} token.\n */\n@NgModule({\n imports: [\n CommonModule,\n ],\n})\nexport class DaffCategoryInMemoryDriverModule {\n static forRoot(): ModuleWithProviders<DaffCategoryInMemoryDriverModule> {\n return {\n ngModule: DaffCategoryInMemoryDriverModule,\n providers: [\n {\n provide: DaffCategoryDriver,\n useExisting: DaffInMemoryCategoryService,\n },\n ],\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n InMemoryDbService,\n RequestInfoUtilities,\n ParsedRequestUrl,\n STATUS,\n} from 'angular-in-memory-web-api';\n\nimport {\n DaffCategory,\n DaffCategoryPageMetadata,\n} from '@daffodil/category';\nimport {\n DaffCategoryFactory,\n DaffCategoryPageMetadataFactory,\n} from '@daffodil/category/testing';\nimport { randomSubset } from '@daffodil/core';\nimport { daffUriTruncateLeadingSlash } from '@daffodil/core/routing';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffInMemoryBackendProductService } from '@daffodil/product/driver/in-memory';\n\n/**\n * An in-memory service that mocks out the backend services for getting categories. See the angular in memory documentation for more details.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffInMemoryBackendCategoryService implements InMemoryDbService {\n protected _categories: DaffCategory[] = [];\n protected _categoryPageMetadata: DaffCategoryPageMetadata;\n\n /**\n * The collection of categories in the backend.\n */\n get categories(): DaffCategory[] {\n return this._categories;\n }\n\n /**\n * The metadata associated with the current page.\n */\n get categoryPageMetadata(): DaffCategoryPageMetadata {\n return this._categoryPageMetadata;\n }\n\n constructor(\n private categoryFactory: DaffCategoryFactory,\n private metadataFactory: DaffCategoryPageMetadataFactory,\n private productInMemoryBackendService: DaffInMemoryBackendProductService,\n ) {\n this._categories = [\n '1001',\n '1002',\n '1003',\n '1004',\n '1005',\n '1006',\n '1007',\n '1008',\n '1009',\n '1010',\n ].map(id => {\n const allCategoryProductIds = this.generateProductIdSubset(this.productInMemoryBackendService.products);\n\n return this.categoryFactory.create({ id, url: `/${id}`, product_ids: allCategoryProductIds, count: allCategoryProductIds.length });\n });\n }\n\n /**\n * @docs-private\n */\n parseRequestUrl(url: string, utils: RequestInfoUtilities): ParsedRequestUrl {\n return utils.parseRequestUrl(url);\n }\n\n /**\n * @docs-private\n */\n createDb(): any {\n return {\n categories: this.categories,\n };\n }\n\n /**\n * Get a category.\n *\n * @param reqInfo\n */\n get(reqInfo: any) {\n // this method is overloaded for both get by ID and URL so we check both\n const category = this.categories.filter(({ id, url }) => id === reqInfo.id || daffUriTruncateLeadingSlash(url) === reqInfo.id)[0];\n\n if (category) {\n this._categoryPageMetadata = this.metadataFactory.create({\n id: reqInfo.id,\n pageSize: this.generatePageSize(reqInfo),\n currentPage: this.getCurrentPageParam(reqInfo),\n totalPages: this.getTotalPages(category.product_ids, this.generatePageSize(reqInfo)),\n product_ids: this.trimProductIdsToSinglePage(category.product_ids, this.getCurrentPageParam(reqInfo), this.generatePageSize(reqInfo)),\n count: category.total_products,\n });\n\n return reqInfo.utils.createResponse$(() => ({\n body: {\n category,\n categoryPageMetadata: this._categoryPageMetadata,\n products: this.productInMemoryBackendService.products,\n },\n status: STATUS.OK,\n }));\n } else {\n this._categoryPageMetadata = null;\n return reqInfo.utils.createResponse$(() => ({\n body: {},\n status: STATUS.NOT_FOUND,\n }));\n }\n\n }\n\n protected getTotalPages(allIds: DaffProduct['id'][], pageSize: number) {\n return Math.ceil(allIds.length/pageSize);\n }\n\n protected trimProductIdsToSinglePage(allIds: any[], currentPage: number, pageSize: number) {\n const tempIds = [...allIds];\n tempIds.splice(0, (currentPage-1) * pageSize);\n tempIds.splice(pageSize, tempIds.length-pageSize);\n\n return tempIds;\n }\n\n protected generateProductIdSubset(products: DaffProduct[]): DaffProduct['id'][] {\n return randomSubset(products).map(product => product.id);\n }\n\n protected generatePageSize(reqInfo) {\n if(reqInfo.req.params.map && reqInfo.req.params.map.get('pageSize') && reqInfo.req.params.map.get('pageSize')[0]) {\n return parseInt(reqInfo.req.params.map.get('pageSize')[0], 10);\n }\n return 10;\n }\n\n protected getCurrentPageParam(reqInfo) {\n if(reqInfo.req.params.map && reqInfo.req.params.map.get('currentPage') && reqInfo.req.params.map.get('currentPage')[0]) {\n return parseInt(reqInfo.req.params.map.get('currentPage')[0], 10);\n }\n return 1;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"daffodil-category-driver-in-memory.mjs","sources":["../../../libs/category/driver/in-memory/src/drivers/category.service.ts","../../../libs/category/driver/in-memory/src/drivers/category-driver.module.ts","../../../libs/category/driver/in-memory/src/backend/category.service.ts","../../../libs/category/driver/in-memory/src/daffodil-category-driver-in-memory.ts"],"sourcesContent":["import {\n HttpClient,\n HttpParams,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport {\n DaffGetCategoryResponse,\n DaffCategoryIdRequest,\n DaffCategoryUrlRequest,\n} from '@daffodil/category';\nimport { DaffCategoryServiceInterface } from '@daffodil/category/driver';\nimport { daffUriTruncateLeadingSlash } from '@daffodil/core/routing';\n\n/**\n * The category in memory driver for mocking the {@link DaffCategoryDriver} with in memory data.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffInMemoryCategoryService implements DaffCategoryServiceInterface {\n url = '/api/category/';\n\n constructor(private http: HttpClient) {}\n\n get(categoryRequest: DaffCategoryIdRequest): Observable<DaffGetCategoryResponse> {\n const params = new HttpParams()\n .set('pageSize', categoryRequest.pageSize ? categoryRequest.pageSize.toString() : null)\n .set('currentPage', categoryRequest.currentPage ? categoryRequest.currentPage.toString() : null);\n\n return this.http.get<DaffGetCategoryResponse>(this.url + categoryRequest.id, { params });\n }\n\n getByUrl(categoryRequest: DaffCategoryUrlRequest): Observable<DaffGetCategoryResponse> {\n const params = new HttpParams()\n .set('pageSize', categoryRequest.pageSize ? categoryRequest.pageSize.toString() : null)\n .set('currentPage', categoryRequest.currentPage ? categoryRequest.currentPage.toString() : null);\n\n return this.http.get<DaffGetCategoryResponse>(`${this.url}${daffUriTruncateLeadingSlash(categoryRequest.url)}`, { params });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n NgModule,\n ModuleWithProviders,\n} from '@angular/core';\n\nimport { DaffCategoryDriver } from '@daffodil/category/driver';\n\nimport { DaffInMemoryCategoryService } from './category.service';\n\n/**\n * A module that provides the {@link DaffInMemoryCategoryService} for the {@link DaffCategoryDriver} token.\n */\n@NgModule({\n imports: [\n CommonModule,\n ],\n})\nexport class DaffCategoryInMemoryDriverModule {\n static forRoot(): ModuleWithProviders<DaffCategoryInMemoryDriverModule> {\n return {\n ngModule: DaffCategoryInMemoryDriverModule,\n providers: [\n {\n provide: DaffCategoryDriver,\n useExisting: DaffInMemoryCategoryService,\n },\n ],\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker';\nimport {\n InMemoryDbService,\n RequestInfoUtilities,\n ParsedRequestUrl,\n STATUS,\n} from 'angular-in-memory-web-api';\n\nimport {\n DaffCategory,\n DaffCategoryPageMetadata,\n} from '@daffodil/category';\nimport {\n DaffCategoryFactory,\n DaffCategoryPageMetadataFactory,\n} from '@daffodil/category/testing';\nimport { collect } from '@daffodil/core';\nimport { daffUriTruncateLeadingSlash } from '@daffodil/core/routing';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffInMemoryBackendProductService } from '@daffodil/product/driver/in-memory';\n\n/**\n * An in-memory service that mocks out the backend services for getting categories. See the angular in memory documentation for more details.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffInMemoryBackendCategoryService implements InMemoryDbService {\n protected _root: DaffCategory;\n protected _categories: DaffCategory[] = [];\n protected _categoryPageMetadata: DaffCategoryPageMetadata;\n\n get rootCategory(): DaffCategory {\n return this._root;\n }\n\n /**\n * The collection of categories in the backend.\n */\n get categories(): DaffCategory[] {\n return this._categories;\n }\n\n /**\n * The metadata associated with the current page.\n */\n get categoryPageMetadata(): DaffCategoryPageMetadata {\n return this._categoryPageMetadata;\n }\n\n constructor(\n private categoryFactory: DaffCategoryFactory,\n private metadataFactory: DaffCategoryPageMetadataFactory,\n private productInMemoryBackendService: DaffInMemoryBackendProductService,\n ) {\n this._root = this.categoryFactory.createTree(\n 3,\n this.productInMemoryBackendService.products.map(({ id }) => id),\n );\n this._categories = collect(\n this._root,\n (category) => category?.children || [],\n );\n }\n\n /**\n * @docs-private\n */\n parseRequestUrl(url: string, utils: RequestInfoUtilities): ParsedRequestUrl {\n return utils.parseRequestUrl(url);\n }\n\n /**\n * @docs-private\n */\n createDb(): any {\n return {\n categories: this.categories,\n };\n }\n\n /**\n * Get a category.\n *\n * @param reqInfo\n */\n get(reqInfo: any) {\n // this method is overloaded for both get by ID and URL so we check both\n const category = this.categories.filter(({ id, url }) => id === reqInfo.id || daffUriTruncateLeadingSlash(url) === reqInfo.id)[0];\n\n if (category) {\n this._categoryPageMetadata = this.metadataFactory.create({\n id: reqInfo.id,\n pageSize: this.generatePageSize(reqInfo),\n currentPage: this.getCurrentPageParam(reqInfo),\n totalPages: this.getTotalPages(category.product_ids, this.generatePageSize(reqInfo)),\n ids: this.trimProductIdsToSinglePage(category.product_ids, this.getCurrentPageParam(reqInfo), this.generatePageSize(reqInfo)),\n count: category.total_products,\n });\n\n return reqInfo.utils.createResponse$(() => ({\n body: {\n category,\n categoryPageMetadata: this._categoryPageMetadata,\n products: this.productInMemoryBackendService.products,\n },\n status: STATUS.OK,\n }));\n } else {\n this._categoryPageMetadata = null;\n return reqInfo.utils.createResponse$(() => ({\n body: {},\n status: STATUS.NOT_FOUND,\n }));\n }\n\n }\n\n protected getTotalPages(allIds: DaffProduct['id'][], pageSize: number) {\n return Math.ceil(allIds.length/pageSize);\n }\n\n protected trimProductIdsToSinglePage(allIds: any[], currentPage: number, pageSize: number) {\n const tempIds = [...allIds];\n tempIds.splice(0, (currentPage-1) * pageSize);\n tempIds.splice(pageSize, tempIds.length-pageSize);\n\n return tempIds;\n }\n\n protected generatePageSize(reqInfo) {\n if(reqInfo.req.params.map && reqInfo.req.params.map.get('pageSize') && reqInfo.req.params.map.get('pageSize')[0]) {\n return parseInt(reqInfo.req.params.map.get('pageSize')[0], 10);\n }\n return 10;\n }\n\n protected getCurrentPageParam(reqInfo) {\n if(reqInfo.req.params.map && reqInfo.req.params.map.get('currentPage') && reqInfo.req.params.map.get('currentPage')[0]) {\n return parseInt(reqInfo.req.params.map.get('currentPage')[0], 10);\n }\n return 1;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
@@ -46,15 +46,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
46
46
|
/**
|
47
47
|
* A module that mocks out the {@link DaffCategoryFacade} with {@link MockDaffCategoryFacade} for testing environments.
|
48
48
|
*/
|
49
|
-
class
|
49
|
+
class DaffCategoryStateTestingModule {
|
50
50
|
}
|
51
|
-
/** @nocollapse */
|
52
|
-
/** @nocollapse */
|
53
|
-
/** @nocollapse */
|
51
|
+
/** @nocollapse */ DaffCategoryStateTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryStateTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
52
|
+
/** @nocollapse */ DaffCategoryStateTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryStateTestingModule });
|
53
|
+
/** @nocollapse */ DaffCategoryStateTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryStateTestingModule, providers: [
|
54
54
|
{ provide: DaffCategoryFacade, useExisting: MockDaffCategoryFacade },
|
55
55
|
{ provide: DaffCategoryProductCollectionFacade, useExisting: MockDaffCollectionFacade },
|
56
56
|
] });
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type:
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryStateTestingModule, decorators: [{
|
58
58
|
type: NgModule,
|
59
59
|
args: [{
|
60
60
|
providers: [
|
@@ -68,5 +68,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
68
68
|
* Generated bundle index. Do not edit.
|
69
69
|
*/
|
70
70
|
|
71
|
-
export {
|
71
|
+
export { DaffCategoryStateTestingModule, MockDaffCategoryFacade };
|
72
72
|
//# sourceMappingURL=daffodil-category-state-testing.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"daffodil-category-state-testing.mjs","sources":["../../../libs/category/state/testing/src/mock-category-facade.ts","../../../libs/category/state/testing/src/category-testing.module.ts","../../../libs/category/state/testing/src/daffodil-category-state-testing.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Action } from '@ngrx/store';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { DaffCategory } from '@daffodil/category';\nimport { DaffCategoryFacadeInterface } from '@daffodil/category/state';\nimport { DaffCategoryReducerState } from '@daffodil/category/state';\nimport { DaffStateError } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\n/**\n * Can be used to mock out the {@link DaffCategoryFacade} in testing environments.\n *\n * @inheritdoc\n */\n@Injectable({ providedIn: 'root' })\nexport class MockDaffCategoryFacade implements DaffCategoryFacadeInterface {\n category$: BehaviorSubject<DaffCategory> = new BehaviorSubject(null);\n loadingState$: BehaviorSubject<DaffCategoryReducerState['daffState']> = new BehaviorSubject(null);\n loading$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n mutating$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n resolving$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n hasErrors$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n products$: BehaviorSubject<DaffProduct[]> = new BehaviorSubject([]);\n errors$: BehaviorSubject<DaffStateError[]> = new BehaviorSubject([]);\n isCategoryEmpty$: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n getCategoryById(id: DaffCategory['id']): BehaviorSubject<DaffCategory> {\n\t return new BehaviorSubject(null);\n };\n\n getProductsByCategory(categoryId: DaffCategory['id']): BehaviorSubject<DaffProduct[]> {\n\t return new BehaviorSubject([]);\n };\n\n getTotalProductsByCategory(categoryId: DaffCategory['id']): BehaviorSubject<number> {\n\t return new BehaviorSubject(null);\n };\n\n dispatch(action: Action) {};\n}\n","import { NgModule } from '@angular/core';\n\nimport {\n DaffCategoryFacade,\n DaffCategoryProductCollectionFacade,\n} from '@daffodil/category/state';\nimport { MockDaffCollectionFacade } from '@daffodil/core/state/testing';\n\nimport { MockDaffCategoryFacade } from './mock-category-facade';\n\n/**\n * A module that mocks out the {@link DaffCategoryFacade} with {@link MockDaffCategoryFacade} for testing environments.\n */\n@NgModule({\n providers: [\n { provide: DaffCategoryFacade, useExisting: MockDaffCategoryFacade },\n { provide: DaffCategoryProductCollectionFacade, useExisting: MockDaffCollectionFacade },\n ],\n})\nexport class
|
1
|
+
{"version":3,"file":"daffodil-category-state-testing.mjs","sources":["../../../libs/category/state/testing/src/mock-category-facade.ts","../../../libs/category/state/testing/src/category-testing.module.ts","../../../libs/category/state/testing/src/daffodil-category-state-testing.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Action } from '@ngrx/store';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { DaffCategory } from '@daffodil/category';\nimport { DaffCategoryFacadeInterface } from '@daffodil/category/state';\nimport { DaffCategoryReducerState } from '@daffodil/category/state';\nimport { DaffStateError } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\n/**\n * Can be used to mock out the {@link DaffCategoryFacade} in testing environments.\n *\n * @inheritdoc\n */\n@Injectable({ providedIn: 'root' })\nexport class MockDaffCategoryFacade implements DaffCategoryFacadeInterface {\n category$: BehaviorSubject<DaffCategory> = new BehaviorSubject(null);\n loadingState$: BehaviorSubject<DaffCategoryReducerState['daffState']> = new BehaviorSubject(null);\n loading$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n mutating$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n resolving$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n hasErrors$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n products$: BehaviorSubject<DaffProduct[]> = new BehaviorSubject([]);\n errors$: BehaviorSubject<DaffStateError[]> = new BehaviorSubject([]);\n isCategoryEmpty$: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n getCategoryById(id: DaffCategory['id']): BehaviorSubject<DaffCategory> {\n\t return new BehaviorSubject(null);\n };\n\n getProductsByCategory(categoryId: DaffCategory['id']): BehaviorSubject<DaffProduct[]> {\n\t return new BehaviorSubject([]);\n };\n\n getTotalProductsByCategory(categoryId: DaffCategory['id']): BehaviorSubject<number> {\n\t return new BehaviorSubject(null);\n };\n\n dispatch(action: Action) {};\n}\n","import { NgModule } from '@angular/core';\n\nimport {\n DaffCategoryFacade,\n DaffCategoryProductCollectionFacade,\n} from '@daffodil/category/state';\nimport { MockDaffCollectionFacade } from '@daffodil/core/state/testing';\n\nimport { MockDaffCategoryFacade } from './mock-category-facade';\n\n/**\n * A module that mocks out the {@link DaffCategoryFacade} with {@link MockDaffCategoryFacade} for testing environments.\n */\n@NgModule({\n providers: [\n { provide: DaffCategoryFacade, useExisting: MockDaffCategoryFacade },\n { provide: DaffCategoryProductCollectionFacade, useExisting: MockDaffCollectionFacade },\n ],\n})\nexport class DaffCategoryStateTestingModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAUA;;;;AAIG;MAEU,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;AAEE,QAAA,IAAA,CAAA,SAAS,GAAkC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AACrE,QAAA,IAAA,CAAA,aAAa,GAA2D,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAClG,QAAA,IAAA,CAAA,QAAQ,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,SAAS,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACjE,QAAA,IAAA,CAAA,UAAU,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,UAAU,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,SAAS,GAAmC,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AACpE,QAAA,IAAA,CAAA,OAAO,GAAsC,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AACrE,QAAA,IAAA,CAAA,gBAAgB,GAA6B,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAexE,KAAA;AAbC,IAAA,eAAe,CAAC,EAAsB,EAAA;AACrC,QAAA,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;KACjC;;AAED,IAAA,qBAAqB,CAAC,UAA8B,EAAA;AACnD,QAAA,OAAO,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;KAC/B;;AAED,IAAA,0BAA0B,CAAC,UAA8B,EAAA;AACxD,QAAA,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;KACjC;;IAED,QAAQ,CAAC,MAAc,EAAA,GAAI;;;sIAvBhB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,mBAAA,sBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACLlC;;AAEG;MAOU,8BAA8B,CAAA;;8IAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+IAA9B,8BAA8B,EAAA,CAAA,CAAA;AAA9B,mBAAA,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,EAL9B,SAAA,EAAA;AACT,QAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,sBAAsB,EAAE;AACpE,QAAA,EAAE,OAAO,EAAE,mCAAmC,EAAE,WAAW,EAAE,wBAAwB,EAAE;AACxF,KAAA,EAAA,CAAA,CAAA;2FAEU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,sBAAsB,EAAE;AACpE,wBAAA,EAAE,OAAO,EAAE,mCAAmC,EAAE,WAAW,EAAE,wBAAwB,EAAE;AACxF,qBAAA;AACF,iBAAA,CAAA;;;AClBD;;AAEG;;;;"}
|
@@ -7,11 +7,11 @@ import { createFeatureSelector, createSelector, defaultMemoize, select, combineR
|
|
7
7
|
import { getDaffProductSelectors, DaffProductGridLoadSuccess, DaffProductStateModule, daffProductReducerInitialState, daffProductProvideExtraReducers } from '@daffodil/product/state';
|
8
8
|
import { of, asyncScheduler } from 'rxjs';
|
9
9
|
import { withLatestFrom, map, throttleTime, switchMap, catchError, mergeMap } from 'rxjs/operators';
|
10
|
-
import { DaffCategoryRequestKind
|
10
|
+
import { DaffCategoryRequestKind } from '@daffodil/category';
|
11
11
|
import { DaffCategoryDriver } from '@daffodil/category/driver';
|
12
12
|
import { daffToggleRequestOnFilters, daffRemoveRequestsFromFilters, daffClearFilters, daffApplyRequestsToFilters, daffFiltersToRequests } from '@daffodil/core';
|
13
13
|
import { createEntityAdapter } from '@ngrx/entity';
|
14
|
-
import { daffOperationInitialState, daffOperationFailed, daffCompleteOperation, daffStartMutation, daffStartResolution, daffCollectionReducerInitialState, getCollectionStateAdapter, daffOperationStateSelectorFactory, daffCollectionSelectorFactory, DaffCollectionFacade, daffComposeReducers, daffIdentityReducer } from '@daffodil/core/state';
|
14
|
+
import { daffOperationInitialState, daffOperationFailed, daffCompleteOperation, daffStartMutation, daffStartResolution, daffCollectionReducerInitialState, getCollectionStateAdapter, daffOperationStateSelectorFactory, daffCollectionSelectorFactory, DaffCollectionFacade, daffTransformErrorToStateError, daffComposeReducers, daffIdentityReducer } from '@daffodil/core/state';
|
15
15
|
|
16
16
|
/**
|
17
17
|
* The possible types of category page filter actions.
|
@@ -548,6 +548,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
548
548
|
}]
|
549
549
|
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
550
550
|
|
551
|
+
/**
|
552
|
+
* Transforms `DaffError`s into `DaffStateError`s before they are serialized into state.
|
553
|
+
* Can be used to further refine Daffodil errors into more specific app errors.
|
554
|
+
*/
|
555
|
+
const DAFF_CATEGORY_ERROR_MATCHER = new InjectionToken('DAFF_CATEGORY_ERROR_MATCHER', { factory: () => daffTransformErrorToStateError });
|
556
|
+
|
551
557
|
class DaffCategoryPageFilterEffects {
|
552
558
|
constructor(actions$, driver, errorMatcher, facade) {
|
553
559
|
this.actions$ = actions$;
|
@@ -753,5 +759,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
753
759
|
* Generated bundle index. Do not edit.
|
754
760
|
*/
|
755
761
|
|
756
|
-
export { DAFF_CATEGORY_EXTRA_REDUCERS, DAFF_CATEGORY_STORE_FEATURE_KEY, DaffCategoryActionTypes, DaffCategoryFacade, DaffCategoryLoad, DaffCategoryLoadFailure, DaffCategoryLoadSuccess, DaffCategoryPageActionTypes, DaffCategoryPageApplyFilters, DaffCategoryPageChangeCurrentPage, DaffCategoryPageChangeFilters, DaffCategoryPageChangePageSize, DaffCategoryPageChangeSortingOption, DaffCategoryPageClearFilters, DaffCategoryPageLoad, DaffCategoryPageLoadByUrl, DaffCategoryPageLoadFailure, DaffCategoryPageLoadSuccess, DaffCategoryPageProductCollectionActionTypes, DaffCategoryPageRemoveFilters, DaffCategoryPageReplaceFilters, DaffCategoryPageToggleFilter, DaffCategoryProductCollectionFacade, DaffCategoryProductStateModule, DaffCategoryStateModule, daffCategoryEntitiesReducer, daffCategoryPageMetadataReducer, daffCategoryProvideExtraReducers, daffCategoryReducer, daffCategoryReducers, getDaffCategorySelectors };
|
762
|
+
export { DAFF_CATEGORY_ERROR_MATCHER, DAFF_CATEGORY_EXTRA_REDUCERS, DAFF_CATEGORY_STORE_FEATURE_KEY, DaffCategoryActionTypes, DaffCategoryFacade, DaffCategoryLoad, DaffCategoryLoadFailure, DaffCategoryLoadSuccess, DaffCategoryPageActionTypes, DaffCategoryPageApplyFilters, DaffCategoryPageChangeCurrentPage, DaffCategoryPageChangeFilters, DaffCategoryPageChangePageSize, DaffCategoryPageChangeSortingOption, DaffCategoryPageClearFilters, DaffCategoryPageLoad, DaffCategoryPageLoadByUrl, DaffCategoryPageLoadFailure, DaffCategoryPageLoadSuccess, DaffCategoryPageProductCollectionActionTypes, DaffCategoryPageRemoveFilters, DaffCategoryPageReplaceFilters, DaffCategoryPageToggleFilter, DaffCategoryProductCollectionFacade, DaffCategoryProductStateModule, DaffCategoryStateModule, daffCategoryEntitiesReducer, daffCategoryPageMetadataReducer, daffCategoryProvideExtraReducers, daffCategoryReducer, daffCategoryReducers, getDaffCategorySelectors };
|
757
763
|
//# sourceMappingURL=daffodil-category-state.mjs.map
|