File tree Expand file tree Collapse file tree 2 files changed +28
-3
lines changed Expand file tree Collapse file tree 2 files changed +28
-3
lines changed Original file line number Diff line number Diff line change
1
+ import { MemoizedSelector } from '@ngrx/store' ;
2
+
1
3
export type Comparer < T > = ( a : T , b : T ) => number ;
2
4
3
5
export type IdSelectorStr < T > = ( model : T ) => string ;
@@ -85,6 +87,25 @@ export type EntitySelectors<T, V> = {
85
87
selectTotal : ( state : V ) => number ;
86
88
} ;
87
89
90
+ export type MemoizedEntitySelectors < T , V > = {
91
+ selectIds : MemoizedSelector <
92
+ V ,
93
+ string [ ] | number [ ] ,
94
+ ( entityState : EntityState < T > ) => string [ ] | number [ ]
95
+ > ;
96
+ selectEntities : MemoizedSelector <
97
+ V ,
98
+ Dictionary < T > ,
99
+ ( entityState : EntityState < T > ) => Dictionary < T >
100
+ > ;
101
+ selectAll : MemoizedSelector < V , T [ ] , ( entityState : EntityState < T > ) => T [ ] > ;
102
+ selectTotal : MemoizedSelector <
103
+ V ,
104
+ number ,
105
+ ( entityState : EntityState < T > ) => number
106
+ > ;
107
+ } ;
108
+
88
109
export interface EntityAdapter < T > extends EntityStateAdapter < T > {
89
110
selectId : IdSelector < T > ;
90
111
sortComparer : false | Comparer < T > ;
@@ -93,5 +114,5 @@ export interface EntityAdapter<T> extends EntityStateAdapter<T> {
93
114
getSelectors ( ) : EntitySelectors < T , EntityState < T > > ;
94
115
getSelectors < V > (
95
116
selectState : ( state : V ) => EntityState < T >
96
- ) : EntitySelectors < T , V > ;
117
+ ) : MemoizedEntitySelectors < T , V > ;
97
118
}
Original file line number Diff line number Diff line change 1
1
import { createSelector } from '@ngrx/store' ;
2
- import { EntityState , EntitySelectors } from './models' ;
2
+ import {
3
+ EntityState ,
4
+ EntitySelectors ,
5
+ MemoizedEntitySelectors ,
6
+ } from './models' ;
3
7
4
8
export function createSelectorsFactory < T > ( ) {
5
9
function getSelectors ( ) : EntitySelectors < T , EntityState < T > > ;
6
10
function getSelectors < V > (
7
11
selectState : ( state : V ) => EntityState < T >
8
- ) : EntitySelectors < T , V > ;
12
+ ) : MemoizedEntitySelectors < T , V > ;
9
13
function getSelectors (
10
14
selectState ?: ( state : any ) => EntityState < T >
11
15
) : EntitySelectors < T , any > {
You can’t perform that action at this time.
0 commit comments