|
1 | 1 | import { PayloadAction } from '../createAction'
|
| 2 | +import { IsAny } from '../tsHelpers' |
2 | 3 |
|
3 | 4 | /**
|
4 | 5 | * @alpha
|
@@ -52,50 +53,78 @@ export interface EntityDefinition<T> {
|
52 | 53 | sortComparer: false | Comparer<T>
|
53 | 54 | }
|
54 | 55 |
|
| 56 | +type PreventAny<S, T> = IsAny<S, EntityState<T>, S> |
| 57 | + |
55 | 58 | export interface EntityStateAdapter<T> {
|
56 |
| - addOne<S extends EntityState<T>>(state: S, entity: T): S |
57 |
| - addOne<S extends EntityState<T>>(state: S, action: PayloadAction<T>): S |
| 59 | + addOne<S extends EntityState<T>>(state: PreventAny<S, T>, entity: T): S |
| 60 | + addOne<S extends EntityState<T>>( |
| 61 | + state: PreventAny<S, T>, |
| 62 | + action: PayloadAction<T> |
| 63 | + ): S |
58 | 64 |
|
59 |
| - addMany<S extends EntityState<T>>(state: S, entities: T[]): S |
60 |
| - addMany<S extends EntityState<T>>(state: S, entities: PayloadAction<T[]>): S |
| 65 | + addMany<S extends EntityState<T>>(state: PreventAny<S, T>, entities: T[]): S |
| 66 | + addMany<S extends EntityState<T>>( |
| 67 | + state: PreventAny<S, T>, |
| 68 | + entities: PayloadAction<T[]> |
| 69 | + ): S |
61 | 70 |
|
62 |
| - setAll<S extends EntityState<T>>(state: S, entities: T[]): S |
63 |
| - setAll<S extends EntityState<T>>(state: S, entities: PayloadAction<T[]>): S |
| 71 | + setAll<S extends EntityState<T>>(state: PreventAny<S, T>, entities: T[]): S |
| 72 | + setAll<S extends EntityState<T>>( |
| 73 | + state: PreventAny<S, T>, |
| 74 | + entities: PayloadAction<T[]> |
| 75 | + ): S |
64 | 76 |
|
65 |
| - removeOne<S extends EntityState<T>>(state: S, key: EntityId): S |
66 |
| - removeOne<S extends EntityState<T>>(state: S, key: PayloadAction<EntityId>): S |
| 77 | + removeOne<S extends EntityState<T>>(state: PreventAny<S, T>, key: EntityId): S |
| 78 | + removeOne<S extends EntityState<T>>( |
| 79 | + state: PreventAny<S, T>, |
| 80 | + key: PayloadAction<EntityId> |
| 81 | + ): S |
67 | 82 |
|
68 |
| - removeMany<S extends EntityState<T>>(state: S, keys: EntityId[]): S |
69 | 83 | removeMany<S extends EntityState<T>>(
|
70 |
| - state: S, |
| 84 | + state: PreventAny<S, T>, |
| 85 | + keys: EntityId[] |
| 86 | + ): S |
| 87 | + removeMany<S extends EntityState<T>>( |
| 88 | + state: PreventAny<S, T>, |
71 | 89 | keys: PayloadAction<EntityId[]>
|
72 | 90 | ): S
|
73 | 91 |
|
74 |
| - removeAll<S extends EntityState<T>>(state: S): S |
| 92 | + removeAll<S extends EntityState<T>>(state: PreventAny<S, T>): S |
75 | 93 |
|
76 |
| - updateOne<S extends EntityState<T>>(state: S, update: Update<T>): S |
77 | 94 | updateOne<S extends EntityState<T>>(
|
78 |
| - state: S, |
| 95 | + state: PreventAny<S, T>, |
| 96 | + update: Update<T> |
| 97 | + ): S |
| 98 | + updateOne<S extends EntityState<T>>( |
| 99 | + state: PreventAny<S, T>, |
79 | 100 | update: PayloadAction<Update<T>>
|
80 | 101 | ): S
|
81 | 102 |
|
82 |
| - updateMany<S extends EntityState<T>>(state: S, updates: Update<T>[]): S |
83 | 103 | updateMany<S extends EntityState<T>>(
|
84 |
| - state: S, |
| 104 | + state: PreventAny<S, T>, |
| 105 | + updates: Update<T>[] |
| 106 | + ): S |
| 107 | + updateMany<S extends EntityState<T>>( |
| 108 | + state: PreventAny<S, T>, |
85 | 109 | updates: PayloadAction<Update<T>[]>
|
86 | 110 | ): S
|
87 | 111 |
|
88 |
| - upsertOne<S extends EntityState<T>>(state: S, entity: T): S |
89 |
| - upsertOne<S extends EntityState<T>>(state: S, entity: PayloadAction<T>): S |
| 112 | + upsertOne<S extends EntityState<T>>(state: PreventAny<S, T>, entity: T): S |
| 113 | + upsertOne<S extends EntityState<T>>( |
| 114 | + state: PreventAny<S, T>, |
| 115 | + entity: PayloadAction<T> |
| 116 | + ): S |
90 | 117 |
|
91 |
| - upsertMany<S extends EntityState<T>>(state: S, entities: T[]): S |
92 | 118 | upsertMany<S extends EntityState<T>>(
|
93 |
| - state: S, |
| 119 | + state: PreventAny<S, T>, |
| 120 | + entities: T[] |
| 121 | + ): S |
| 122 | + upsertMany<S extends EntityState<T>>( |
| 123 | + state: PreventAny<S, T>, |
94 | 124 | entities: PayloadAction<T[]>
|
95 | 125 | ): S
|
96 | 126 |
|
97 |
| - map<S extends EntityState<T>>(state: S, map: EntityMap<T>): S |
98 |
| - map<S extends EntityState<T>>(state: S, map: PayloadAction<EntityMap<T>>): S |
| 127 | + map<S extends EntityState<T>>(state: PreventAny<S, T>, map: EntityMap<T>): S |
99 | 128 | }
|
100 | 129 |
|
101 | 130 | export interface EntitySelectors<T, V> {
|
|
0 commit comments