@daffodil/category 0.64.1 → 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.
Files changed (46) hide show
  1. package/driver/in-memory/backend/category.service.d.ts +2 -1
  2. package/esm2020/driver/in-memory/backend/category.service.mjs +8 -21
  3. package/esm2020/public_api.mjs +1 -2
  4. package/esm2020/state/effects/category-page-filter.effects.mjs +3 -2
  5. package/esm2020/state/effects/category-page.effects.mjs +3 -2
  6. package/esm2020/state/effects/category.effects.mjs +2 -2
  7. package/esm2020/state/injection-tokens/error-matcher.token.mjs +8 -0
  8. package/esm2020/state/injection-tokens/public_api.mjs +2 -0
  9. package/esm2020/state/public_api.mjs +2 -1
  10. package/esm2020/state/testing/category-testing.module.mjs +6 -6
  11. package/esm2020/state/testing/public_api.mjs +2 -2
  12. package/esm2020/testing/factories/category-breadcrumb.factory.mjs +29 -0
  13. package/esm2020/testing/factories/category.factory.mjs +41 -18
  14. package/esm2020/testing/factories/public_api.mjs +4 -3
  15. package/fesm2015/daffodil-category-driver-in-memory.mjs +7 -20
  16. package/fesm2015/daffodil-category-driver-in-memory.mjs.map +1 -1
  17. package/fesm2015/daffodil-category-state-testing.mjs +6 -6
  18. package/fesm2015/daffodil-category-state-testing.mjs.map +1 -1
  19. package/fesm2015/daffodil-category-state.mjs +9 -3
  20. package/fesm2015/daffodil-category-state.mjs.map +1 -1
  21. package/fesm2015/daffodil-category-testing.mjs +52 -18
  22. package/fesm2015/daffodil-category-testing.mjs.map +1 -1
  23. package/fesm2015/daffodil-category.mjs +1 -10
  24. package/fesm2015/daffodil-category.mjs.map +1 -1
  25. package/fesm2020/daffodil-category-driver-in-memory.mjs +7 -20
  26. package/fesm2020/daffodil-category-driver-in-memory.mjs.map +1 -1
  27. package/fesm2020/daffodil-category-state-testing.mjs +6 -6
  28. package/fesm2020/daffodil-category-state-testing.mjs.map +1 -1
  29. package/fesm2020/daffodil-category-state.mjs +9 -3
  30. package/fesm2020/daffodil-category-state.mjs.map +1 -1
  31. package/fesm2020/daffodil-category-testing.mjs +64 -18
  32. package/fesm2020/daffodil-category-testing.mjs.map +1 -1
  33. package/fesm2020/daffodil-category.mjs +1 -10
  34. package/fesm2020/daffodil-category.mjs.map +1 -1
  35. package/package.json +1 -1
  36. package/public_api.d.ts +0 -1
  37. package/state/public_api.d.ts +1 -0
  38. package/state/testing/category-testing.module.d.ts +4 -4
  39. package/state/testing/public_api.d.ts +1 -1
  40. package/testing/factories/category-breadcrumb.factory.d.ts +17 -0
  41. package/testing/factories/category.factory.d.ts +13 -8
  42. package/testing/factories/public_api.d.ts +3 -2
  43. package/esm2020/injection-tokens/error-matcher.token.mjs +0 -8
  44. package/esm2020/injection-tokens/public_api.mjs +0 -2
  45. /package/{injection-tokens → state/injection-tokens}/error-matcher.token.d.ts +0 -0
  46. /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 MockCategory {
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.description = faker.random.words(Math.floor(Math.random() * 20));
14
- this.meta_title = faker.commerce.productMaterial();
15
- this.meta_description = faker.random.words(Math.floor(Math.random() * 20));
16
- this.breadcrumbs = [{
17
- id: faker.datatype.uuid(),
18
- name: faker.commerce.productMaterial(),
19
- level: faker.datatype.number({ min: 1, max: 5 }),
20
- url: faker.commerce.productMaterial(),
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 = 1;
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()}.html`;\n canonicalUrl = faker.internet.url();\n name = faker.commerce.productMaterial();\n description = faker.random.words(Math.floor(Math.random() * 20));\n meta_title = faker.commerce.productMaterial();\n meta_description = faker.random.words(Math.floor(Math.random() * 20));\n breadcrumbs = [{\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 children_count = faker.datatype.number({ min: 1, max: 10 });\n total_products = 1;\n product_ids = [faker.datatype.number({ min: 1, max: 100 }).toString()];\n}\n\n/**\n * A factory for creating a {@link DaffCategory}.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCategoryFactory extends DaffModelFactory<DaffCategory>{\n constructor() {\n super(MockCategory);\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":[],"mappings":"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"}
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 { DAFF_CATEGORY_ERROR_MATCHER, DaffCategoryRequestKind };
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/injection-tokens/error-matcher.token.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","import { InjectionToken } from '@angular/core';\n\nimport { daffTransformErrorToStateError } from '@daffodil/core/state';\n\n/**\n * Transforms `DaffError`s into `DaffStateError`s before they are serialized into state.\n * Can be used to further refine Daffodil errors into more specific app errors.\n */\nexport const DAFF_CATEGORY_ERROR_MATCHER = new InjectionToken<typeof daffTransformErrorToStateError>(\n 'DAFF_CATEGORY_ERROR_MATCHER',\n { factory: () => daffTransformErrorToStateError },\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;;ACjCD;;;AAGG;AACU,MAAA,2BAA2B,GAAG,IAAI,cAAc,CAC3D,6BAA6B,EAC7B,EAAE,OAAO,EAAE,MAAM,8BAA8B,EAAE;;ACVnD;;AAEG;;;;"}
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 { randomSubset } from '@daffodil/core';
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._categories = [
83
- '1001',
84
- '1002',
85
- '1003',
86
- '1004',
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
- product_ids: this.trimProductIdsToSinglePage(category.product_ids, this.getCurrentPageParam(reqInfo), this.generatePageSize(reqInfo)),
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 DaffCategoryTestingModule {
49
+ class DaffCategoryStateTestingModule {
50
50
  }
51
- /** @nocollapse */ DaffCategoryTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
52
- /** @nocollapse */ DaffCategoryTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryTestingModule });
53
- /** @nocollapse */ DaffCategoryTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryTestingModule, providers: [
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: DaffCategoryTestingModule, decorators: [{
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 { DaffCategoryTestingModule, MockDaffCategoryFacade };
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 DaffCategoryTestingModule { }\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,yBAAyB,CAAA;;yIAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;0IAAzB,yBAAyB,EAAA,CAAA,CAAA;AAAzB,mBAAA,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EALzB,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,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,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;;;;"}
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, DAFF_CATEGORY_ERROR_MATCHER } from '@daffodil/category';
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