@ngrx-traits/common 12.2.0 → 13.0.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/crud-entities/crud-entities.model.d.ts +1 -3
- package/entities-pagination/entities-pagination.model.d.ts +8 -11
- package/entities-pagination/entities-pagination.model.internal.d.ts +9 -1
- package/entities-pagination/entities-pagination.trait.d.ts +4 -5
- package/esm2020/async-action/async-action.model.mjs +2 -0
- package/esm2020/async-action/async-action.trait.mjs +110 -0
- package/esm2020/async-action/index.mjs +3 -0
- package/esm2020/crud-entities/crud-entities.model.mjs +8 -0
- package/esm2020/crud-entities/crud-entities.trait.actions.mjs +20 -0
- package/esm2020/crud-entities/crud-entities.trait.mjs +57 -0
- package/esm2020/crud-entities/crud-entities.trait.mutators.mjs +121 -0
- package/esm2020/crud-entities/crud-entities.trait.reducer.mjs +17 -0
- package/esm2020/crud-entities/crud-entities.trait.selectors.mjs +54 -0
- package/esm2020/crud-entities/index.mjs +3 -0
- package/esm2020/entities-pagination/entities-pagination.model.internal.mjs +2 -0
- package/esm2020/entities-pagination/entities-pagination.model.mjs +2 -0
- package/esm2020/entities-pagination/entities-pagination.trait.actions.mjs +20 -0
- package/esm2020/entities-pagination/entities-pagination.trait.effects.mjs +62 -0
- package/esm2020/entities-pagination/entities-pagination.trait.mjs +93 -0
- package/esm2020/entities-pagination/entities-pagination.trait.mutators.mjs +55 -0
- package/esm2020/entities-pagination/entities-pagination.trait.reducer.mjs +87 -0
- package/esm2020/entities-pagination/entities-pagination.trait.selectors.mjs +84 -0
- package/esm2020/entities-pagination/index.mjs +3 -0
- package/esm2020/filter-entities/filter-entities.model.internal.mjs +2 -0
- package/esm2020/filter-entities/filter-entities.model.mjs +2 -0
- package/esm2020/filter-entities/filter-entities.trait.actions.mjs +16 -0
- package/esm2020/filter-entities/filter-entities.trait.effect.mjs +59 -0
- package/esm2020/filter-entities/filter-entities.trait.mjs +73 -0
- package/esm2020/filter-entities/filter-entities.trait.mutators.mjs +10 -0
- package/esm2020/filter-entities/filter-entities.trait.reducer.mjs +11 -0
- package/esm2020/filter-entities/filter-entities.trait.selectors.mjs +9 -0
- package/esm2020/filter-entities/index.mjs +3 -0
- package/esm2020/index.mjs +12 -0
- package/esm2020/load-entities/index.mjs +3 -0
- package/esm2020/load-entities/load-entities.model.mjs +2 -0
- package/esm2020/load-entities/load-entities.mutators.mjs +7 -0
- package/esm2020/load-entities/load-entities.trait.actions.mjs +10 -0
- package/esm2020/load-entities/load-entities.trait.mjs +62 -0
- package/esm2020/load-entities/load-entities.trait.reducer.mjs +27 -0
- package/esm2020/load-entities/load-entities.trait.selectors.mjs +38 -0
- package/esm2020/load-entities/load-entities.utils.mjs +10 -0
- package/esm2020/load-entity/index.mjs +3 -0
- package/esm2020/load-entity/load-entity.model.mjs +2 -0
- package/esm2020/load-entity/load-entity.traits.mjs +74 -0
- package/esm2020/ngrx-traits-common.mjs +5 -0
- package/esm2020/public_api.mjs +2 -0
- package/esm2020/reset/index.mjs +2 -0
- package/esm2020/reset/reset.trait.mjs +39 -0
- package/esm2020/select-entities/index.mjs +4 -0
- package/esm2020/select-entities/select-entities.model.mjs +2 -0
- package/esm2020/select-entities/select-entities.trait.actions.mjs +11 -0
- package/esm2020/select-entities/select-entities.trait.mjs +54 -0
- package/esm2020/select-entities/select-entities.trait.mutators.mjs +27 -0
- package/esm2020/select-entities/select-entities.trait.reducer.mjs +42 -0
- package/esm2020/select-entities/select-entities.trait.selectors.mjs +28 -0
- package/esm2020/select-entities/select-entities.utils.mjs +30 -0
- package/esm2020/select-entity/index.mjs +3 -0
- package/esm2020/select-entity/select-entity.model.mjs +2 -0
- package/esm2020/select-entity/select-entity.trait.actions.mjs +9 -0
- package/esm2020/select-entity/select-entity.trait.mjs +51 -0
- package/esm2020/select-entity/select-entity.trait.mutators.mjs +26 -0
- package/esm2020/select-entity/select-entity.trait.reducer.mjs +35 -0
- package/esm2020/select-entity/select-entity.trait.selectors.mjs +13 -0
- package/esm2020/set-entity/index.mjs +3 -0
- package/esm2020/set-entity/set-entity.model.mjs +2 -0
- package/esm2020/set-entity/set-entity.trait.mjs +58 -0
- package/esm2020/sort-entities/index.mjs +4 -0
- package/esm2020/sort-entities/sort-entities.model.mjs +2 -0
- package/esm2020/sort-entities/sort-entities.trait.actions.mjs +8 -0
- package/esm2020/sort-entities/sort-entities.trait.effect.mjs +28 -0
- package/esm2020/sort-entities/sort-entities.trait.mjs +59 -0
- package/esm2020/sort-entities/sort-entities.trait.mutators.mjs +17 -0
- package/esm2020/sort-entities/sort-entities.trait.reducer.mjs +28 -0
- package/esm2020/sort-entities/sort-entities.trait.selectors.mjs +9 -0
- package/esm2020/sort-entities/sort-entities.utils.mjs +63 -0
- package/fesm2015/{ngrx-traits-common.js → ngrx-traits-common.mjs} +61 -82
- package/fesm2015/ngrx-traits-common.mjs.map +1 -0
- package/fesm2020/ngrx-traits-common.mjs +1747 -0
- package/fesm2020/ngrx-traits-common.mjs.map +1 -0
- package/load-entity/load-entity.traits.d.ts +1 -1
- package/package.json +27 -15
- package/reset/reset.trait.d.ts +3 -4
- package/set-entity/set-entity.trait.d.ts +1 -1
- package/bundles/ngrx-traits-common.umd.js +0 -2194
- package/bundles/ngrx-traits-common.umd.js.map +0 -1
- package/esm2015/async-action/async-action.model.js +0 -2
- package/esm2015/async-action/async-action.model.js.map +0 -1
- package/esm2015/async-action/async-action.trait.js +0 -101
- package/esm2015/async-action/async-action.trait.js.map +0 -1
- package/esm2015/async-action/index.js +0 -3
- package/esm2015/async-action/index.js.map +0 -1
- package/esm2015/crud-entities/crud-entities.model.js +0 -8
- package/esm2015/crud-entities/crud-entities.model.js.map +0 -1
- package/esm2015/crud-entities/crud-entities.trait.actions.js +0 -20
- package/esm2015/crud-entities/crud-entities.trait.actions.js.map +0 -1
- package/esm2015/crud-entities/crud-entities.trait.js +0 -57
- package/esm2015/crud-entities/crud-entities.trait.js.map +0 -1
- package/esm2015/crud-entities/crud-entities.trait.mutators.js +0 -101
- package/esm2015/crud-entities/crud-entities.trait.mutators.js.map +0 -1
- package/esm2015/crud-entities/crud-entities.trait.reducer.js +0 -15
- package/esm2015/crud-entities/crud-entities.trait.reducer.js.map +0 -1
- package/esm2015/crud-entities/crud-entities.trait.selectors.js +0 -70
- package/esm2015/crud-entities/crud-entities.trait.selectors.js.map +0 -1
- package/esm2015/crud-entities/index.js +0 -3
- package/esm2015/crud-entities/index.js.map +0 -1
- package/esm2015/entities-pagination/entities-pagination.model.internal.js +0 -2
- package/esm2015/entities-pagination/entities-pagination.model.internal.js.map +0 -1
- package/esm2015/entities-pagination/entities-pagination.model.js +0 -2
- package/esm2015/entities-pagination/entities-pagination.model.js.map +0 -1
- package/esm2015/entities-pagination/entities-pagination.trait.actions.js +0 -20
- package/esm2015/entities-pagination/entities-pagination.trait.actions.js.map +0 -1
- package/esm2015/entities-pagination/entities-pagination.trait.effects.js +0 -54
- package/esm2015/entities-pagination/entities-pagination.trait.effects.js.map +0 -1
- package/esm2015/entities-pagination/entities-pagination.trait.js +0 -94
- package/esm2015/entities-pagination/entities-pagination.trait.js.map +0 -1
- package/esm2015/entities-pagination/entities-pagination.trait.mutators.js +0 -23
- package/esm2015/entities-pagination/entities-pagination.trait.mutators.js.map +0 -1
- package/esm2015/entities-pagination/entities-pagination.trait.reducer.js +0 -33
- package/esm2015/entities-pagination/entities-pagination.trait.reducer.js.map +0 -1
- package/esm2015/entities-pagination/entities-pagination.trait.selectors.js +0 -65
- package/esm2015/entities-pagination/entities-pagination.trait.selectors.js.map +0 -1
- package/esm2015/entities-pagination/index.js +0 -3
- package/esm2015/entities-pagination/index.js.map +0 -1
- package/esm2015/filter-entities/filter-entities.model.internal.js +0 -2
- package/esm2015/filter-entities/filter-entities.model.internal.js.map +0 -1
- package/esm2015/filter-entities/filter-entities.model.js +0 -2
- package/esm2015/filter-entities/filter-entities.model.js.map +0 -1
- package/esm2015/filter-entities/filter-entities.trait.actions.js +0 -16
- package/esm2015/filter-entities/filter-entities.trait.actions.js.map +0 -1
- package/esm2015/filter-entities/filter-entities.trait.effect.js +0 -56
- package/esm2015/filter-entities/filter-entities.trait.effect.js.map +0 -1
- package/esm2015/filter-entities/filter-entities.trait.js +0 -73
- package/esm2015/filter-entities/filter-entities.trait.js.map +0 -1
- package/esm2015/filter-entities/filter-entities.trait.mutators.js +0 -7
- package/esm2015/filter-entities/filter-entities.trait.mutators.js.map +0 -1
- package/esm2015/filter-entities/filter-entities.trait.reducer.js +0 -9
- package/esm2015/filter-entities/filter-entities.trait.reducer.js.map +0 -1
- package/esm2015/filter-entities/filter-entities.trait.selectors.js +0 -9
- package/esm2015/filter-entities/filter-entities.trait.selectors.js.map +0 -1
- package/esm2015/filter-entities/index.js +0 -3
- package/esm2015/filter-entities/index.js.map +0 -1
- package/esm2015/index.js +0 -12
- package/esm2015/index.js.map +0 -1
- package/esm2015/load-entities/index.js +0 -3
- package/esm2015/load-entities/index.js.map +0 -1
- package/esm2015/load-entities/load-entities.model.js +0 -2
- package/esm2015/load-entities/load-entities.model.js.map +0 -1
- package/esm2015/load-entities/load-entities.mutators.js +0 -8
- package/esm2015/load-entities/load-entities.mutators.js.map +0 -1
- package/esm2015/load-entities/load-entities.trait.actions.js +0 -10
- package/esm2015/load-entities/load-entities.trait.actions.js.map +0 -1
- package/esm2015/load-entities/load-entities.trait.js +0 -62
- package/esm2015/load-entities/load-entities.trait.js.map +0 -1
- package/esm2015/load-entities/load-entities.trait.reducer.js +0 -12
- package/esm2015/load-entities/load-entities.trait.reducer.js.map +0 -1
- package/esm2015/load-entities/load-entities.trait.selectors.js +0 -33
- package/esm2015/load-entities/load-entities.trait.selectors.js.map +0 -1
- package/esm2015/load-entities/load-entities.utils.js +0 -10
- package/esm2015/load-entities/load-entities.utils.js.map +0 -1
- package/esm2015/load-entity/index.js +0 -3
- package/esm2015/load-entity/index.js.map +0 -1
- package/esm2015/load-entity/load-entity.model.js +0 -2
- package/esm2015/load-entity/load-entity.model.js.map +0 -1
- package/esm2015/load-entity/load-entity.traits.js +0 -71
- package/esm2015/load-entity/load-entity.traits.js.map +0 -1
- package/esm2015/ngrx-traits-common.js +0 -5
- package/esm2015/ngrx-traits-common.js.map +0 -1
- package/esm2015/public_api.js +0 -2
- package/esm2015/public_api.js.map +0 -1
- package/esm2015/reset/index.js +0 -2
- package/esm2015/reset/index.js.map +0 -1
- package/esm2015/reset/reset.trait.js +0 -69
- package/esm2015/reset/reset.trait.js.map +0 -1
- package/esm2015/select-entities/index.js +0 -4
- package/esm2015/select-entities/index.js.map +0 -1
- package/esm2015/select-entities/select-entities.model.js +0 -2
- package/esm2015/select-entities/select-entities.model.js.map +0 -1
- package/esm2015/select-entities/select-entities.trait.actions.js +0 -11
- package/esm2015/select-entities/select-entities.trait.actions.js.map +0 -1
- package/esm2015/select-entities/select-entities.trait.js +0 -54
- package/esm2015/select-entities/select-entities.trait.js.map +0 -1
- package/esm2015/select-entities/select-entities.trait.mutators.js +0 -21
- package/esm2015/select-entities/select-entities.trait.mutators.js.map +0 -1
- package/esm2015/select-entities/select-entities.trait.reducer.js +0 -40
- package/esm2015/select-entities/select-entities.trait.reducer.js.map +0 -1
- package/esm2015/select-entities/select-entities.trait.selectors.js +0 -28
- package/esm2015/select-entities/select-entities.trait.selectors.js.map +0 -1
- package/esm2015/select-entities/select-entities.utils.js +0 -25
- package/esm2015/select-entities/select-entities.utils.js.map +0 -1
- package/esm2015/select-entity/index.js +0 -3
- package/esm2015/select-entity/index.js.map +0 -1
- package/esm2015/select-entity/select-entity.model.js +0 -2
- package/esm2015/select-entity/select-entity.model.js.map +0 -1
- package/esm2015/select-entity/select-entity.trait.actions.js +0 -9
- package/esm2015/select-entity/select-entity.trait.actions.js.map +0 -1
- package/esm2015/select-entity/select-entity.trait.js +0 -51
- package/esm2015/select-entity/select-entity.trait.js.map +0 -1
- package/esm2015/select-entity/select-entity.trait.mutators.js +0 -17
- package/esm2015/select-entity/select-entity.trait.mutators.js.map +0 -1
- package/esm2015/select-entity/select-entity.trait.reducer.js +0 -26
- package/esm2015/select-entity/select-entity.trait.reducer.js.map +0 -1
- package/esm2015/select-entity/select-entity.trait.selectors.js +0 -13
- package/esm2015/select-entity/select-entity.trait.selectors.js.map +0 -1
- package/esm2015/set-entity/index.js +0 -3
- package/esm2015/set-entity/index.js.map +0 -1
- package/esm2015/set-entity/set-entity.model.js +0 -2
- package/esm2015/set-entity/set-entity.model.js.map +0 -1
- package/esm2015/set-entity/set-entity.trait.js +0 -55
- package/esm2015/set-entity/set-entity.trait.js.map +0 -1
- package/esm2015/sort-entities/index.js +0 -4
- package/esm2015/sort-entities/index.js.map +0 -1
- package/esm2015/sort-entities/sort-entities.model.js +0 -2
- package/esm2015/sort-entities/sort-entities.model.js.map +0 -1
- package/esm2015/sort-entities/sort-entities.trait.actions.js +0 -8
- package/esm2015/sort-entities/sort-entities.trait.actions.js.map +0 -1
- package/esm2015/sort-entities/sort-entities.trait.effect.js +0 -28
- package/esm2015/sort-entities/sort-entities.trait.effect.js.map +0 -1
- package/esm2015/sort-entities/sort-entities.trait.js +0 -59
- package/esm2015/sort-entities/sort-entities.trait.js.map +0 -1
- package/esm2015/sort-entities/sort-entities.trait.mutators.js +0 -13
- package/esm2015/sort-entities/sort-entities.trait.mutators.js.map +0 -1
- package/esm2015/sort-entities/sort-entities.trait.reducer.js +0 -22
- package/esm2015/sort-entities/sort-entities.trait.reducer.js.map +0 -1
- package/esm2015/sort-entities/sort-entities.trait.selectors.js +0 -10
- package/esm2015/sort-entities/sort-entities.trait.selectors.js.map +0 -1
- package/esm2015/sort-entities/sort-entities.utils.js +0 -63
- package/esm2015/sort-entities/sort-entities.utils.js.map +0 -1
- package/fesm2015/ngrx-traits-common.js.map +0 -1
|
@@ -44,9 +44,7 @@ export declare type CrudEntitiesSelectors<Entity> = {
|
|
|
44
44
|
* @param state
|
|
45
45
|
* @param props
|
|
46
46
|
*/
|
|
47
|
-
selectEntitiesChangesList: (state: LoadEntitiesState<Entity> & CrudEntitiesState<Entity
|
|
48
|
-
type: ChangeType;
|
|
49
|
-
}) => EntityChange<Entity>[];
|
|
47
|
+
selectEntitiesChangesList: (state: LoadEntitiesState<Entity> & CrudEntitiesState<Entity>) => EntityChange<Entity>[];
|
|
50
48
|
/**
|
|
51
49
|
* Returns the entities plus the kind of change,
|
|
52
50
|
* filters redundant changes ideal for a batch update
|
|
@@ -34,18 +34,11 @@ export declare type EntitiesPaginationActions = {
|
|
|
34
34
|
clearEntitiesPagesCache: ActionCreator<string, () => TypedAction<string>>;
|
|
35
35
|
};
|
|
36
36
|
export declare type EntitiesPaginationSelectors<T> = {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}) => boolean;
|
|
40
|
-
selectPageEntitiesList: (state: LoadEntitiesState<T> & EntitiesPaginationState, props?: {
|
|
41
|
-
page?: number;
|
|
42
|
-
}) => T[];
|
|
43
|
-
selectEntitiesPage: (state: LoadEntitiesState<T> & EntitiesPaginationState, props?: {
|
|
44
|
-
page?: number;
|
|
45
|
-
}) => PageModel<T>;
|
|
37
|
+
selectEntitiesCurrentPageList: (state: LoadEntitiesState<T> & EntitiesPaginationState) => T[];
|
|
38
|
+
selectEntitiesCurrentPage: (state: LoadEntitiesState<T> & EntitiesPaginationState) => PageModel<T>;
|
|
46
39
|
selectEntitiesPagedRequest: (state: LoadEntitiesState<T> & EntitiesPaginationState) => PagedRequest;
|
|
47
|
-
|
|
48
|
-
|
|
40
|
+
selectEntitiesCurrentPageInfo: (state: LoadEntitiesState<T> & EntitiesPaginationState) => PageInfoModel;
|
|
41
|
+
isLoadingEntitiesCurrentPage: (state: LoadEntitiesState<T> & EntitiesPaginationState) => boolean;
|
|
49
42
|
};
|
|
50
43
|
export declare type EntitiesPaginationMutators<T> = {
|
|
51
44
|
mergePaginatedEntities<S extends LoadEntitiesState<T> & EntitiesPaginationState>(entities: T[], total: number | undefined, state: S): S;
|
|
@@ -55,6 +48,10 @@ export interface PageModel<T> {
|
|
|
55
48
|
pageIndex: number;
|
|
56
49
|
total: number | undefined;
|
|
57
50
|
pageSize: number;
|
|
51
|
+
pagesCount: number | undefined;
|
|
52
|
+
hasPrevious: boolean;
|
|
53
|
+
hasNext: boolean;
|
|
54
|
+
cacheType: CacheType;
|
|
58
55
|
}
|
|
59
56
|
export interface PageInfoModel {
|
|
60
57
|
pageIndex: number;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ActionCreator, TypedAction } from '@ngrx/store/src/models';
|
|
2
|
-
import { EntitiesPaginationActions } from './entities-pagination.model';
|
|
2
|
+
import { EntitiesPaginationActions, EntitiesPaginationSelectors, EntitiesPaginationState } from './entities-pagination.model';
|
|
3
|
+
import { LoadEntitiesState } from '../load-entities/load-entities.model';
|
|
3
4
|
/**
|
|
4
5
|
* @internal
|
|
5
6
|
*/
|
|
@@ -10,3 +11,10 @@ export declare type ƟPaginationActions = EntitiesPaginationActions & {
|
|
|
10
11
|
index: number;
|
|
11
12
|
} & TypedAction<string>>;
|
|
12
13
|
};
|
|
14
|
+
/**
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export declare type ƟEntitiesPaginationSelectors<Entity> = EntitiesPaginationSelectors<Entity> & {
|
|
18
|
+
isEntitiesCurrentPageInCache: (state: LoadEntitiesState<Entity> & EntitiesPaginationState) => boolean;
|
|
19
|
+
isEntitiesNextPageInCache: (state: LoadEntitiesState<Entity> & EntitiesPaginationState) => boolean;
|
|
20
|
+
};
|
|
@@ -57,13 +57,12 @@ import { EntitiesPaginationConfig, EntitiesPaginationSelectors } from './entitie
|
|
|
57
57
|
* traits.actions.loadTodosLastPage()
|
|
58
58
|
* traits.actions.clearTodosPagesCache()
|
|
59
59
|
* // generated selectors
|
|
60
|
-
* traits.selectors.
|
|
61
|
-
* traits.selectors.
|
|
62
|
-
* traits.selectors.isLoadingTodosPage()
|
|
60
|
+
* traits.selectors.selectTodosCurrentPageList()
|
|
61
|
+
* traits.selectors.isLoadingTodosCurrentPage()
|
|
63
62
|
* // use isLoadingTodosPage over isLoadingTodos (which will return true even
|
|
64
63
|
* // if the page loading is not the current one)
|
|
65
|
-
* traits.selectors.
|
|
64
|
+
* traits.selectors.selectTodosCurrentPage()
|
|
66
65
|
* traits.selectors.selectTodosPagedRequest()// use in effects to get paging parameter
|
|
67
|
-
* traits.selectors.
|
|
66
|
+
* traits.selectors.selectTodosCurrentPageInfo()
|
|
68
67
|
*/
|
|
69
68
|
export declare function addEntitiesPaginationTrait<Entity>({ cacheType, pageSize, currentPage, pagesToCache, }?: EntitiesPaginationConfig): import("@ngrx-traits/core").TraitFactory<import("../load-entities/load-entities.model").LoadEntitiesState<Entity> & import("./entities-pagination.model").EntitiesPaginationState, import("./entities-pagination.model").EntitiesPaginationActions, EntitiesPaginationSelectors<Entity>, {}, "pagination", EntitiesPaginationConfig, import("@ngrx-traits/core").AllTraitConfigs>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtYWN0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9hc3luYy1hY3Rpb24vYXN5bmMtYWN0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3N0Zml4UHJvcHMsIFByZWZpeFByb3BzIH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvciwgTm90QWxsb3dlZENoZWNrIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgVHlwZWRBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZS9zcmMvbW9kZWxzJztcbmltcG9ydCB7IFN0YXR1c1N0YXRlIH0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcyc7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkNyZWF0b3JXaXRoT3B0aW9uYWxQcm9wczxUPiA9IFQgZXh0ZW5kcyB1bmRlZmluZWRcbiAgPyBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj5cbiAgOiBBY3Rpb25DcmVhdG9yPFxuICAgICAgc3RyaW5nLFxuICAgICAgKHByb3BzOiBUICYgTm90QWxsb3dlZENoZWNrPFQgJiBvYmplY3Q+KSA9PiBUICYgVHlwZWRBY3Rpb248c3RyaW5nPlxuICAgID47XG5cbnR5cGUgQXN5bmNBY3Rpb25zPFJlcXVlc3QsIFJlc3BvbnNlLCBGYWlsdXJlPiA9IHtcbiAgJyc6IEFjdGlvbkNyZWF0b3JXaXRoT3B0aW9uYWxQcm9wczxSZXF1ZXN0PjtcbiAgU3VjY2VzczogQWN0aW9uQ3JlYXRvcldpdGhPcHRpb25hbFByb3BzPFJlc3BvbnNlPjtcbiAgRmFpbDogQWN0aW9uQ3JlYXRvcldpdGhPcHRpb25hbFByb3BzPEZhaWx1cmU+O1xufTtcblxudHlwZSBTdGF0dXNTZWxlY3RvcnM8UyBleHRlbmRzIFN0YXR1c1N0YXRlPiA9IHtcbiAgaXNMb2FkaW5nOiAoc3RhdGU6IFMpID0+IGJvb2xlYW47XG4gIGlzU3VjY2VzczogKHN0YXRlOiBTKSA9PiBib29sZWFuO1xuICBpc0ZhaWw6IChzdGF0ZTogUykgPT4gYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEFzeW5jQWN0aW9uU3RhdGU8SiBleHRlbmRzIHN0cmluZz4gPSBQcmVmaXhQcm9wczxTdGF0dXNTdGF0ZSwgSj47XG5cbmV4cG9ydCB0eXBlIEFzeW5jQWN0aW9uU2VsZWN0b3JzPEogZXh0ZW5kcyBzdHJpbmcsIFM+ID0gUG9zdGZpeFByb3BzPFxuICBTdGF0dXNTZWxlY3RvcnM8Uz4sXG4gIEpcbj47XG5cbmV4cG9ydCB0eXBlIEFzeW5jQWN0aW9uQWN0aW9uczxcbiAgUmVxdWVzdCxcbiAgUmVzcG9uc2UsXG4gIEZhaWx1cmUsXG4gIEogZXh0ZW5kcyBzdHJpbmdcbj4gPSBQcmVmaXhQcm9wczxBc3luY0FjdGlvbnM8UmVxdWVzdCwgUmVzcG9uc2UsIEZhaWx1cmU+LCBKPjtcbiJdfQ==
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { createAction, createReducer, on } from '@ngrx/store';
|
|
2
|
+
import { camelCaseToSentence, createTraitFactory } from '@ngrx-traits/core';
|
|
3
|
+
/**
|
|
4
|
+
* Generates the typical ngrx code need to make a async action with
|
|
5
|
+
* a request, success and failure actions, plus a status property to track its progress
|
|
6
|
+
* and selectors to query the status. This trait can be added more thant once as long
|
|
7
|
+
* as the name prop is different.
|
|
8
|
+
*
|
|
9
|
+
* @param options - Config object for the trait factory
|
|
10
|
+
* @param options.name - Name of the main request action, should be in camel case
|
|
11
|
+
* @param options.actionProps - Optional param for the main request action, use the props()
|
|
12
|
+
* function for its value, if not present action will have no params,
|
|
13
|
+
* @param options.actionSuccessProps - Optional param for the request success action,
|
|
14
|
+
* use the props() function for its value, if not present action success will have no params
|
|
15
|
+
* @param options.actionFailProps - Optional param for the request fail action,
|
|
16
|
+
* use the props() function for its value, if not present action fail will have no params
|
|
17
|
+
* @returns the trait factory
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* // The following trait config
|
|
21
|
+
* const traits = createEntityFeatureFactory(
|
|
22
|
+
* {entityName: 'Todo'},
|
|
23
|
+
* addAsyncActionTrait({
|
|
24
|
+
* name: 'createClient',
|
|
25
|
+
* actionProps: props<{ name: string }>(),
|
|
26
|
+
* actionSuccessProps: props<{ id: string }>(),
|
|
27
|
+
* }),
|
|
28
|
+
* )({
|
|
29
|
+
* actionsGroupKey: 'Client',
|
|
30
|
+
* featureSelector: createFeatureSelector<AsyncActionState<'createClient'>>(
|
|
31
|
+
* 'client',
|
|
32
|
+
* ),
|
|
33
|
+
* });
|
|
34
|
+
* // adds following props to the state:
|
|
35
|
+
* // createClientStatus?: 'loading' | 'success' | 'fail';
|
|
36
|
+
*
|
|
37
|
+
* // generated actions
|
|
38
|
+
* traits.actions.createClient({name:'Pedro'})
|
|
39
|
+
* traits.actions.createClientSuccess({id:'123'})
|
|
40
|
+
* traits.actions.createClientFail();
|
|
41
|
+
* //generated selectors
|
|
42
|
+
* traits.selectors.isLoadingCreateClient
|
|
43
|
+
* traits.selectors.isSuccessCreateClient
|
|
44
|
+
* traits.selectors.isFailCreateClient
|
|
45
|
+
*/
|
|
46
|
+
export function addAsyncActionTrait({ name, actionProps, actionSuccessProps, actionFailProps, }) {
|
|
47
|
+
const nameAsSentence = camelCaseToSentence(name);
|
|
48
|
+
let internalActions;
|
|
49
|
+
return createTraitFactory({
|
|
50
|
+
key: name + '-call',
|
|
51
|
+
config: {
|
|
52
|
+
name,
|
|
53
|
+
actionProps,
|
|
54
|
+
actionSuccessProps,
|
|
55
|
+
actionFailProps,
|
|
56
|
+
},
|
|
57
|
+
actions: ({ actionsGroupKey, }) => {
|
|
58
|
+
internalActions = {
|
|
59
|
+
request: (actionProps
|
|
60
|
+
? createAction(`${actionsGroupKey} ${nameAsSentence}`, actionProps)
|
|
61
|
+
: createAction(`${actionsGroupKey} ${nameAsSentence}`)),
|
|
62
|
+
requestSuccess: (actionSuccessProps
|
|
63
|
+
? createAction(`${actionsGroupKey} ${nameAsSentence} Success`, actionSuccessProps)
|
|
64
|
+
: createAction(`${actionsGroupKey} ${nameAsSentence} Success`)),
|
|
65
|
+
requestFail: (actionFailProps
|
|
66
|
+
? createAction(`${actionsGroupKey} ${nameAsSentence} Failure`, actionFailProps)
|
|
67
|
+
: createAction(`${actionsGroupKey} ${nameAsSentence} Failure`)),
|
|
68
|
+
};
|
|
69
|
+
if (name) {
|
|
70
|
+
return {
|
|
71
|
+
[`${name}`]: internalActions.request,
|
|
72
|
+
[`${name}Success`]: internalActions.requestSuccess,
|
|
73
|
+
[`${name}Fail`]: internalActions.requestFail,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return internalActions;
|
|
77
|
+
},
|
|
78
|
+
selectors: () => {
|
|
79
|
+
function isLoadingEntity(state) {
|
|
80
|
+
return state[`${name}Status`] === 'loading';
|
|
81
|
+
}
|
|
82
|
+
function isSuccessEntity(state) {
|
|
83
|
+
return state[`${name}Status`] === 'success';
|
|
84
|
+
}
|
|
85
|
+
function isFailEntity(state) {
|
|
86
|
+
return state[`${name}Status`] === 'fail';
|
|
87
|
+
}
|
|
88
|
+
const capitalizedName = name.charAt(0).toUpperCase() + name.slice(1);
|
|
89
|
+
return {
|
|
90
|
+
[`isLoading${capitalizedName}`]: isLoadingEntity,
|
|
91
|
+
[`isSuccess${capitalizedName}`]: isSuccessEntity,
|
|
92
|
+
[`isFail${capitalizedName}`]: isFailEntity,
|
|
93
|
+
};
|
|
94
|
+
},
|
|
95
|
+
initialState: ({ previousInitialState }) => previousInitialState,
|
|
96
|
+
reducer: ({ initialState }) => {
|
|
97
|
+
return createReducer(initialState, on(internalActions.request, (state) => ({
|
|
98
|
+
...state,
|
|
99
|
+
[`${name}Status`]: 'loading',
|
|
100
|
+
})), on(internalActions.requestFail, (state) => ({
|
|
101
|
+
...state,
|
|
102
|
+
[`${name}Status`]: 'fail',
|
|
103
|
+
})), on(internalActions.requestSuccess, (state) => ({
|
|
104
|
+
...state,
|
|
105
|
+
[`${name}Status`]: 'success',
|
|
106
|
+
})));
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtYWN0aW9uLnRyYWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9hc3luYy1hY3Rpb24vYXN5bmMtYWN0aW9uLnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVk1RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUtqQyxFQUNBLElBQUksRUFDSixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGVBQWUsR0FNaEI7SUFDQyxNQUFNLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVqRCxJQUFJLGVBS0gsQ0FBQztJQUNGLE9BQU8sa0JBQWtCLENBQUM7UUFDeEIsR0FBRyxFQUFFLElBQUksR0FBRyxPQUFPO1FBQ25CLE1BQU0sRUFBRTtZQUNOLElBQUk7WUFDSixXQUFXO1lBQ1gsa0JBQWtCO1lBQ2xCLGVBQWU7U0FDaEI7UUFDRCxPQUFPLEVBQUUsQ0FBQyxFQUNSLGVBQWUsR0FDVyxFQUsxQixFQUFFO1lBQ0YsZUFBZSxHQUFHO2dCQUNoQixPQUFPLEVBQUUsQ0FBQyxXQUFXO29CQUNuQixDQUFDLENBQUMsWUFBWSxDQUNWLEdBQUcsZUFBZSxJQUFJLGNBQWMsRUFBRSxFQUN0QyxXQUFrQixDQUNuQjtvQkFDSCxDQUFDLENBQUMsWUFBWSxDQUNWLEdBQUcsZUFBZSxJQUFJLGNBQWMsRUFBRSxDQUN2QyxDQUE0QztnQkFDakQsY0FBYyxFQUFFLENBQUMsa0JBQWtCO29CQUNqQyxDQUFDLENBQUMsWUFBWSxDQUNWLEdBQUcsZUFBZSxJQUFJLGNBQWMsVUFBVSxFQUM5QyxrQkFBeUIsQ0FDMUI7b0JBQ0gsQ0FBQyxDQUFDLFlBQVksQ0FDVixHQUFHLGVBQWUsSUFBSSxjQUFjLFVBQVUsQ0FDL0MsQ0FBNkM7Z0JBQ2xELFdBQVcsRUFBRSxDQUFDLGVBQWU7b0JBQzNCLENBQUMsQ0FBQyxZQUFZLENBQ1YsR0FBRyxlQUFlLElBQUksY0FBYyxVQUFVLEVBQzlDLGVBQXNCLENBQ3ZCO29CQUNILENBQUMsQ0FBQyxZQUFZLENBQ1YsR0FBRyxlQUFlLElBQUksY0FBYyxVQUFVLENBQy9DLENBQTRDO2FBQ2xELENBQUM7WUFDRixJQUFJLElBQUksRUFBRTtnQkFDUixPQUFPO29CQUNMLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxPQUFPO29CQUNwQyxDQUFDLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxlQUFlLENBQUMsY0FBYztvQkFDbEQsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLEVBQUUsZUFBZSxDQUFDLFdBQVc7aUJBQ1EsQ0FBQzthQUN4RDtZQUNELE9BQU8sZUFBZSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ2QsU0FBUyxlQUFlLENBQWdDLEtBQVE7Z0JBQzlELE9BQVEsS0FBYSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxTQUFTLENBQUM7WUFDdkQsQ0FBQztZQUNELFNBQVMsZUFBZSxDQUFnQyxLQUFRO2dCQUM5RCxPQUFRLEtBQWEsQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssU0FBUyxDQUFDO1lBQ3ZELENBQUM7WUFDRCxTQUFTLFlBQVksQ0FBZ0MsS0FBUTtnQkFDM0QsT0FBUSxLQUFhLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLE1BQU0sQ0FBQztZQUNwRCxDQUFDO1lBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLE9BQU87Z0JBQ0wsQ0FBQyxZQUFZLGVBQWUsRUFBRSxDQUFDLEVBQUUsZUFBZTtnQkFDaEQsQ0FBQyxZQUFZLGVBQWUsRUFBRSxDQUFDLEVBQUUsZUFBZTtnQkFDaEQsQ0FBQyxTQUFTLGVBQWUsRUFBRSxDQUFDLEVBQUUsWUFBWTthQUNLLENBQUM7UUFDcEQsQ0FBQztRQUNELFlBQVksRUFBRSxDQUFDLEVBQUUsb0JBQW9CLEVBQWtDLEVBQUUsRUFBRSxDQUN6RSxvQkFBMkM7UUFDN0MsT0FBTyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFO1lBQzVCLE9BQU8sYUFBYSxDQUNsQixZQUFZLEVBQ1osRUFBRSxDQUNBLGVBQWUsQ0FBQyxPQUFPLEVBQ3ZCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDUixDQUFDO2dCQUNDLEdBQUcsS0FBSztnQkFDUixDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsRUFBRSxTQUFTO2FBQ0wsQ0FBQSxDQUM1QixFQUNELEVBQUUsQ0FDQSxlQUFlLENBQUMsV0FBVyxFQUMzQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1IsQ0FBQztnQkFDQyxHQUFHLEtBQUs7Z0JBQ1IsQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLEVBQUUsTUFBTTthQUNGLENBQUEsQ0FDNUIsRUFDRCxFQUFFLENBQ0EsZUFBZSxDQUFDLGNBQWMsRUFDOUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLENBQUM7Z0JBQ0MsR0FBRyxLQUFLO2dCQUNSLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxFQUFFLFNBQVM7YUFDTCxDQUFBLENBQzVCLENBQ0YsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBjcmVhdGVSZWR1Y2VyLCBvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEFjdGlvbkNyZWF0b3JQcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlL3NyYy9tb2RlbHMnO1xuaW1wb3J0IHsgY2FtZWxDYXNlVG9TZW50ZW5jZSwgY3JlYXRlVHJhaXRGYWN0b3J5IH0gZnJvbSAnQG5ncngtdHJhaXRzL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aW9uQ3JlYXRvcldpdGhPcHRpb25hbFByb3BzLFxuICBBc3luY0FjdGlvbkFjdGlvbnMsXG4gIEFzeW5jQWN0aW9uU2VsZWN0b3JzLFxuICBBc3luY0FjdGlvblN0YXRlLFxufSBmcm9tICcuL2FzeW5jLWFjdGlvbi5tb2RlbCc7XG5pbXBvcnQge1xuICBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnLFxuICBUcmFpdEluaXRpYWxTdGF0ZUZhY3RvcnlDb25maWcsXG59IGZyb20gJ0BuZ3J4LXRyYWl0cy9jb3JlJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIHR5cGljYWwgbmdyeCBjb2RlIG5lZWQgdG8gbWFrZSBhIGFzeW5jIGFjdGlvbiB3aXRoXG4gKiBhIHJlcXVlc3QsIHN1Y2Nlc3MgYW5kIGZhaWx1cmUgYWN0aW9ucywgcGx1cyBhIHN0YXR1cyBwcm9wZXJ0eSB0byB0cmFjayBpdHMgcHJvZ3Jlc3NcbiAqIGFuZCBzZWxlY3RvcnMgdG8gcXVlcnkgdGhlIHN0YXR1cy4gVGhpcyB0cmFpdCBjYW4gYmUgYWRkZWQgbW9yZSB0aGFudCBvbmNlIGFzIGxvbmdcbiAqIGFzIHRoZSBuYW1lIHByb3AgaXMgZGlmZmVyZW50LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlnIG9iamVjdCBmb3IgdGhlIHRyYWl0IGZhY3RvcnlcbiAqIEBwYXJhbSBvcHRpb25zLm5hbWUgLSBOYW1lIG9mIHRoZSBtYWluIHJlcXVlc3QgYWN0aW9uLCBzaG91bGQgYmUgaW4gY2FtZWwgY2FzZVxuICogQHBhcmFtIG9wdGlvbnMuYWN0aW9uUHJvcHMgLSBPcHRpb25hbCBwYXJhbSBmb3IgdGhlIG1haW4gcmVxdWVzdCBhY3Rpb24sIHVzZSB0aGUgcHJvcHMoKVxuICogZnVuY3Rpb24gZm9yIGl0cyB2YWx1ZSwgaWYgbm90IHByZXNlbnQgYWN0aW9uIHdpbGwgaGF2ZSBubyBwYXJhbXMsXG4gKiBAcGFyYW0gb3B0aW9ucy5hY3Rpb25TdWNjZXNzUHJvcHMgLSBPcHRpb25hbCBwYXJhbSBmb3IgdGhlIHJlcXVlc3Qgc3VjY2VzcyBhY3Rpb24sXG4gKiB1c2UgdGhlIHByb3BzKCkgZnVuY3Rpb24gZm9yIGl0cyB2YWx1ZSwgaWYgbm90IHByZXNlbnQgYWN0aW9uIHN1Y2Nlc3Mgd2lsbCBoYXZlIG5vIHBhcmFtc1xuICogQHBhcmFtIG9wdGlvbnMuYWN0aW9uRmFpbFByb3BzIC0gT3B0aW9uYWwgcGFyYW0gZm9yIHRoZSByZXF1ZXN0IGZhaWwgYWN0aW9uLFxuICogdXNlIHRoZSBwcm9wcygpIGZ1bmN0aW9uIGZvciBpdHMgdmFsdWUsIGlmIG5vdCBwcmVzZW50IGFjdGlvbiBmYWlsIHdpbGwgaGF2ZSBubyBwYXJhbXNcbiAqIEByZXR1cm5zIHRoZSB0cmFpdCBmYWN0b3J5XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBmb2xsb3dpbmcgdHJhaXQgY29uZmlnXG4gKiBjb25zdCB0cmFpdHMgPSBjcmVhdGVFbnRpdHlGZWF0dXJlRmFjdG9yeShcbiAqIHtlbnRpdHlOYW1lOiAnVG9kbyd9LFxuICogYWRkQXN5bmNBY3Rpb25UcmFpdCh7XG4gKiAgICAgICAgbmFtZTogJ2NyZWF0ZUNsaWVudCcsXG4gKiAgICAgICAgYWN0aW9uUHJvcHM6IHByb3BzPHsgbmFtZTogc3RyaW5nIH0+KCksXG4gKiAgICAgICAgYWN0aW9uU3VjY2Vzc1Byb3BzOiBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSxcbiAqICAgICAgfSksXG4gKiApKHtcbiAqICAgICAgYWN0aW9uc0dyb3VwS2V5OiAnQ2xpZW50JyxcbiAqICAgICAgZmVhdHVyZVNlbGVjdG9yOiBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8QXN5bmNBY3Rpb25TdGF0ZTwnY3JlYXRlQ2xpZW50Jz4+KFxuICogICAgICAgICdjbGllbnQnLFxuICogICAgICApLFxuICogICAgfSk7XG4gKiAvLyAgIGFkZHMgZm9sbG93aW5nIHByb3BzIHRvIHRoZSBzdGF0ZTpcbiAqIC8vICAgIGNyZWF0ZUNsaWVudFN0YXR1cz86ICdsb2FkaW5nJyB8ICdzdWNjZXNzJyB8ICdmYWlsJztcbiAqXG4gKiAvLyBnZW5lcmF0ZWQgYWN0aW9uc1xuICogdHJhaXRzLmFjdGlvbnMuY3JlYXRlQ2xpZW50KHtuYW1lOidQZWRybyd9KVxuICogdHJhaXRzLmFjdGlvbnMuY3JlYXRlQ2xpZW50U3VjY2Vzcyh7aWQ6JzEyMyd9KVxuICogdHJhaXRzLmFjdGlvbnMuY3JlYXRlQ2xpZW50RmFpbCgpO1xuICogLy9nZW5lcmF0ZWQgc2VsZWN0b3JzXG4gKiB0cmFpdHMuc2VsZWN0b3JzLmlzTG9hZGluZ0NyZWF0ZUNsaWVudFxuICogdHJhaXRzLnNlbGVjdG9ycy5pc1N1Y2Nlc3NDcmVhdGVDbGllbnRcbiAqIHRyYWl0cy5zZWxlY3RvcnMuaXNGYWlsQ3JlYXRlQ2xpZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRBc3luY0FjdGlvblRyYWl0PFxuICBKIGV4dGVuZHMgc3RyaW5nLFxuICBSZXF1ZXN0IGV4dGVuZHMgb2JqZWN0IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICBSZXNwb25zZSBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgRmFpbHVyZSBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuPih7XG4gIG5hbWUsXG4gIGFjdGlvblByb3BzLFxuICBhY3Rpb25TdWNjZXNzUHJvcHMsXG4gIGFjdGlvbkZhaWxQcm9wcyxcbn06IHtcbiAgbmFtZTogSjtcbiAgYWN0aW9uUHJvcHM/OiBBY3Rpb25DcmVhdG9yUHJvcHM8UmVxdWVzdD47XG4gIGFjdGlvblN1Y2Nlc3NQcm9wcz86IEFjdGlvbkNyZWF0b3JQcm9wczxSZXNwb25zZT47XG4gIGFjdGlvbkZhaWxQcm9wcz86IEFjdGlvbkNyZWF0b3JQcm9wczxGYWlsdXJlPjtcbn0pIHtcbiAgY29uc3QgbmFtZUFzU2VudGVuY2UgPSBjYW1lbENhc2VUb1NlbnRlbmNlKG5hbWUpO1xuXG4gIGxldCBpbnRlcm5hbEFjdGlvbnM6IEFzeW5jQWN0aW9uQWN0aW9uczxcbiAgICBSZXF1ZXN0LFxuICAgIFJlc3BvbnNlLFxuICAgIEZhaWx1cmUsXG4gICAgJ3JlcXVlc3QnXG4gID47XG4gIHJldHVybiBjcmVhdGVUcmFpdEZhY3Rvcnkoe1xuICAgIGtleTogbmFtZSArICctY2FsbCcsXG4gICAgY29uZmlnOiB7XG4gICAgICBuYW1lLFxuICAgICAgYWN0aW9uUHJvcHMsXG4gICAgICBhY3Rpb25TdWNjZXNzUHJvcHMsXG4gICAgICBhY3Rpb25GYWlsUHJvcHMsXG4gICAgfSxcbiAgICBhY3Rpb25zOiAoe1xuICAgICAgYWN0aW9uc0dyb3VwS2V5LFxuICAgIH06IFRyYWl0QWN0aW9uc0ZhY3RvcnlDb25maWcpOiBBc3luY0FjdGlvbkFjdGlvbnM8XG4gICAgICBSZXF1ZXN0LFxuICAgICAgUmVzcG9uc2UsXG4gICAgICBGYWlsdXJlLFxuICAgICAgSlxuICAgID4gPT4ge1xuICAgICAgaW50ZXJuYWxBY3Rpb25zID0ge1xuICAgICAgICByZXF1ZXN0OiAoYWN0aW9uUHJvcHNcbiAgICAgICAgICA/IGNyZWF0ZUFjdGlvbihcbiAgICAgICAgICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSAke25hbWVBc1NlbnRlbmNlfWAsXG4gICAgICAgICAgICAgIGFjdGlvblByb3BzIGFzIGFueVxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogY3JlYXRlQWN0aW9uKFxuICAgICAgICAgICAgICBgJHthY3Rpb25zR3JvdXBLZXl9ICR7bmFtZUFzU2VudGVuY2V9YFxuICAgICAgICAgICAgKSkgYXMgQWN0aW9uQ3JlYXRvcldpdGhPcHRpb25hbFByb3BzPFJlcXVlc3Q+LFxuICAgICAgICByZXF1ZXN0U3VjY2VzczogKGFjdGlvblN1Y2Nlc3NQcm9wc1xuICAgICAgICAgID8gY3JlYXRlQWN0aW9uKFxuICAgICAgICAgICAgICBgJHthY3Rpb25zR3JvdXBLZXl9ICR7bmFtZUFzU2VudGVuY2V9IFN1Y2Nlc3NgLFxuICAgICAgICAgICAgICBhY3Rpb25TdWNjZXNzUHJvcHMgYXMgYW55XG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBjcmVhdGVBY3Rpb24oXG4gICAgICAgICAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gJHtuYW1lQXNTZW50ZW5jZX0gU3VjY2Vzc2BcbiAgICAgICAgICAgICkpIGFzIEFjdGlvbkNyZWF0b3JXaXRoT3B0aW9uYWxQcm9wczxSZXNwb25zZT4sXG4gICAgICAgIHJlcXVlc3RGYWlsOiAoYWN0aW9uRmFpbFByb3BzXG4gICAgICAgICAgPyBjcmVhdGVBY3Rpb24oXG4gICAgICAgICAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gJHtuYW1lQXNTZW50ZW5jZX0gRmFpbHVyZWAsXG4gICAgICAgICAgICAgIGFjdGlvbkZhaWxQcm9wcyBhcyBhbnlcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGNyZWF0ZUFjdGlvbihcbiAgICAgICAgICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSAke25hbWVBc1NlbnRlbmNlfSBGYWlsdXJlYFxuICAgICAgICAgICAgKSkgYXMgQWN0aW9uQ3JlYXRvcldpdGhPcHRpb25hbFByb3BzPEZhaWx1cmU+LFxuICAgICAgfTtcbiAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgW2Ake25hbWV9YF06IGludGVybmFsQWN0aW9ucy5yZXF1ZXN0LFxuICAgICAgICAgIFtgJHtuYW1lfVN1Y2Nlc3NgXTogaW50ZXJuYWxBY3Rpb25zLnJlcXVlc3RTdWNjZXNzLFxuICAgICAgICAgIFtgJHtuYW1lfUZhaWxgXTogaW50ZXJuYWxBY3Rpb25zLnJlcXVlc3RGYWlsLFxuICAgICAgICB9IGFzIEFzeW5jQWN0aW9uQWN0aW9uczxSZXF1ZXN0LCBSZXNwb25zZSwgRmFpbHVyZSwgSj47XG4gICAgICB9XG4gICAgICByZXR1cm4gaW50ZXJuYWxBY3Rpb25zO1xuICAgIH0sXG4gICAgc2VsZWN0b3JzOiAoKSA9PiB7XG4gICAgICBmdW5jdGlvbiBpc0xvYWRpbmdFbnRpdHk8UyBleHRlbmRzIEFzeW5jQWN0aW9uU3RhdGU8Sj4+KHN0YXRlOiBTKSB7XG4gICAgICAgIHJldHVybiAoc3RhdGUgYXMgYW55KVtgJHtuYW1lfVN0YXR1c2BdID09PSAnbG9hZGluZyc7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBpc1N1Y2Nlc3NFbnRpdHk8UyBleHRlbmRzIEFzeW5jQWN0aW9uU3RhdGU8Sj4+KHN0YXRlOiBTKSB7XG4gICAgICAgIHJldHVybiAoc3RhdGUgYXMgYW55KVtgJHtuYW1lfVN0YXR1c2BdID09PSAnc3VjY2Vzcyc7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBpc0ZhaWxFbnRpdHk8UyBleHRlbmRzIEFzeW5jQWN0aW9uU3RhdGU8Sj4+KHN0YXRlOiBTKSB7XG4gICAgICAgIHJldHVybiAoc3RhdGUgYXMgYW55KVtgJHtuYW1lfVN0YXR1c2BdID09PSAnZmFpbCc7XG4gICAgICB9XG4gICAgICBjb25zdCBjYXBpdGFsaXplZE5hbWUgPSBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtgaXNMb2FkaW5nJHtjYXBpdGFsaXplZE5hbWV9YF06IGlzTG9hZGluZ0VudGl0eSxcbiAgICAgICAgW2Bpc1N1Y2Nlc3Mke2NhcGl0YWxpemVkTmFtZX1gXTogaXNTdWNjZXNzRW50aXR5LFxuICAgICAgICBbYGlzRmFpbCR7Y2FwaXRhbGl6ZWROYW1lfWBdOiBpc0ZhaWxFbnRpdHksXG4gICAgICB9IGFzIEFzeW5jQWN0aW9uU2VsZWN0b3JzPEosIEFzeW5jQWN0aW9uU3RhdGU8Sj4+O1xuICAgIH0sXG4gICAgaW5pdGlhbFN0YXRlOiAoeyBwcmV2aW91c0luaXRpYWxTdGF0ZSB9OiBUcmFpdEluaXRpYWxTdGF0ZUZhY3RvcnlDb25maWcpID0+XG4gICAgICBwcmV2aW91c0luaXRpYWxTdGF0ZSBhcyBBc3luY0FjdGlvblN0YXRlPEo+LFxuICAgIHJlZHVjZXI6ICh7IGluaXRpYWxTdGF0ZSB9KSA9PiB7XG4gICAgICByZXR1cm4gY3JlYXRlUmVkdWNlcihcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICBvbihcbiAgICAgICAgICBpbnRlcm5hbEFjdGlvbnMucmVxdWVzdCxcbiAgICAgICAgICAoc3RhdGUpID0+XG4gICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgW2Ake25hbWV9U3RhdHVzYF06ICdsb2FkaW5nJyxcbiAgICAgICAgICAgIH0gYXMgQXN5bmNBY3Rpb25TdGF0ZTxKPilcbiAgICAgICAgKSxcbiAgICAgICAgb24oXG4gICAgICAgICAgaW50ZXJuYWxBY3Rpb25zLnJlcXVlc3RGYWlsLFxuICAgICAgICAgIChzdGF0ZSkgPT5cbiAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICBbYCR7bmFtZX1TdGF0dXNgXTogJ2ZhaWwnLFxuICAgICAgICAgICAgfSBhcyBBc3luY0FjdGlvblN0YXRlPEo+KVxuICAgICAgICApLFxuICAgICAgICBvbihcbiAgICAgICAgICBpbnRlcm5hbEFjdGlvbnMucmVxdWVzdFN1Y2Nlc3MsXG4gICAgICAgICAgKHN0YXRlKSA9PlxuICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgIFtgJHtuYW1lfVN0YXR1c2BdOiAnc3VjY2VzcycsXG4gICAgICAgICAgICB9IGFzIEFzeW5jQWN0aW9uU3RhdGU8Sj4pXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './async-action.model';
|
|
2
|
+
export * from './async-action.trait';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL2FzeW5jLWFjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FzeW5jLWFjdGlvbi5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FzeW5jLWFjdGlvbi50cmFpdCc7XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export var ChangeType;
|
|
2
|
+
(function (ChangeType) {
|
|
3
|
+
ChangeType["CREATED"] = "c";
|
|
4
|
+
ChangeType["UPDATED"] = "u";
|
|
5
|
+
ChangeType["DELETED"] = "d";
|
|
6
|
+
})(ChangeType || (ChangeType = {}));
|
|
7
|
+
export const crudEntitiesTraitKey = 'crud';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1lbnRpdGllcy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvY3J1ZC1lbnRpdGllcy9jcnVkLWVudGl0aWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsMkJBQWEsQ0FBQTtJQUNiLDJCQUFhLENBQUE7SUFDYiwyQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLFVBQVUsS0FBVixVQUFVLFFBSXJCO0FBeUhELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByZWRpY2F0ZSwgVXBkYXRlIH0gZnJvbSAnQG5ncngvZW50aXR5L3NyYy9tb2RlbHMnO1xuaW1wb3J0IHsgTG9hZEVudGl0aWVzU3RhdGUgfSBmcm9tICcuLi9sb2FkLWVudGl0aWVzL2xvYWQtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IFR5cGVkQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUvc3JjL21vZGVscyc7XG5cbmV4cG9ydCBlbnVtIENoYW5nZVR5cGUge1xuICBDUkVBVEVEID0gJ2MnLFxuICBVUERBVEVEID0gJ3UnLFxuICBERUxFVEVEID0gJ2QnLFxufVxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2U8VD4ge1xuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICBjaGFuZ2VUeXBlOiBDaGFuZ2VUeXBlO1xuICBlbnRpdHlDaGFuZ2VzPzogUGFydGlhbDxUPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5Q2hhbmdlPFQ+IHtcbiAgZW50aXR5OiBUO1xuICBjaGFuZ2VUeXBlOiBDaGFuZ2VUeXBlO1xufVxuZXhwb3J0IGludGVyZmFjZSBDcnVkRW50aXRpZXNTdGF0ZTxUPiB7XG4gIGNoYW5nZXM6IENoYW5nZTxUPltdO1xufVxuXG5leHBvcnQgdHlwZSBDcnVkRW50aXRpZXNBY3Rpb25zPFQ+ID0ge1xuICBhZGRFbnRpdGllczogQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKC4uLmVudGl0aWVzOiBUW10pID0+IHsgZW50aXRpZXM6IFRbXSB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxuICA+O1xuICByZW1vdmVFbnRpdGllczogQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKFxuICAgICAgLi4ua2V5czogc3RyaW5nW10gfCBudW1iZXJbXVxuICAgICkgPT4geyBrZXlzOiBzdHJpbmdbXSB8IG51bWJlcltdIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XG4gID47XG4gIHVwZGF0ZUVudGl0aWVzOiBBY3Rpb25DcmVhdG9yPFxuICAgIHN0cmluZyxcbiAgICAoLi4udXBkYXRlczogVXBkYXRlPFQ+W10pID0+IHsgdXBkYXRlczogVXBkYXRlPFQ+W10gfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cbiAgPjtcbiAgdXBzZXJ0RW50aXRpZXM6IEFjdGlvbkNyZWF0b3I8XG4gICAgc3RyaW5nLFxuICAgICguLi5lbnRpdGllczogVFtdKSA9PiB7IGVudGl0aWVzOiBUW10gfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cbiAgPjtcblxuICByZW1vdmVBbGxFbnRpdGllczogQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKFxuICAgICAgcHJlZGljYXRlPzogUHJlZGljYXRlPFQ+XG4gICAgKSA9PiB7IHByZWRpY2F0ZT86IFByZWRpY2F0ZTxUPiB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxuICA+O1xuICBjbGVhckVudGl0aWVzQ2hhbmdlczogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xufTtcblxuZXhwb3J0IHR5cGUgQ3J1ZEVudGl0aWVzU2VsZWN0b3JzPEVudGl0eT4gPSB7XG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIGNoYW5nZXMgbWFkZSB0byB0aGUgbGlzdCBwbHVzIGVudGl0aWVzLCBhbmQgY2FuIGJlIGZpbHRlcmVkXG4gICAqIGJ5IGNoYW5nZSB0eXBlXG4gICAqIEBwYXJhbSBzdGF0ZVxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICovXG4gIHNlbGVjdEVudGl0aWVzQ2hhbmdlc0xpc3Q6IChcbiAgICBzdGF0ZTogTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT5cbiAgKSA9PiBFbnRpdHlDaGFuZ2U8RW50aXR5PltdO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBlbnRpdGllcyBwbHVzIHRoZSBraW5kIG9mIGNoYW5nZSxcbiAgICogZmlsdGVycyByZWR1bmRhbnQgY2hhbmdlcyBpZGVhbCBmb3IgYSBiYXRjaCB1cGRhdGVcbiAgICogaWYgeW91IGFkZCBhbmQgcmVtb3ZlIHRoZSBzYW1lIGFuZCBpdGVtcyB0aGlzIGNoYW5nZXMgYXJlIHJlbW92ZSBmcm9tIHRoZSBsaXN0XG4gICAqIGlmIHlvdSBhZGQgYW5kIHRoZW4gdXBkYXRlIG9uZSBvciBtb3JlIHRpbWVzLCB0aGUgdXBkYXRlcyBhcmUgZGlzY2FyZGVkXG4gICAqIGlmIHlvdSB1cGRhdGUgb25lIG9yIG1vcmUgdGltZXMgYW5kIHRoZW4gcmVtb3ZlLCB0aGUgdXBkYXRlcyBhcmUgZGlzY2FyZGVkXG4gICAqIEBwYXJhbSBzdGF0ZVxuICAgKi9cbiAgc2VsZWN0RmlsdGVyZWRFbnRpdGllc0NoYW5nZXNMaXN0OiAoXG4gICAgc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+XG4gICkgPT4gRW50aXR5Q2hhbmdlPEVudGl0eT5bXTtcbn07XG5cbmV4cG9ydCB0eXBlIENydWRFbnRpdGllc011dGF0b3JzPEVudGl0eT4gPSB7XG4gIGFkZEVudGl0aWVzPFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5Pj4oXG4gICAgZW50aXRpZXM6IEVudGl0eVtdLFxuICAgIHN0YXRlOiBTXG4gICk6IFM7XG5cbiAgcmVtb3ZlRW50aXRpZXM8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+XG4gID4oXG4gICAga2V5czogc3RyaW5nW10sXG4gICAgc3RhdGU6IFNcbiAgKTogUztcbiAgcmVtb3ZlRW50aXRpZXM8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+XG4gID4oXG4gICAga2V5czogbnVtYmVyW10sXG4gICAgc3RhdGU6IFNcbiAgKTogUztcbiAgcmVtb3ZlRW50aXRpZXM8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+XG4gID4oXG4gICAgcHJlZGljYXRlOiBQcmVkaWNhdGU8RW50aXR5PixcbiAgICBzdGF0ZTogU1xuICApOiBTO1xuXG4gIHJlbW92ZUFsbEVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PlxuICA+KFxuICAgIHN0YXRlOiBTXG4gICk6IFM7XG5cbiAgY2xlYXJFbnRpdGllc0NoYW5nZXM8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+XG4gID4oXG4gICAgc3RhdGU6IFNcbiAgKTogUztcblxuICB1cGRhdGVFbnRpdGllczxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT5cbiAgPihcbiAgICB1cGRhdGVzOiBVcGRhdGU8RW50aXR5PltdLFxuICAgIHN0YXRlOiBTXG4gICk6IFM7XG4gIHVwc2VydEVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PlxuICA+KFxuICAgIGVudGl0aWVzOiBFbnRpdHlbXSxcbiAgICBzdGF0ZTogU1xuICApOiBTO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBDcnVkRW50aXRpZXNDb25maWcge1xuICBzdG9yZUNoYW5nZXM/OiBib29sZWFuO1xufVxuZXhwb3J0IGNvbnN0IGNydWRFbnRpdGllc1RyYWl0S2V5ID0gJ2NydWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENydWRFbnRpdGllc0tleWVkQ29uZmlnIHtcbiAgY3J1ZD86IENydWRFbnRpdGllc0NvbmZpZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createAction } from '@ngrx/store';
|
|
2
|
+
export function createCrudTraitActions(actionsGroupKey, entitiesName) {
|
|
3
|
+
return {
|
|
4
|
+
addEntities: createAction(`${actionsGroupKey} Add ${entitiesName}`, (...entities) => ({
|
|
5
|
+
entities,
|
|
6
|
+
})),
|
|
7
|
+
removeEntities: createAction(`${actionsGroupKey} Remove ${entitiesName}`, (...keys) => ({
|
|
8
|
+
keys,
|
|
9
|
+
})),
|
|
10
|
+
updateEntities: createAction(`${actionsGroupKey} Update ${entitiesName}`, (...updates) => ({
|
|
11
|
+
updates,
|
|
12
|
+
})),
|
|
13
|
+
upsertEntities: createAction(`${actionsGroupKey} Upsert ${entitiesName}`, (...entities) => ({
|
|
14
|
+
entities,
|
|
15
|
+
})),
|
|
16
|
+
removeAllEntities: createAction(`${actionsGroupKey} Remove All ${entitiesName}`, (predicate) => ({ predicate })),
|
|
17
|
+
clearEntitiesChanges: createAction(`${actionsGroupKey} Clear ${entitiesName} Changes`),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1lbnRpdGllcy50cmFpdC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9jcnVkLWVudGl0aWVzL2NydWQtZW50aXRpZXMudHJhaXQuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzNDLE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsZUFBdUIsRUFDdkIsWUFBb0I7SUFFcEIsT0FBTztRQUNMLFdBQVcsRUFBRSxZQUFZLENBQ3ZCLEdBQUcsZUFBZSxRQUFRLFlBQVksRUFBRSxFQUN4QyxDQUFDLEdBQUcsUUFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQixRQUFRO1NBQ1QsQ0FBQyxDQUNIO1FBQ0QsY0FBYyxFQUFFLFlBQVksQ0FDMUIsR0FBRyxlQUFlLFdBQVcsWUFBWSxFQUFFLEVBQzNDLENBQUMsR0FBRyxJQUF5QixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLElBQUk7U0FDTCxDQUFDLENBQ0g7UUFDRCxjQUFjLEVBQUUsWUFBWSxDQUMxQixHQUFHLGVBQWUsV0FBVyxZQUFZLEVBQUUsRUFDM0MsQ0FBQyxHQUFHLE9BQXlCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDakMsT0FBTztTQUNSLENBQUMsQ0FDSDtRQUNELGNBQWMsRUFBRSxZQUFZLENBQzFCLEdBQUcsZUFBZSxXQUFXLFlBQVksRUFBRSxFQUMzQyxDQUFDLEdBQUcsUUFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQixRQUFRO1NBQ1QsQ0FBQyxDQUNIO1FBQ0QsaUJBQWlCLEVBQUUsWUFBWSxDQUM3QixHQUFHLGVBQWUsZUFBZSxZQUFZLEVBQUUsRUFDL0MsQ0FBQyxTQUE2QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FDbkQ7UUFDRCxvQkFBb0IsRUFBRSxZQUFZLENBQ2hDLEdBQUcsZUFBZSxXQUFXLFlBQVksVUFBVSxDQUNwRDtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3J1ZEVudGl0aWVzQWN0aW9ucyB9IGZyb20gJy4vY3J1ZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQgeyBjcmVhdGVBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBQcmVkaWNhdGUsIFVwZGF0ZSB9IGZyb20gJ0BuZ3J4L2VudGl0eSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDcnVkVHJhaXRBY3Rpb25zPEVudGl0eT4oXG4gIGFjdGlvbnNHcm91cEtleTogc3RyaW5nLFxuICBlbnRpdGllc05hbWU6IHN0cmluZ1xuKTogQ3J1ZEVudGl0aWVzQWN0aW9uczxFbnRpdHk+IHtcbiAgcmV0dXJuIHtcbiAgICBhZGRFbnRpdGllczogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBBZGQgJHtlbnRpdGllc05hbWV9YCxcbiAgICAgICguLi5lbnRpdGllczogRW50aXR5W10pID0+ICh7XG4gICAgICAgIGVudGl0aWVzLFxuICAgICAgfSlcbiAgICApLFxuICAgIHJlbW92ZUVudGl0aWVzOiBjcmVhdGVBY3Rpb24oXG4gICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IFJlbW92ZSAke2VudGl0aWVzTmFtZX1gLFxuICAgICAgKC4uLmtleXM6IHN0cmluZ1tdIHwgbnVtYmVyW10pID0+ICh7XG4gICAgICAgIGtleXMsXG4gICAgICB9KVxuICAgICksXG4gICAgdXBkYXRlRW50aXRpZXM6IGNyZWF0ZUFjdGlvbihcbiAgICAgIGAke2FjdGlvbnNHcm91cEtleX0gVXBkYXRlICR7ZW50aXRpZXNOYW1lfWAsXG4gICAgICAoLi4udXBkYXRlczogVXBkYXRlPEVudGl0eT5bXSkgPT4gKHtcbiAgICAgICAgdXBkYXRlcyxcbiAgICAgIH0pXG4gICAgKSxcbiAgICB1cHNlcnRFbnRpdGllczogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBVcHNlcnQgJHtlbnRpdGllc05hbWV9YCxcbiAgICAgICguLi5lbnRpdGllczogRW50aXR5W10pID0+ICh7XG4gICAgICAgIGVudGl0aWVzLFxuICAgICAgfSlcbiAgICApLFxuICAgIHJlbW92ZUFsbEVudGl0aWVzOiBjcmVhdGVBY3Rpb24oXG4gICAgICBgJHthY3Rpb25zR3JvdXBLZXl9IFJlbW92ZSBBbGwgJHtlbnRpdGllc05hbWV9YCxcbiAgICAgIChwcmVkaWNhdGU/OiBQcmVkaWNhdGU8RW50aXR5PikgPT4gKHsgcHJlZGljYXRlIH0pXG4gICAgKSxcbiAgICBjbGVhckVudGl0aWVzQ2hhbmdlczogY3JlYXRlQWN0aW9uKFxuICAgICAgYCR7YWN0aW9uc0dyb3VwS2V5fSBDbGVhciAgJHtlbnRpdGllc05hbWV9IENoYW5nZXNgXG4gICAgKSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createTraitFactory, } from '@ngrx-traits/core';
|
|
2
|
+
import { createCrudTraitActions } from './crud-entities.trait.actions';
|
|
3
|
+
import { createCrudTraitSelectors } from './crud-entities.trait.selectors';
|
|
4
|
+
import { createCrudInitialState, createCrudTraitReducer, } from './crud-entities.trait.reducer';
|
|
5
|
+
import { crudEntitiesTraitKey, } from './crud-entities.model';
|
|
6
|
+
import { loadEntitiesTraitKey, } from '../load-entities/load-entities.model';
|
|
7
|
+
import { createCrudTraitMutators } from './crud-entities.trait.mutators';
|
|
8
|
+
/**
|
|
9
|
+
* Generates ngrx code to add, remove update, upsert entities on a list, it also
|
|
10
|
+
* tracks the changes made, helpful for implementing batch updates. The `storeChanges` (false by default),
|
|
11
|
+
* will store for add and update the changed entity props in the property `entityChanges` of the `Change` object.
|
|
12
|
+
* @param config
|
|
13
|
+
* @param config.storeChanges - Will store the changes made, default fals
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* // The following trait config
|
|
17
|
+
*
|
|
18
|
+
* export interface TestState
|
|
19
|
+
* extends EntityAndStatusState<Todo>, CrudState<Todo>{}
|
|
20
|
+
*
|
|
21
|
+
* const traits = createEntityFeatureFactory(
|
|
22
|
+
* addLoadEntitiesTrait<Todo>(),
|
|
23
|
+
* addCrudEntitiesTrait<Todo>()
|
|
24
|
+
* )({
|
|
25
|
+
* actionsGroupKey: '[Todos]',
|
|
26
|
+
* featureSelector: createFeatureSelector<TestState>>(
|
|
27
|
+
* 'todos',
|
|
28
|
+
* ),
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* // adds following props to the state:
|
|
32
|
+
* // changes: Change<Todo>[];
|
|
33
|
+
*
|
|
34
|
+
* // generated actions
|
|
35
|
+
* traits.actions.addTodos(entity1,entity2...)
|
|
36
|
+
* traits.actions.updateTodos({id: id1, changes:{prop1}},{id: id2, changes:{prop2}} ...)
|
|
37
|
+
* traits.actions.upsertTodos(entity1,entity2...)
|
|
38
|
+
* traits.actions.removeAllTodos()
|
|
39
|
+
* traits.actions.clearTodosChanges()
|
|
40
|
+
* // generated selectors
|
|
41
|
+
* traits.selectors.selectTodosChangesList()
|
|
42
|
+
* traits.selectors.selectFilteredTodosChangesList()
|
|
43
|
+
* traits.selectors.selectAllFilteredChanges()
|
|
44
|
+
*/
|
|
45
|
+
export function addCrudEntitiesTrait({ storeChanges = false, } = {}) {
|
|
46
|
+
return createTraitFactory({
|
|
47
|
+
key: crudEntitiesTraitKey,
|
|
48
|
+
depends: [loadEntitiesTraitKey],
|
|
49
|
+
config: { storeChanges },
|
|
50
|
+
actions: ({ actionsGroupKey, entitiesName }) => createCrudTraitActions(actionsGroupKey, entitiesName),
|
|
51
|
+
selectors: ({ previousSelectors }) => createCrudTraitSelectors(previousSelectors),
|
|
52
|
+
mutators: ({ allConfigs }) => createCrudTraitMutators(allConfigs),
|
|
53
|
+
initialState: ({ previousInitialState }) => createCrudInitialState(previousInitialState),
|
|
54
|
+
reducer: ({ initialState, allActions, allMutators, allConfigs }) => createCrudTraitReducer(initialState, allActions, allMutators, allConfigs),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1lbnRpdGllcy50cmFpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvY3J1ZC1lbnRpdGllcy9jcnVkLWVudGl0aWVzLnRyYWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxrQkFBa0IsR0FLbkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHNCQUFzQixHQUN2QixNQUFNLCtCQUErQixDQUFDO0FBS3ZDLE9BQU8sRUFJTCxvQkFBb0IsR0FDckIsTUFBTSx1QkFBdUIsQ0FBQztBQUsvQixPQUFPLEVBSUwsb0JBQW9CLEdBQ3JCLE1BQU0sc0NBQXNDLENBQUM7QUFLOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9DRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBUyxFQUMzQyxZQUFZLEdBQUcsS0FBSyxNQUNFLEVBQUU7SUFDeEIsT0FBTyxrQkFBa0IsQ0FBQztRQUN4QixHQUFHLEVBQUUsb0JBQW9CO1FBQ3pCLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO1FBQy9CLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBd0I7UUFDOUMsT0FBTyxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUE2QixFQUFFLEVBQUUsQ0FDeEUsc0JBQXNCLENBQVMsZUFBZSxFQUFFLFlBQVksQ0FBQztRQUMvRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQixFQUErQixFQUFFLEVBQUUsQ0FDaEUsd0JBQXdCLENBQ3RCLGlCQUFrRCxDQUNuRDtRQUNILFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFtQyxFQUFFLEVBQUUsQ0FDNUQsdUJBQXVCLENBQ3JCLFVBQXVFLENBQ3hFO1FBQ0gsWUFBWSxFQUFFLENBQUMsRUFBRSxvQkFBb0IsRUFBa0MsRUFBRSxFQUFFLENBQ3pFLHNCQUFzQixDQUFTLG9CQUFvQixDQUFDO1FBQ3RELE9BQU8sRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUNqRSxzQkFBc0IsQ0FDcEIsWUFBWSxFQUNaLFVBSTJCLEVBQzNCLFdBQVcsRUFDWCxVQUkrQixDQUNoQztLQUNKLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjcmVhdGVUcmFpdEZhY3RvcnksXG4gIFRyYWl0QWN0aW9uc0ZhY3RvcnlDb25maWcsXG4gIFRyYWl0SW5pdGlhbFN0YXRlRmFjdG9yeUNvbmZpZyxcbiAgVHJhaXRTZWxlY3RvcnNGYWN0b3J5Q29uZmlnLFxuICBUcmFpdFN0YXRlTXV0YXRvcnNGYWN0b3J5Q29uZmlnLFxufSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVDcnVkVHJhaXRBY3Rpb25zIH0gZnJvbSAnLi9jcnVkLWVudGl0aWVzLnRyYWl0LmFjdGlvbnMnO1xuaW1wb3J0IHsgY3JlYXRlQ3J1ZFRyYWl0U2VsZWN0b3JzIH0gZnJvbSAnLi9jcnVkLWVudGl0aWVzLnRyYWl0LnNlbGVjdG9ycyc7XG5pbXBvcnQge1xuICBjcmVhdGVDcnVkSW5pdGlhbFN0YXRlLFxuICBjcmVhdGVDcnVkVHJhaXRSZWR1Y2VyLFxufSBmcm9tICcuL2NydWQtZW50aXRpZXMudHJhaXQucmVkdWNlcic7XG5pbXBvcnQge1xuICBTb3J0RW50aXRpZXNBY3Rpb25zLFxuICBTb3J0RW50aXRpZXNLZXllZENvbmZpZyxcbn0gZnJvbSAnLi4vc29ydC1lbnRpdGllcy9zb3J0LWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIENydWRFbnRpdGllc0FjdGlvbnMsXG4gIENydWRFbnRpdGllc0NvbmZpZyxcbiAgQ3J1ZEVudGl0aWVzS2V5ZWRDb25maWcsXG4gIGNydWRFbnRpdGllc1RyYWl0S2V5LFxufSBmcm9tICcuL2NydWQtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHtcbiAgRmlsdGVyRW50aXRpZXNBY3Rpb25zLFxuICBGaWx0ZXJFbnRpdGllc0tleWVkQ29uZmlnLFxufSBmcm9tICcuLi9maWx0ZXItZW50aXRpZXMvZmlsdGVyLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIExvYWRFbnRpdGllc0FjdGlvbnMsXG4gIExvYWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBMb2FkRW50aXRpZXNTZWxlY3RvcnMsXG4gIGxvYWRFbnRpdGllc1RyYWl0S2V5LFxufSBmcm9tICcuLi9sb2FkLWVudGl0aWVzL2xvYWQtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHtcbiAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWcsXG59IGZyb20gJy4uL2VudGl0aWVzLXBhZ2luYXRpb24vZW50aXRpZXMtcGFnaW5hdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBjcmVhdGVDcnVkVHJhaXRNdXRhdG9ycyB9IGZyb20gJy4vY3J1ZC1lbnRpdGllcy50cmFpdC5tdXRhdG9ycyc7XG5cbi8qKlxuICogR2VuZXJhdGVzIG5ncnggY29kZSB0byBhZGQsIHJlbW92ZSB1cGRhdGUsIHVwc2VydCBlbnRpdGllcyBvbiBhIGxpc3QsIGl0IGFsc29cbiAqIHRyYWNrcyB0aGUgY2hhbmdlcyBtYWRlLCBoZWxwZnVsIGZvciBpbXBsZW1lbnRpbmcgYmF0Y2ggdXBkYXRlcy4gVGhlIGBzdG9yZUNoYW5nZXNgIChmYWxzZSBieSBkZWZhdWx0KSxcbiAqIHdpbGwgc3RvcmUgZm9yIGFkZCBhbmQgdXBkYXRlIHRoZSBjaGFuZ2VkIGVudGl0eSBwcm9wcyBpbiB0aGUgcHJvcGVydHkgYGVudGl0eUNoYW5nZXNgIG9mIHRoZSBgQ2hhbmdlYCBvYmplY3QuXG4gKiBAcGFyYW0gY29uZmlnXG4gKiBAcGFyYW0gY29uZmlnLnN0b3JlQ2hhbmdlcyAtIFdpbGwgc3RvcmUgdGhlIGNoYW5nZXMgbWFkZSwgZGVmYXVsdCBmYWxzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBmb2xsb3dpbmcgdHJhaXQgY29uZmlnXG4gKlxuICogZXhwb3J0IGludGVyZmFjZSBUZXN0U3RhdGVcbiAqIGV4dGVuZHMgRW50aXR5QW5kU3RhdHVzU3RhdGU8VG9kbz4sIENydWRTdGF0ZTxUb2RvPnt9XG4gKlxuICogICAgY29uc3QgdHJhaXRzID0gY3JlYXRlRW50aXR5RmVhdHVyZUZhY3RvcnkoXG4gKiAgICAgIGFkZExvYWRFbnRpdGllc1RyYWl0PFRvZG8+KCksXG4gKiAgICAgIGFkZENydWRFbnRpdGllc1RyYWl0PFRvZG8+KClcbiAqICAgICkoe1xuICogICAgICBhY3Rpb25zR3JvdXBLZXk6ICdbVG9kb3NdJyxcbiAqICAgICAgZmVhdHVyZVNlbGVjdG9yOiBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8VGVzdFN0YXRlPj4oXG4gKiAgICAgICAgJ3RvZG9zJyxcbiAqICAgICAgKSxcbiAqICAgIH0pO1xuICpcbiAqIC8vICAgYWRkcyBmb2xsb3dpbmcgcHJvcHMgdG8gdGhlIHN0YXRlOlxuICogLy8gICAgY2hhbmdlczogQ2hhbmdlPFRvZG8+W107XG4gKlxuICogLy8gZ2VuZXJhdGVkIGFjdGlvbnNcbiAqIHRyYWl0cy5hY3Rpb25zLmFkZFRvZG9zKGVudGl0eTEsZW50aXR5Mi4uLilcbiAqIHRyYWl0cy5hY3Rpb25zLnVwZGF0ZVRvZG9zKHtpZDogaWQxLCBjaGFuZ2VzOntwcm9wMX19LHtpZDogaWQyLCBjaGFuZ2VzOntwcm9wMn19IC4uLilcbiAqIHRyYWl0cy5hY3Rpb25zLnVwc2VydFRvZG9zKGVudGl0eTEsZW50aXR5Mi4uLilcbiAqIHRyYWl0cy5hY3Rpb25zLnJlbW92ZUFsbFRvZG9zKClcbiAqIHRyYWl0cy5hY3Rpb25zLmNsZWFyVG9kb3NDaGFuZ2VzKClcbiAqIC8vIGdlbmVyYXRlZCBzZWxlY3RvcnNcbiAqIHRyYWl0cy5zZWxlY3RvcnMuc2VsZWN0VG9kb3NDaGFuZ2VzTGlzdCgpXG4gKiB0cmFpdHMuc2VsZWN0b3JzLnNlbGVjdEZpbHRlcmVkVG9kb3NDaGFuZ2VzTGlzdCgpXG4gKiB0cmFpdHMuc2VsZWN0b3JzLnNlbGVjdEFsbEZpbHRlcmVkQ2hhbmdlcygpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRDcnVkRW50aXRpZXNUcmFpdDxFbnRpdHk+KHtcbiAgc3RvcmVDaGFuZ2VzID0gZmFsc2UsXG59OiBDcnVkRW50aXRpZXNDb25maWcgPSB7fSkge1xuICByZXR1cm4gY3JlYXRlVHJhaXRGYWN0b3J5KHtcbiAgICBrZXk6IGNydWRFbnRpdGllc1RyYWl0S2V5LFxuICAgIGRlcGVuZHM6IFtsb2FkRW50aXRpZXNUcmFpdEtleV0sXG4gICAgY29uZmlnOiB7IHN0b3JlQ2hhbmdlcyB9IGFzIENydWRFbnRpdGllc0NvbmZpZyxcbiAgICBhY3Rpb25zOiAoeyBhY3Rpb25zR3JvdXBLZXksIGVudGl0aWVzTmFtZSB9OiBUcmFpdEFjdGlvbnNGYWN0b3J5Q29uZmlnKSA9PlxuICAgICAgY3JlYXRlQ3J1ZFRyYWl0QWN0aW9uczxFbnRpdHk+KGFjdGlvbnNHcm91cEtleSwgZW50aXRpZXNOYW1lKSxcbiAgICBzZWxlY3RvcnM6ICh7IHByZXZpb3VzU2VsZWN0b3JzIH06IFRyYWl0U2VsZWN0b3JzRmFjdG9yeUNvbmZpZykgPT5cbiAgICAgIGNyZWF0ZUNydWRUcmFpdFNlbGVjdG9yczxFbnRpdHk+KFxuICAgICAgICBwcmV2aW91c1NlbGVjdG9ycyBhcyBMb2FkRW50aXRpZXNTZWxlY3RvcnM8RW50aXR5PlxuICAgICAgKSxcbiAgICBtdXRhdG9yczogKHsgYWxsQ29uZmlncyB9OiBUcmFpdFN0YXRlTXV0YXRvcnNGYWN0b3J5Q29uZmlnKSA9PlxuICAgICAgY3JlYXRlQ3J1ZFRyYWl0TXV0YXRvcnM8RW50aXR5PihcbiAgICAgICAgYWxsQ29uZmlncyBhcyBDcnVkRW50aXRpZXNLZXllZENvbmZpZyAmIExvYWRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT5cbiAgICAgICksXG4gICAgaW5pdGlhbFN0YXRlOiAoeyBwcmV2aW91c0luaXRpYWxTdGF0ZSB9OiBUcmFpdEluaXRpYWxTdGF0ZUZhY3RvcnlDb25maWcpID0+XG4gICAgICBjcmVhdGVDcnVkSW5pdGlhbFN0YXRlPEVudGl0eT4ocHJldmlvdXNJbml0aWFsU3RhdGUpLFxuICAgIHJlZHVjZXI6ICh7IGluaXRpYWxTdGF0ZSwgYWxsQWN0aW9ucywgYWxsTXV0YXRvcnMsIGFsbENvbmZpZ3MgfSkgPT5cbiAgICAgIGNyZWF0ZUNydWRUcmFpdFJlZHVjZXIoXG4gICAgICAgIGluaXRpYWxTdGF0ZSxcbiAgICAgICAgYWxsQWN0aW9ucyBhcyBDcnVkRW50aXRpZXNBY3Rpb25zPEVudGl0eT4gJlxuICAgICAgICAgIExvYWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgICAgICAgU29ydEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICAgICAgICBGaWx0ZXJFbnRpdGllc0FjdGlvbnM8YW55PiAmXG4gICAgICAgICAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgICAgICAgYWxsTXV0YXRvcnMsXG4gICAgICAgIGFsbENvbmZpZ3MgYXMgQ3J1ZEVudGl0aWVzS2V5ZWRDb25maWcgJlxuICAgICAgICAgIEZpbHRlckVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5LCB1bmtub3duPiAmXG4gICAgICAgICAgTG9hZEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PiAmXG4gICAgICAgICAgU29ydEVudGl0aWVzS2V5ZWRDb25maWc8RW50aXR5PiAmXG4gICAgICAgICAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWdcbiAgICAgICksXG4gIH0pO1xufVxuIl19
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { ChangeType, } from './crud-entities.model';
|
|
2
|
+
export function createCrudTraitMutators(allConfigs) {
|
|
3
|
+
const { storeChanges } = allConfigs.crud || {};
|
|
4
|
+
const adapter = allConfigs.loadEntities.adapter;
|
|
5
|
+
function generateChangeEntry(entity, changeType, customId) {
|
|
6
|
+
return {
|
|
7
|
+
id: customId ?? adapter.selectId(entity),
|
|
8
|
+
changeType,
|
|
9
|
+
entityChanges: (storeChanges && entity) || undefined,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function addEntities(entities, state, addFirst = false) {
|
|
13
|
+
const changes = [
|
|
14
|
+
...state.changes,
|
|
15
|
+
...entities.map((entity) => generateChangeEntry(entity, ChangeType.CREATED)),
|
|
16
|
+
];
|
|
17
|
+
if (!addFirst)
|
|
18
|
+
return adapter.addMany(entities, {
|
|
19
|
+
...state,
|
|
20
|
+
changes,
|
|
21
|
+
});
|
|
22
|
+
const newIds = entities.map((e) => adapter.selectId(e));
|
|
23
|
+
const newEntities = { ...state.entities };
|
|
24
|
+
entities.forEach((e) => {
|
|
25
|
+
const id = adapter.selectId(e);
|
|
26
|
+
newEntities[id] = e;
|
|
27
|
+
});
|
|
28
|
+
return {
|
|
29
|
+
...state,
|
|
30
|
+
ids: [...newIds, ...state.ids],
|
|
31
|
+
entities: newEntities,
|
|
32
|
+
changes,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function upsertEntities(entities, state) {
|
|
36
|
+
const oldChanges = [...state.changes];
|
|
37
|
+
const existingIds = adapter.getSelectors().selectIds(state);
|
|
38
|
+
const [additions, updates] = entities.reduce(([a, u], entity) => existingIds.indexOf(adapter.selectId(entity)) !== -1
|
|
39
|
+
? [a, [...u, entity]]
|
|
40
|
+
: [[...a, entity], u], [new Array(), new Array()]);
|
|
41
|
+
return adapter.upsertMany(entities, {
|
|
42
|
+
...state,
|
|
43
|
+
changes: [
|
|
44
|
+
...oldChanges,
|
|
45
|
+
...additions.map((entity) => generateChangeEntry(entity, ChangeType.CREATED)),
|
|
46
|
+
...updates.map((entity) => generateChangeEntry(entity, ChangeType.UPDATED)),
|
|
47
|
+
],
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function removeEntities(keysOrPredicate, state) {
|
|
51
|
+
if (typeof keysOrPredicate === 'function') {
|
|
52
|
+
return adapter.removeMany(keysOrPredicate, {
|
|
53
|
+
...state,
|
|
54
|
+
changes: [
|
|
55
|
+
...state.changes,
|
|
56
|
+
...state.ids.map((id) => ({
|
|
57
|
+
id,
|
|
58
|
+
changeType: ChangeType.DELETED,
|
|
59
|
+
})),
|
|
60
|
+
],
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return adapter.removeMany(keysOrPredicate, {
|
|
64
|
+
...state,
|
|
65
|
+
changes: [
|
|
66
|
+
...state.changes,
|
|
67
|
+
...keysOrPredicate.map((key) => ({
|
|
68
|
+
id: key,
|
|
69
|
+
changeType: ChangeType.DELETED,
|
|
70
|
+
})),
|
|
71
|
+
],
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
function removeAllEntities(state) {
|
|
75
|
+
return adapter.removeAll({
|
|
76
|
+
...state,
|
|
77
|
+
changes: [
|
|
78
|
+
...state.changes,
|
|
79
|
+
...state.ids.map((id) => ({
|
|
80
|
+
id,
|
|
81
|
+
changeType: ChangeType.DELETED,
|
|
82
|
+
})),
|
|
83
|
+
],
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function clearEntitiesChanges(state) {
|
|
87
|
+
return { ...state, changes: [] };
|
|
88
|
+
}
|
|
89
|
+
function updateEntities(updates, state) {
|
|
90
|
+
const oldChanges = [...state.changes];
|
|
91
|
+
updates.forEach((updated) => {
|
|
92
|
+
const id = adapter.selectId(updated.changes);
|
|
93
|
+
if (id && id !== updated.id) {
|
|
94
|
+
// if the id changes update the id of pold changes
|
|
95
|
+
const index = oldChanges.findIndex((v) => v.id === updated.id);
|
|
96
|
+
const oldChange = oldChanges[index];
|
|
97
|
+
oldChanges[index] = { ...oldChange, id };
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return adapter.updateMany(updates, {
|
|
101
|
+
...state,
|
|
102
|
+
changes: [
|
|
103
|
+
...oldChanges,
|
|
104
|
+
...updates.map((updated) => ({
|
|
105
|
+
id: adapter.selectId(updated.changes) ?? updated.id,
|
|
106
|
+
changeType: ChangeType.UPDATED,
|
|
107
|
+
entityChanges: (storeChanges && updated.changes) || undefined,
|
|
108
|
+
})),
|
|
109
|
+
],
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
addEntities,
|
|
114
|
+
removeEntities,
|
|
115
|
+
updateEntities,
|
|
116
|
+
removeAllEntities,
|
|
117
|
+
clearEntitiesChanges,
|
|
118
|
+
upsertEntities,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1lbnRpdGllcy50cmFpdC5tdXRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvY3J1ZC1lbnRpdGllcy9jcnVkLWVudGl0aWVzLnRyYWl0Lm11dGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxVQUFVLEdBSVgsTUFBTSx1QkFBdUIsQ0FBQztBQU8vQixNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLFVBQXFFO0lBRXJFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUMvQyxNQUFNLE9BQU8sR0FBRyxVQUFXLENBQUMsWUFBYSxDQUFDLE9BQU8sQ0FBQztJQUVsRCxTQUFTLG1CQUFtQixDQUMxQixNQUFjLEVBQ2QsVUFBc0IsRUFDdEIsUUFBMEI7UUFFMUIsT0FBTztZQUNMLEVBQUUsRUFBRSxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDeEMsVUFBVTtZQUNWLGFBQWEsRUFBRSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsSUFBSSxTQUFTO1NBQ3JELENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxXQUFXLENBRWxCLFFBQWtCLEVBQUUsS0FBUSxFQUFFLFFBQVEsR0FBRyxLQUFLO1FBQzlDLE1BQU0sT0FBTyxHQUFHO1lBQ2QsR0FBRyxLQUFLLENBQUMsT0FBTztZQUNoQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUN6QixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUNoRDtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUTtZQUNYLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQy9CLEdBQUcsS0FBSztnQkFDUixPQUFPO2FBQ1IsQ0FBQyxDQUFDO1FBRUwsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sV0FBVyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3JCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDOUIsUUFBUSxFQUFFLFdBQVc7WUFDckIsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxjQUFjLENBRXJCLFFBQWtCLEVBQUUsS0FBUTtRQUM1QixNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFhLENBQUM7UUFFeEUsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUMxQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ2pCLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFnQixDQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDckIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDekIsQ0FBQyxJQUFJLEtBQUssRUFBVSxFQUFFLElBQUksS0FBSyxFQUFVLENBQUMsQ0FDM0MsQ0FBQztRQUVGLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDbEMsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFO2dCQUNQLEdBQUcsVUFBVTtnQkFFYixHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUMxQixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUNoRDtnQkFDRCxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUN4QixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUNoRDthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVdELFNBQVMsY0FBYyxDQUVyQixlQUF3RCxFQUFFLEtBQVE7UUFDbEUsSUFBSSxPQUFPLGVBQWUsS0FBSyxVQUFVLEVBQUU7WUFDekMsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRTtnQkFDekMsR0FBRyxLQUFLO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxHQUFHLEtBQUssQ0FBQyxPQUFPO29CQUNoQixHQUFJLEtBQUssQ0FBQyxHQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNuQyxFQUFFO3dCQUNGLFVBQVUsRUFBRSxVQUFVLENBQUMsT0FBTztxQkFDL0IsQ0FBQyxDQUFDO2lCQUNKO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsZUFBMkIsRUFBRTtZQUNyRCxHQUFHLEtBQUs7WUFDUixPQUFPLEVBQUU7Z0JBQ1AsR0FBRyxLQUFLLENBQUMsT0FBTztnQkFDaEIsR0FBSSxlQUE0QixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDckQsRUFBRSxFQUFFLEdBQUc7b0JBQ1AsVUFBVSxFQUFFLFVBQVUsQ0FBQyxPQUFPO2lCQUMvQixDQUFDLENBQUM7YUFDSjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxTQUFTLGlCQUFpQixDQUV4QixLQUFRO1FBQ1IsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQ3ZCLEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRTtnQkFDUCxHQUFHLEtBQUssQ0FBQyxPQUFPO2dCQUNoQixHQUFJLEtBQUssQ0FBQyxHQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNuQyxFQUFFO29CQUNGLFVBQVUsRUFBRSxVQUFVLENBQUMsT0FBTztpQkFDL0IsQ0FBQyxDQUFDO2FBQ0o7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsU0FBUyxvQkFBb0IsQ0FFM0IsS0FBUTtRQUNSLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELFNBQVMsY0FBYyxDQUVyQixPQUF5QixFQUFFLEtBQVE7UUFDbkMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDMUIsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBaUIsQ0FBQyxDQUFDO1lBQ3ZELElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxFQUFFO2dCQUMzQixrREFBa0Q7Z0JBQ2xELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDO2FBQzFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO1lBQ2pDLEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRTtnQkFDUCxHQUFHLFVBQVU7Z0JBQ2IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUNaLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDVixDQUFDO29CQUNDLEVBQUUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFpQixDQUFDLElBQUksT0FBTyxDQUFDLEVBQUU7b0JBQzdELFVBQVUsRUFBRSxVQUFVLENBQUMsT0FBTztvQkFDOUIsYUFBYSxFQUFFLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxTQUFTO2lCQUMzQyxDQUFBLENBQ3ZCO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNMLFdBQVc7UUFDWCxjQUFjO1FBQ2QsY0FBYztRQUNkLGlCQUFpQjtRQUNqQixvQkFBb0I7UUFDcEIsY0FBYztLQUNmLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlLFxuICBDaGFuZ2VUeXBlLFxuICBDcnVkRW50aXRpZXNLZXllZENvbmZpZyxcbiAgQ3J1ZEVudGl0aWVzTXV0YXRvcnMsXG4gIENydWRFbnRpdGllc1N0YXRlLFxufSBmcm9tICcuL2NydWQtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHsgUHJlZGljYXRlLCBVcGRhdGUgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xuaW1wb3J0IHtcbiAgTG9hZEVudGl0aWVzS2V5ZWRDb25maWcsXG4gIExvYWRFbnRpdGllc1N0YXRlLFxufSBmcm9tICcuLi9sb2FkLWVudGl0aWVzL2xvYWQtZW50aXRpZXMubW9kZWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3J1ZFRyYWl0TXV0YXRvcnM8RW50aXR5PihcbiAgYWxsQ29uZmlnczogQ3J1ZEVudGl0aWVzS2V5ZWRDb25maWcgJiBMb2FkRW50aXRpZXNLZXllZENvbmZpZzxFbnRpdHk+XG4pOiBDcnVkRW50aXRpZXNNdXRhdG9yczxFbnRpdHk+IHtcbiAgY29uc3QgeyBzdG9yZUNoYW5nZXMgfSA9IGFsbENvbmZpZ3MuY3J1ZCB8fCB7fTtcbiAgY29uc3QgYWRhcHRlciA9IGFsbENvbmZpZ3MhLmxvYWRFbnRpdGllcyEuYWRhcHRlcjtcblxuICBmdW5jdGlvbiBnZW5lcmF0ZUNoYW5nZUVudHJ5KFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIGNoYW5nZVR5cGU6IENoYW5nZVR5cGUsXG4gICAgY3VzdG9tSWQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBjdXN0b21JZCA/PyBhZGFwdGVyLnNlbGVjdElkKGVudGl0eSksXG4gICAgICBjaGFuZ2VUeXBlLFxuICAgICAgZW50aXR5Q2hhbmdlczogKHN0b3JlQ2hhbmdlcyAmJiBlbnRpdHkpIHx8IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gYWRkRW50aXRpZXM8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+XG4gID4oZW50aXRpZXM6IEVudGl0eVtdLCBzdGF0ZTogUywgYWRkRmlyc3QgPSBmYWxzZSkge1xuICAgIGNvbnN0IGNoYW5nZXMgPSBbXG4gICAgICAuLi5zdGF0ZS5jaGFuZ2VzLFxuICAgICAgLi4uZW50aXRpZXMubWFwKChlbnRpdHkpID0+XG4gICAgICAgIGdlbmVyYXRlQ2hhbmdlRW50cnkoZW50aXR5LCBDaGFuZ2VUeXBlLkNSRUFURUQpXG4gICAgICApLFxuICAgIF07XG4gICAgaWYgKCFhZGRGaXJzdClcbiAgICAgIHJldHVybiBhZGFwdGVyLmFkZE1hbnkoZW50aXRpZXMsIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGNoYW5nZXMsXG4gICAgICB9KTtcblxuICAgIGNvbnN0IG5ld0lkcyA9IGVudGl0aWVzLm1hcCgoZSkgPT4gYWRhcHRlci5zZWxlY3RJZChlKSk7XG4gICAgY29uc3QgbmV3RW50aXRpZXMgPSB7IC4uLnN0YXRlLmVudGl0aWVzIH07XG4gICAgZW50aXRpZXMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgY29uc3QgaWQgPSBhZGFwdGVyLnNlbGVjdElkKGUpO1xuICAgICAgbmV3RW50aXRpZXNbaWRdID0gZTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBpZHM6IFsuLi5uZXdJZHMsIC4uLnN0YXRlLmlkc10sXG4gICAgICBlbnRpdGllczogbmV3RW50aXRpZXMsXG4gICAgICBjaGFuZ2VzLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiB1cHNlcnRFbnRpdGllczxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT5cbiAgPihlbnRpdGllczogRW50aXR5W10sIHN0YXRlOiBTKSB7XG4gICAgY29uc3Qgb2xkQ2hhbmdlcyA9IFsuLi5zdGF0ZS5jaGFuZ2VzXTtcbiAgICBjb25zdCBleGlzdGluZ0lkcyA9IGFkYXB0ZXIuZ2V0U2VsZWN0b3JzKCkuc2VsZWN0SWRzKHN0YXRlKSBhcyBzdHJpbmdbXTtcblxuICAgIGNvbnN0IFthZGRpdGlvbnMsIHVwZGF0ZXNdID0gZW50aXRpZXMucmVkdWNlKFxuICAgICAgKFthLCB1XSwgZW50aXR5KSA9PlxuICAgICAgICBleGlzdGluZ0lkcy5pbmRleE9mKGFkYXB0ZXIuc2VsZWN0SWQoZW50aXR5IGFzIEVudGl0eSkgYXMgc3RyaW5nKSAhPT0gLTFcbiAgICAgICAgICA/IFthLCBbLi4udSwgZW50aXR5XV1cbiAgICAgICAgICA6IFtbLi4uYSwgZW50aXR5XSwgdV0sXG4gICAgICBbbmV3IEFycmF5PEVudGl0eT4oKSwgbmV3IEFycmF5PEVudGl0eT4oKV1cbiAgICApO1xuXG4gICAgcmV0dXJuIGFkYXB0ZXIudXBzZXJ0TWFueShlbnRpdGllcywge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBjaGFuZ2VzOiBbXG4gICAgICAgIC4uLm9sZENoYW5nZXMsXG5cbiAgICAgICAgLi4uYWRkaXRpb25zLm1hcCgoZW50aXR5KSA9PlxuICAgICAgICAgIGdlbmVyYXRlQ2hhbmdlRW50cnkoZW50aXR5LCBDaGFuZ2VUeXBlLkNSRUFURUQpXG4gICAgICAgICksXG4gICAgICAgIC4uLnVwZGF0ZXMubWFwKChlbnRpdHkpID0+XG4gICAgICAgICAgZ2VuZXJhdGVDaGFuZ2VFbnRyeShlbnRpdHksIENoYW5nZVR5cGUuVVBEQVRFRClcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVFbnRpdGllczxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT5cbiAgPihrZXlzOiBudW1iZXJbXSwgc3RhdGU6IFMpOiBTO1xuICBmdW5jdGlvbiByZW1vdmVFbnRpdGllczxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT5cbiAgPihrZXlzOiBzdHJpbmdbXSwgc3RhdGU6IFMpOiBTO1xuICBmdW5jdGlvbiByZW1vdmVFbnRpdGllczxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT5cbiAgPihwcmVkaWNhdGU6IFByZWRpY2F0ZTxFbnRpdHk+LCBzdGF0ZTogUyk6IFM7XG4gIGZ1bmN0aW9uIHJlbW92ZUVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PlxuICA+KGtleXNPclByZWRpY2F0ZTogUHJlZGljYXRlPEVudGl0eT4gfCBzdHJpbmdbXSB8IG51bWJlcltdLCBzdGF0ZTogUyk6IFMge1xuICAgIGlmICh0eXBlb2Yga2V5c09yUHJlZGljYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gYWRhcHRlci5yZW1vdmVNYW55KGtleXNPclByZWRpY2F0ZSwge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY2hhbmdlczogW1xuICAgICAgICAgIC4uLnN0YXRlLmNoYW5nZXMsXG4gICAgICAgICAgLi4uKHN0YXRlLmlkcyBhcyBhbnlbXSkubWFwKChpZCkgPT4gKHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgY2hhbmdlVHlwZTogQ2hhbmdlVHlwZS5ERUxFVEVELFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhZGFwdGVyLnJlbW92ZU1hbnkoa2V5c09yUHJlZGljYXRlIGFzIHN0cmluZ1tdLCB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGNoYW5nZXM6IFtcbiAgICAgICAgLi4uc3RhdGUuY2hhbmdlcyxcbiAgICAgICAgLi4uKGtleXNPclByZWRpY2F0ZSBhcyBzdHJpbmdbXSkubWFwKChrZXk6IHN0cmluZykgPT4gKHtcbiAgICAgICAgICBpZDoga2V5LFxuICAgICAgICAgIGNoYW5nZVR5cGU6IENoYW5nZVR5cGUuREVMRVRFRCxcbiAgICAgICAgfSkpLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiByZW1vdmVBbGxFbnRpdGllczxcbiAgICBTIGV4dGVuZHMgTG9hZEVudGl0aWVzU3RhdGU8RW50aXR5PiAmIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT5cbiAgPihzdGF0ZTogUyk6IFMge1xuICAgIHJldHVybiBhZGFwdGVyLnJlbW92ZUFsbCh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGNoYW5nZXM6IFtcbiAgICAgICAgLi4uc3RhdGUuY2hhbmdlcyxcbiAgICAgICAgLi4uKHN0YXRlLmlkcyBhcyBhbnlbXSkubWFwKChpZCkgPT4gKHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBjaGFuZ2VUeXBlOiBDaGFuZ2VUeXBlLkRFTEVURUQsXG4gICAgICAgIH0pKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gY2xlYXJFbnRpdGllc0NoYW5nZXM8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+XG4gID4oc3RhdGU6IFMpIHtcbiAgICByZXR1cm4geyAuLi5zdGF0ZSwgY2hhbmdlczogW10gfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUVudGl0aWVzPFxuICAgIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PlxuICA+KHVwZGF0ZXM6IFVwZGF0ZTxFbnRpdHk+W10sIHN0YXRlOiBTKSB7XG4gICAgY29uc3Qgb2xkQ2hhbmdlcyA9IFsuLi5zdGF0ZS5jaGFuZ2VzXTtcbiAgICB1cGRhdGVzLmZvckVhY2goKHVwZGF0ZWQpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gYWRhcHRlci5zZWxlY3RJZCh1cGRhdGVkLmNoYW5nZXMgYXMgRW50aXR5KTtcbiAgICAgIGlmIChpZCAmJiBpZCAhPT0gdXBkYXRlZC5pZCkge1xuICAgICAgICAvLyBpZiB0aGUgaWQgY2hhbmdlcyB1cGRhdGUgdGhlIGlkIG9mIHBvbGQgY2hhbmdlc1xuICAgICAgICBjb25zdCBpbmRleCA9IG9sZENoYW5nZXMuZmluZEluZGV4KCh2KSA9PiB2LmlkID09PSB1cGRhdGVkLmlkKTtcbiAgICAgICAgY29uc3Qgb2xkQ2hhbmdlID0gb2xkQ2hhbmdlc1tpbmRleF07XG4gICAgICAgIG9sZENoYW5nZXNbaW5kZXhdID0geyAuLi5vbGRDaGFuZ2UsIGlkIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGFkYXB0ZXIudXBkYXRlTWFueSh1cGRhdGVzLCB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGNoYW5nZXM6IFtcbiAgICAgICAgLi4ub2xkQ2hhbmdlcyxcbiAgICAgICAgLi4udXBkYXRlcy5tYXAoXG4gICAgICAgICAgKHVwZGF0ZWQpID0+XG4gICAgICAgICAgICAoe1xuICAgICAgICAgICAgICBpZDogYWRhcHRlci5zZWxlY3RJZCh1cGRhdGVkLmNoYW5nZXMgYXMgRW50aXR5KSA/PyB1cGRhdGVkLmlkLFxuICAgICAgICAgICAgICBjaGFuZ2VUeXBlOiBDaGFuZ2VUeXBlLlVQREFURUQsXG4gICAgICAgICAgICAgIGVudGl0eUNoYW5nZXM6IChzdG9yZUNoYW5nZXMgJiYgdXBkYXRlZC5jaGFuZ2VzKSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICB9IGFzIENoYW5nZTxFbnRpdHk+KVxuICAgICAgICApLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWRkRW50aXRpZXMsXG4gICAgcmVtb3ZlRW50aXRpZXMsXG4gICAgdXBkYXRlRW50aXRpZXMsXG4gICAgcmVtb3ZlQWxsRW50aXRpZXMsXG4gICAgY2xlYXJFbnRpdGllc0NoYW5nZXMsXG4gICAgdXBzZXJ0RW50aXRpZXMsXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createReducer, on } from '@ngrx/store';
|
|
2
|
+
import { insertIf } from '@ngrx-traits/core';
|
|
3
|
+
export function createCrudInitialState(previousInitialState) {
|
|
4
|
+
return {
|
|
5
|
+
...previousInitialState,
|
|
6
|
+
changes: [],
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export function createCrudTraitReducer(initialState, allActions, allMutators, allConfigs) {
|
|
10
|
+
const sortRemote = allConfigs.sort?.remote;
|
|
11
|
+
const filterRemote = allConfigs.filter && !allConfigs.filter?.filterFn;
|
|
12
|
+
const paginationCacheType = allConfigs.pagination?.cacheType;
|
|
13
|
+
return createReducer(initialState, on(allActions.addEntities, (state, { entities }) => allMutators.addEntities(entities, state)), on(allActions.updateEntities, (state, { updates }) => allMutators.updateEntities(updates, state)), on(allActions.upsertEntities, (state, { entities }) => allMutators.upsertEntities(entities, state)), on(allActions.removeEntities, (state, { keys }) => allMutators.removeEntities(keys, state)), on(allActions.removeAllEntities, (state, { predicate }) => predicate
|
|
14
|
+
? allMutators.removeEntities(predicate, state)
|
|
15
|
+
: allMutators.removeAllEntities(state)), on(allActions.clearEntitiesChanges, (state) => allMutators.clearEntitiesChanges(state)), ...insertIf(sortRemote, () => on(allActions.sortEntities, (state) => allMutators.clearEntitiesChanges(state))), ...insertIf(filterRemote, () => on(allActions.filterEntities, (state) => allMutators.clearEntitiesChanges(state))), ...insertIf(!allActions.loadEntitiesPageSuccess, () => on(allActions.loadEntitiesSuccess, (state) => allMutators.clearEntitiesChanges(state))), ...insertIf(!!allActions.loadEntitiesPageSuccess && paginationCacheType === 'partial', () => on(allActions.loadEntitiesPageSuccess, (state) => allMutators.clearEntitiesChanges(state))));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1lbnRpdGllcy50cmFpdC5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb21tb24vc3JjL2xpYi9jcnVkLWVudGl0aWVzL2NydWQtZW50aXRpZXMudHJhaXQucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWlCaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdDLE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsb0JBQXlCO0lBRXpCLE9BQU87UUFDTCxHQUFHLG9CQUFvQjtRQUN2QixPQUFPLEVBQUUsRUFBRTtLQUNaLENBQUM7QUFDSixDQUFDO0FBQ0QsTUFBTSxVQUFVLHNCQUFzQixDQUlwQyxZQUFlLEVBQ2YsVUFJMkIsRUFDM0IsV0FBeUMsRUFDekMsVUFJK0I7SUFFL0IsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7SUFDM0MsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO0lBQ3ZFLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUM7SUFFN0QsT0FBTyxhQUFhLENBQ2xCLFlBQVksRUFDWixFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FDakQsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQ3pDLEVBQ0QsRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQ25ELFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUMzQyxFQUNELEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUNwRCxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FDNUMsRUFDRCxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FDaEQsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFhLEVBQUUsS0FBSyxDQUFDLENBQ2pELEVBQ0QsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FDeEQsU0FBUztRQUNQLENBQUMsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7UUFDOUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FDekMsRUFDRCxFQUFFLENBQUMsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDNUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUN4QyxFQUNELEdBQUcsUUFBUSxDQUFJLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FDOUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNwQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQ3hDLENBQ0YsRUFDRCxHQUFHLFFBQVEsQ0FBSSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQ2hDLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDdEMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUN4QyxDQUNGLEVBQ0QsR0FBRyxRQUFRLENBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLENBQ3ZELEVBQUUsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUMzQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQ3hDLENBQ0YsRUFDRCxHQUFHLFFBQVEsQ0FDVCxDQUFDLENBQUMsVUFBVSxDQUFDLHVCQUF1QixJQUFJLG1CQUFtQixLQUFLLFNBQVMsRUFDekUsR0FBRyxFQUFFLENBQ0gsRUFBRSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQy9DLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FDeEMsQ0FDSixDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRmlsdGVyRW50aXRpZXNBY3Rpb25zLFxuICBGaWx0ZXJFbnRpdGllc0tleWVkQ29uZmlnLFxufSBmcm9tICcuLi9maWx0ZXItZW50aXRpZXMvZmlsdGVyLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7IGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ3J1ZEVudGl0aWVzQWN0aW9ucyxcbiAgQ3J1ZEVudGl0aWVzS2V5ZWRDb25maWcsXG4gIENydWRFbnRpdGllc011dGF0b3JzLFxuICBDcnVkRW50aXRpZXNTdGF0ZSxcbn0gZnJvbSAnLi9jcnVkLWVudGl0aWVzLm1vZGVsJztcbmltcG9ydCB7XG4gIExvYWRFbnRpdGllc0FjdGlvbnMsXG4gIExvYWRFbnRpdGllc0tleWVkQ29uZmlnLFxuICBMb2FkRW50aXRpZXNTdGF0ZSxcbn0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcyc7XG5pbXBvcnQgeyBTb3J0RW50aXRpZXNBY3Rpb25zLCBTb3J0RW50aXRpZXNLZXllZENvbmZpZyB9IGZyb20gJy4uL3NvcnQtZW50aXRpZXMnO1xuaW1wb3J0IHtcbiAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWcsXG59IGZyb20gJy4uL2VudGl0aWVzLXBhZ2luYXRpb24nO1xuaW1wb3J0IHsgaW5zZXJ0SWYgfSBmcm9tICdAbmdyeC10cmFpdHMvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDcnVkSW5pdGlhbFN0YXRlPEVudGl0eT4oXG4gIHByZXZpb3VzSW5pdGlhbFN0YXRlOiBhbnlcbik6IExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wcmV2aW91c0luaXRpYWxTdGF0ZSxcbiAgICBjaGFuZ2VzOiBbXSxcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDcnVkVHJhaXRSZWR1Y2VyPFxuICBFbnRpdHksXG4gIFMgZXh0ZW5kcyBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PlxuPihcbiAgaW5pdGlhbFN0YXRlOiBTLFxuICBhbGxBY3Rpb25zOiBDcnVkRW50aXRpZXNBY3Rpb25zPEVudGl0eT4gJlxuICAgIExvYWRFbnRpdGllc0FjdGlvbnM8RW50aXR5PiAmXG4gICAgU29ydEVudGl0aWVzQWN0aW9uczxFbnRpdHk+ICZcbiAgICBGaWx0ZXJFbnRpdGllc0FjdGlvbnM8YW55PiAmXG4gICAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgYWxsTXV0YXRvcnM6IENydWRFbnRpdGllc011dGF0b3JzPEVudGl0eT4sXG4gIGFsbENvbmZpZ3M6IENydWRFbnRpdGllc0tleWVkQ29uZmlnICZcbiAgICBGaWx0ZXJFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eSwgdW5rbm93bj4gJlxuICAgIExvYWRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT4gJlxuICAgIFNvcnRFbnRpdGllc0tleWVkQ29uZmlnPEVudGl0eT4gJlxuICAgIEVudGl0aWVzUGFnaW5hdGlvbktleWVkQ29uZmlnXG4pIHtcbiAgY29uc3Qgc29ydFJlbW90ZSA9IGFsbENvbmZpZ3Muc29ydD8ucmVtb3RlO1xuICBjb25zdCBmaWx0ZXJSZW1vdGUgPSBhbGxDb25maWdzLmZpbHRlciAmJiAhYWxsQ29uZmlncy5maWx0ZXI/LmZpbHRlckZuO1xuICBjb25zdCBwYWdpbmF0aW9uQ2FjaGVUeXBlID0gYWxsQ29uZmlncy5wYWdpbmF0aW9uPy5jYWNoZVR5cGU7XG5cbiAgcmV0dXJuIGNyZWF0ZVJlZHVjZXIoXG4gICAgaW5pdGlhbFN0YXRlLFxuICAgIG9uKGFsbEFjdGlvbnMuYWRkRW50aXRpZXMsIChzdGF0ZSwgeyBlbnRpdGllcyB9KSA9PlxuICAgICAgYWxsTXV0YXRvcnMuYWRkRW50aXRpZXMoZW50aXRpZXMsIHN0YXRlKVxuICAgICksXG4gICAgb24oYWxsQWN0aW9ucy51cGRhdGVFbnRpdGllcywgKHN0YXRlLCB7IHVwZGF0ZXMgfSkgPT5cbiAgICAgIGFsbE11dGF0b3JzLnVwZGF0ZUVudGl0aWVzKHVwZGF0ZXMsIHN0YXRlKVxuICAgICksXG4gICAgb24oYWxsQWN0aW9ucy51cHNlcnRFbnRpdGllcywgKHN0YXRlLCB7IGVudGl0aWVzIH0pID0+XG4gICAgICBhbGxNdXRhdG9ycy51cHNlcnRFbnRpdGllcyhlbnRpdGllcywgc3RhdGUpXG4gICAgKSxcbiAgICBvbihhbGxBY3Rpb25zLnJlbW92ZUVudGl0aWVzLCAoc3RhdGUsIHsga2V5cyB9KSA9PlxuICAgICAgYWxsTXV0YXRvcnMucmVtb3ZlRW50aXRpZXMoa2V5cyBhcyBhbnlbXSwgc3RhdGUpXG4gICAgKSxcbiAgICBvbihhbGxBY3Rpb25zLnJlbW92ZUFsbEVudGl0aWVzLCAoc3RhdGUsIHsgcHJlZGljYXRlIH0pID0+XG4gICAgICBwcmVkaWNhdGVcbiAgICAgICAgPyBhbGxNdXRhdG9ycy5yZW1vdmVFbnRpdGllcyhwcmVkaWNhdGUsIHN0YXRlKVxuICAgICAgICA6IGFsbE11dGF0b3JzLnJlbW92ZUFsbEVudGl0aWVzKHN0YXRlKVxuICAgICksXG4gICAgb24oYWxsQWN0aW9ucy5jbGVhckVudGl0aWVzQ2hhbmdlcywgKHN0YXRlKSA9PlxuICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc0NoYW5nZXMoc3RhdGUpXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihzb3J0UmVtb3RlLCAoKSA9PlxuICAgICAgb24oYWxsQWN0aW9ucy5zb3J0RW50aXRpZXMsIChzdGF0ZSkgPT5cbiAgICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc0NoYW5nZXMoc3RhdGUpXG4gICAgICApXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihmaWx0ZXJSZW1vdGUsICgpID0+XG4gICAgICBvbihhbGxBY3Rpb25zLmZpbHRlckVudGl0aWVzLCAoc3RhdGUpID0+XG4gICAgICAgIGFsbE11dGF0b3JzLmNsZWFyRW50aXRpZXNDaGFuZ2VzKHN0YXRlKVxuICAgICAgKVxuICAgICksXG4gICAgLi4uaW5zZXJ0SWY8Uz4oIWFsbEFjdGlvbnMubG9hZEVudGl0aWVzUGFnZVN1Y2Nlc3MsICgpID0+XG4gICAgICBvbihhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1N1Y2Nlc3MsIChzdGF0ZSkgPT5cbiAgICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc0NoYW5nZXMoc3RhdGUpXG4gICAgICApXG4gICAgKSxcbiAgICAuLi5pbnNlcnRJZjxTPihcbiAgICAgICEhYWxsQWN0aW9ucy5sb2FkRW50aXRpZXNQYWdlU3VjY2VzcyAmJiBwYWdpbmF0aW9uQ2FjaGVUeXBlID09PSAncGFydGlhbCcsXG4gICAgICAoKSA9PlxuICAgICAgICBvbihhbGxBY3Rpb25zLmxvYWRFbnRpdGllc1BhZ2VTdWNjZXNzLCAoc3RhdGUpID0+XG4gICAgICAgICAgYWxsTXV0YXRvcnMuY2xlYXJFbnRpdGllc0NoYW5nZXMoc3RhdGUpXG4gICAgICAgIClcbiAgICApXG4gICk7XG59XG4iXX0=
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { createSelector } from '@ngrx/store';
|
|
2
|
+
import { ChangeType, } from './crud-entities.model';
|
|
3
|
+
export function createCrudTraitSelectors(previousSelectors) {
|
|
4
|
+
function selectChanges(state) {
|
|
5
|
+
return state.changes;
|
|
6
|
+
}
|
|
7
|
+
function selectFilteredChanges(state) {
|
|
8
|
+
const cache = {};
|
|
9
|
+
return state.changes.reduce((acc, value) => {
|
|
10
|
+
const changes = cache[value.id];
|
|
11
|
+
if (!changes) {
|
|
12
|
+
cache[value.id] = [value.changeType];
|
|
13
|
+
acc.push(value);
|
|
14
|
+
return acc;
|
|
15
|
+
}
|
|
16
|
+
if (value.changeType === ChangeType.UPDATED) {
|
|
17
|
+
return acc;
|
|
18
|
+
}
|
|
19
|
+
if (value.changeType === ChangeType.DELETED &&
|
|
20
|
+
changes.includes(ChangeType.CREATED)) {
|
|
21
|
+
delete cache[value.id];
|
|
22
|
+
return acc.filter((v) => v.id !== value.id);
|
|
23
|
+
}
|
|
24
|
+
if (value.changeType === ChangeType.DELETED) {
|
|
25
|
+
delete cache[value.id];
|
|
26
|
+
const newAcc = acc.filter((v) => v.id !== value.id);
|
|
27
|
+
newAcc.push(value);
|
|
28
|
+
return newAcc;
|
|
29
|
+
}
|
|
30
|
+
return acc;
|
|
31
|
+
}, []);
|
|
32
|
+
}
|
|
33
|
+
const { selectEntitiesMap } = previousSelectors;
|
|
34
|
+
const selectEntitiesChangesList = createSelector((state) => selectEntitiesMap(state), selectChanges, (entities, changed) => {
|
|
35
|
+
const map = changed.map((change) => ({
|
|
36
|
+
changeType: change.changeType,
|
|
37
|
+
entity: entities[change.id] ?? {
|
|
38
|
+
id: change.id,
|
|
39
|
+
},
|
|
40
|
+
}));
|
|
41
|
+
return map;
|
|
42
|
+
});
|
|
43
|
+
const selectFilteredEntitiesChangesList = createSelector(selectFilteredChanges, (state) => selectEntitiesMap(state), (changes, entities) => changes.map((c) => {
|
|
44
|
+
return {
|
|
45
|
+
entity: entities[c.id] ?? { id: c.id },
|
|
46
|
+
changeType: c.changeType,
|
|
47
|
+
};
|
|
48
|
+
}));
|
|
49
|
+
return {
|
|
50
|
+
selectEntitiesChangesList,
|
|
51
|
+
selectFilteredEntitiesChangesList,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL2NydWQtZW50aXRpZXMvY3J1ZC1lbnRpdGllcy50cmFpdC5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBRUwsVUFBVSxHQUlYLE1BQU0sdUJBQXVCLENBQUM7QUFPL0IsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxpQkFBZ0Q7SUFFaEQsU0FBUyxhQUFhLENBQXNDLEtBQVE7UUFDbEUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxTQUFTLHFCQUFxQixDQUM1QixLQUFRO1FBRVIsTUFBTSxLQUFLLEdBQW1DLEVBQUUsQ0FBQztRQUNqRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDWixLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNyQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQixPQUFPLEdBQUcsQ0FBQzthQUNaO1lBRUQsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxPQUFPLEVBQUU7Z0JBQzNDLE9BQU8sR0FBRyxDQUFDO2FBQ1o7WUFFRCxJQUNFLEtBQUssQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLE9BQU87Z0JBQ3ZDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUNwQztnQkFDQSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0M7WUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLE9BQU8sRUFBRTtnQkFDM0MsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkIsT0FBTyxNQUFNLENBQUM7YUFDZjtZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQXNCLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsaUJBQWlCLENBQUM7SUFFaEQsTUFBTSx5QkFBeUIsR0FBRyxjQUFjLENBQzlDLENBQUMsS0FBNEQsRUFBRSxFQUFFLENBQy9ELGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUMxQixhQUFhLEVBQ2IsQ0FBQyxRQUE0QixFQUFFLE9BQXlCLEVBQUUsRUFBRTtRQUMxRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUNyQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsQ0FBQztZQUNDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtZQUM3QixNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSTtnQkFDN0IsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2FBQ2Q7U0FDdUIsQ0FBQSxDQUM3QixDQUFDO1FBQ0YsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQ0YsQ0FBQztJQUVGLE1BQU0saUNBQWlDLEdBQUcsY0FBYyxDQUN0RCxxQkFBcUIsRUFDckIsQ0FBQyxLQUE0RCxFQUFFLEVBQUUsQ0FDL0QsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQzFCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNoQixPQUFPO1lBQ0wsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN0QyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVU7U0FDRCxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFFRixPQUFPO1FBQ0wseUJBQXlCO1FBQ3pCLGlDQUFpQztLQUNsQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVNlbGVjdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlLFxuICBDaGFuZ2VUeXBlLFxuICBDcnVkRW50aXRpZXNTZWxlY3RvcnMsXG4gIENydWRFbnRpdGllc1N0YXRlLFxuICBFbnRpdHlDaGFuZ2UsXG59IGZyb20gJy4vY3J1ZC1lbnRpdGllcy5tb2RlbCc7XG5pbXBvcnQge1xuICBMb2FkRW50aXRpZXNTZWxlY3RvcnMsXG4gIExvYWRFbnRpdGllc1N0YXRlLFxufSBmcm9tICcuLi9sb2FkLWVudGl0aWVzL2xvYWQtZW50aXRpZXMubW9kZWwnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ0BuZ3J4L2VudGl0eSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDcnVkVHJhaXRTZWxlY3RvcnM8RW50aXR5PihcbiAgcHJldmlvdXNTZWxlY3RvcnM6IExvYWRFbnRpdGllc1NlbGVjdG9yczxFbnRpdHk+XG4pOiBDcnVkRW50aXRpZXNTZWxlY3RvcnM8RW50aXR5PiB7XG4gIGZ1bmN0aW9uIHNlbGVjdENoYW5nZXM8UyBleHRlbmRzIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT4+KHN0YXRlOiBTKSB7XG4gICAgcmV0dXJuIHN0YXRlLmNoYW5nZXM7XG4gIH1cblxuICBmdW5jdGlvbiBzZWxlY3RGaWx0ZXJlZENoYW5nZXM8UyBleHRlbmRzIENydWRFbnRpdGllc1N0YXRlPEVudGl0eT4+KFxuICAgIHN0YXRlOiBTXG4gICkge1xuICAgIGNvbnN0IGNhY2hlOiB7IFtpZDogc3RyaW5nXTogQ2hhbmdlVHlwZVtdIH0gPSB7fTtcbiAgICByZXR1cm4gc3RhdGUuY2hhbmdlcy5yZWR1Y2UoKGFjYywgdmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IGNoYW5nZXMgPSBjYWNoZVt2YWx1ZS5pZF07XG4gICAgICBpZiAoIWNoYW5nZXMpIHtcbiAgICAgICAgY2FjaGVbdmFsdWUuaWRdID0gW3ZhbHVlLmNoYW5nZVR5cGVdO1xuICAgICAgICBhY2MucHVzaCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZS5jaGFuZ2VUeXBlID09PSBDaGFuZ2VUeXBlLlVQREFURUQpIHtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB2YWx1ZS5jaGFuZ2VUeXBlID09PSBDaGFuZ2VUeXBlLkRFTEVURUQgJiZcbiAgICAgICAgY2hhbmdlcy5pbmNsdWRlcyhDaGFuZ2VUeXBlLkNSRUFURUQpXG4gICAgICApIHtcbiAgICAgICAgZGVsZXRlIGNhY2hlW3ZhbHVlLmlkXTtcbiAgICAgICAgcmV0dXJuIGFjYy5maWx0ZXIoKHYpID0+IHYuaWQgIT09IHZhbHVlLmlkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlLmNoYW5nZVR5cGUgPT09IENoYW5nZVR5cGUuREVMRVRFRCkge1xuICAgICAgICBkZWxldGUgY2FjaGVbdmFsdWUuaWRdO1xuICAgICAgICBjb25zdCBuZXdBY2MgPSBhY2MuZmlsdGVyKCh2KSA9PiB2LmlkICE9PSB2YWx1ZS5pZCk7XG4gICAgICAgIG5ld0FjYy5wdXNoKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ld0FjYztcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10gYXMgQ2hhbmdlPEVudGl0eT5bXSk7XG4gIH1cblxuICBjb25zdCB7IHNlbGVjdEVudGl0aWVzTWFwIH0gPSBwcmV2aW91c1NlbGVjdG9ycztcblxuICBjb25zdCBzZWxlY3RFbnRpdGllc0NoYW5nZXNMaXN0ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgKHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgQ3J1ZEVudGl0aWVzU3RhdGU8RW50aXR5PikgPT5cbiAgICAgIHNlbGVjdEVudGl0aWVzTWFwKHN0YXRlKSxcbiAgICBzZWxlY3RDaGFuZ2VzLFxuICAgIChlbnRpdGllczogRGljdGlvbmFyeTxFbnRpdHk+LCBjaGFuZ2VkOiBDaGFuZ2U8RW50aXR5PltdKSA9PiB7XG4gICAgICBjb25zdCBtYXAgPSBjaGFuZ2VkLm1hcChcbiAgICAgICAgKGNoYW5nZSkgPT5cbiAgICAgICAgICAoe1xuICAgICAgICAgICAgY2hhbmdlVHlwZTogY2hhbmdlLmNoYW5nZVR5cGUsXG4gICAgICAgICAgICBlbnRpdHk6IGVudGl0aWVzW2NoYW5nZS5pZF0gPz8ge1xuICAgICAgICAgICAgICBpZDogY2hhbmdlLmlkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9IGFzIEVudGl0eUNoYW5nZTxFbnRpdHk+KVxuICAgICAgKTtcbiAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICApO1xuXG4gIGNvbnN0IHNlbGVjdEZpbHRlcmVkRW50aXRpZXNDaGFuZ2VzTGlzdCA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHNlbGVjdEZpbHRlcmVkQ2hhbmdlcyxcbiAgICAoc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBDcnVkRW50aXRpZXNTdGF0ZTxFbnRpdHk+KSA9PlxuICAgICAgc2VsZWN0RW50aXRpZXNNYXAoc3RhdGUpLFxuICAgIChjaGFuZ2VzLCBlbnRpdGllcykgPT5cbiAgICAgIGNoYW5nZXMubWFwKChjKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW50aXR5OiBlbnRpdGllc1tjLmlkXSA/PyB7IGlkOiBjLmlkIH0sXG4gICAgICAgICAgY2hhbmdlVHlwZTogYy5jaGFuZ2VUeXBlLFxuICAgICAgICB9IGFzIEVudGl0eUNoYW5nZTxFbnRpdHk+O1xuICAgICAgfSlcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIHNlbGVjdEVudGl0aWVzQ2hhbmdlc0xpc3QsXG4gICAgc2VsZWN0RmlsdGVyZWRFbnRpdGllc0NoYW5nZXNMaXN0LFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './crud-entities.model';
|
|
2
|
+
export * from './crud-entities.trait';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvbW1vbi9zcmMvbGliL2NydWQtZW50aXRpZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jcnVkLWVudGl0aWVzLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vY3J1ZC1lbnRpdGllcy50cmFpdCc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtcGFnaW5hdGlvbi5tb2RlbC5pbnRlcm5hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvZW50aXRpZXMtcGFnaW5hdGlvbi9lbnRpdGllcy1wYWdpbmF0aW9uLm1vZGVsLmludGVybmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25DcmVhdG9yLCBUeXBlZEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlL3NyYy9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyxcbiAgRW50aXRpZXNQYWdpbmF0aW9uU2VsZWN0b3JzLFxuICBFbnRpdGllc1BhZ2luYXRpb25TdGF0ZSxcbn0gZnJvbSAnLi9lbnRpdGllcy1wYWdpbmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IExvYWRFbnRpdGllc1N0YXRlIH0gZnJvbSAnLi4vbG9hZC1lbnRpdGllcy9sb2FkLWVudGl0aWVzLm1vZGVsJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IHR5cGUgxp9QYWdpbmF0aW9uQWN0aW9ucyA9IEVudGl0aWVzUGFnaW5hdGlvbkFjdGlvbnMgJiB7XG4gIHNldEVudGl0aWVzUmVxdWVzdFBhZ2U6IEFjdGlvbkNyZWF0b3I8XG4gICAgc3RyaW5nLFxuICAgIChwcm9wczogeyBpbmRleDogbnVtYmVyIH0pID0+IHsgaW5kZXg6IG51bWJlciB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxuICA+O1xufTtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IHR5cGUgxp9FbnRpdGllc1BhZ2luYXRpb25TZWxlY3RvcnM8RW50aXR5PiA9XG4gIEVudGl0aWVzUGFnaW5hdGlvblNlbGVjdG9yczxFbnRpdHk+ICYge1xuICAgIGlzRW50aXRpZXNDdXJyZW50UGFnZUluQ2FjaGU6IChcbiAgICAgIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxFbnRpdHk+ICYgRW50aXRpZXNQYWdpbmF0aW9uU3RhdGVcbiAgICApID0+IGJvb2xlYW47XG4gICAgaXNFbnRpdGllc05leHRQYWdlSW5DYWNoZTogKFxuICAgICAgc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPEVudGl0eT4gJiBFbnRpdGllc1BhZ2luYXRpb25TdGF0ZVxuICAgICkgPT4gYm9vbGVhbjtcbiAgfTtcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const entitiesPaginationTraitKey = 'pagination';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtcGFnaW5hdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29tbW9uL3NyYy9saWIvZW50aXRpZXMtcGFnaW5hdGlvbi9lbnRpdGllcy1wYWdpbmF0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdHQSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlICovXG5pbXBvcnQgeyBMb2FkRW50aXRpZXNTdGF0ZSB9IGZyb20gJy4uL2xvYWQtZW50aXRpZXMnO1xuXG5pbXBvcnQgeyBBY3Rpb25DcmVhdG9yLCBUeXBlZEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlL3NyYy9tb2RlbHMnO1xuXG5leHBvcnQgdHlwZSBDYWNoZVR5cGUgPSAnZnVsbCcgfCAncGFydGlhbCcgfCAnZ3Jvdyc7XG5leHBvcnQgaW50ZXJmYWNlIEVudGl0aWVzUGFnaW5hdGlvblN0YXRlIHtcbiAgcGFnaW5hdGlvbjoge1xuICAgIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gICAgcmVxdWVzdFBhZ2U6IG51bWJlcjtcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuICAgIHRvdGFsPzogbnVtYmVyO1xuICAgIHBhZ2VzVG9DYWNoZTogbnVtYmVyO1xuICAgIGNhY2hlOiB7XG4gICAgICB0eXBlOiBDYWNoZVR5cGU7XG4gICAgICBzdGFydDogbnVtYmVyO1xuICAgICAgZW5kOiBudW1iZXI7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRW50aXRpZXNQYWdpbmF0aW9uQWN0aW9ucyA9IHtcbiAgbG9hZEVudGl0aWVzUGFnZTogQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKHByb3BzOiB7XG4gICAgICBpbmRleDogbnVtYmVyO1xuICAgICAgZm9yY2VMb2FkPzogYm9vbGVhbjtcbiAgICB9KSA9PiB7IGluZGV4OiBudW1iZXI7IGZvcmNlTG9hZD86IGJvb2xlYW4gfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cbiAgPjtcbiAgbG9hZEVudGl0aWVzUGFnZVN1Y2Nlc3M6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgbG9hZEVudGl0aWVzUGFnZUZhaWw6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgbG9hZEVudGl0aWVzTmV4dFBhZ2U6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgbG9hZEVudGl0aWVzUHJldmlvdXNQYWdlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIGxvYWRFbnRpdGllc0ZpcnN0UGFnZTogQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKGZvcmNlTG9hZD86IGJvb2xlYW4pID0+IHsgZm9yY2VMb2FkPzogYm9vbGVhbiB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxuICA+O1xuICBsb2FkRW50aXRpZXNMYXN0UGFnZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICBjbGVhckVudGl0aWVzUGFnZXNDYWNoZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xufTtcblxuZXhwb3J0IHR5cGUgRW50aXRpZXNQYWdpbmF0aW9uU2VsZWN0b3JzPFQ+ID0ge1xuICBzZWxlY3RFbnRpdGllc0N1cnJlbnRQYWdlTGlzdDogKFxuICAgIHN0YXRlOiBMb2FkRW50aXRpZXNTdGF0ZTxUPiAmIEVudGl0aWVzUGFnaW5hdGlvblN0YXRlXG4gICkgPT4gVFtdO1xuICBzZWxlY3RFbnRpdGllc0N1cnJlbnRQYWdlOiAoXG4gICAgc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPFQ+ICYgRW50aXRpZXNQYWdpbmF0aW9uU3RhdGVcbiAgKSA9PiBQYWdlTW9kZWw8VD47XG4gIHNlbGVjdEVudGl0aWVzUGFnZWRSZXF1ZXN0OiAoXG4gICAgc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPFQ+ICYgRW50aXRpZXNQYWdpbmF0aW9uU3RhdGVcbiAgKSA9PiBQYWdlZFJlcXVlc3Q7XG4gIHNlbGVjdEVudGl0aWVzQ3VycmVudFBhZ2VJbmZvOiAoXG4gICAgc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPFQ+ICYgRW50aXRpZXNQYWdpbmF0aW9uU3RhdGVcbiAgKSA9PiBQYWdlSW5mb01vZGVsO1xuICBpc0xvYWRpbmdFbnRpdGllc0N1cnJlbnRQYWdlOiAoXG4gICAgc3RhdGU6IExvYWRFbnRpdGllc1N0YXRlPFQ+ICYgRW50aXRpZXNQYWdpbmF0aW9uU3RhdGVcbiAgKSA9PiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRW50aXRpZXNQYWdpbmF0aW9uTXV0YXRvcnM8VD4gPSB7XG4gIG1lcmdlUGFnaW5hdGVkRW50aXRpZXM8XG4gICAgUyBleHRlbmRzIExvYWRFbnRpdGllc1N0YXRlPFQ+ICYgRW50aXRpZXNQYWdpbmF0aW9uU3RhdGVcbiAgPihcbiAgICBlbnRpdGllczogVFtdLFxuICAgIHRvdGFsOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgc3RhdGU6IFNcbiAgKTogUztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZU1vZGVsPFQ+IHtcbiAgZW50aXRpZXM6IFRbXTtcbiAgcGFnZUluZGV4OiBudW1iZXI7XG4gIHRvdGFsOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIHBhZ2VzQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgaGFzUHJldmlvdXM6IGJvb2xlYW47XG4gIGhhc05leHQ6IGJvb2xlYW47XG4gIGNhY2hlVHlwZTogQ2FjaGVUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VJbmZvTW9kZWwge1xuICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcGFnZVNpemU6IG51bWJlcjtcbiAgcGFnZXNDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBoYXNQcmV2aW91czogYm9vbGVhbjtcbiAgaGFzTmV4dDogYm9vbGVhbjtcbiAgY2FjaGVUeXBlOiBDYWNoZVR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZWRSZXF1ZXN0IHtcbiAgc3RhcnRJbmRleDogbnVtYmVyO1xuICBzaXplOiBudW1iZXI7XG4gIHBhZ2U6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGVudGl0aWVzUGFnaW5hdGlvblRyYWl0S2V5ID0gJ3BhZ2luYXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0aWVzUGFnaW5hdGlvbkNvbmZpZyB7XG4gIGNhY2hlVHlwZT86IENhY2hlVHlwZTtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIGN1cnJlbnRQYWdlPzogbnVtYmVyO1xuICBwYWdlc1RvQ2FjaGU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXRpZXNQYWdpbmF0aW9uS2V5ZWRDb25maWcge1xuICBwYWdpbmF0aW9uPzogRW50aXRpZXNQYWdpbmF0aW9uQ29uZmlnO1xufVxuIl19
|