Skip to content

Commit 0eaedf6

Browse files
committed
fix v2.0 integration merge conflicts
1 parent bff87d3 commit 0eaedf6

File tree

8 files changed

+68
-77
lines changed

8 files changed

+68
-77
lines changed

packages/toolkit/src/entities/create_adapter.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { Draft } from 'immer'
21
import type {
32
EntityDefinition,
43
Comparer,

packages/toolkit/src/entities/models.ts

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -43,111 +43,109 @@ export interface EntityDefinition<T, Id extends EntityId> {
4343
export type PreventAny<S, T, Id extends EntityId> = CastAny<
4444
S,
4545
EntityState<T, Id>
46-
>
46+
>
4747

48-
export type DraftableEntityState<T> = EntityState<T> | Draft<EntityState<T>>
49-
50-
export type DraftableIdSelector<T> = IdSelector<T | Draft<T>>
48+
export type DraftableEntityState<T, Id extends EntityId> = EntityState<T, Id> | Draft<EntityState<T, Id>>
5149

5250
/**
5351
* @public
5452
*/
5553
export interface EntityStateAdapter<T, Id extends EntityId> {
56-
addOne<S extends EntityState<T, Id>>(
54+
addOne<S extends DraftableEntityState<T, Id>>(
5755
state: PreventAny<S, T, Id>,
5856
entity: T
5957
): S
60-
addOne<S extends EntityState<T, Id>>(
58+
addOne<S extends DraftableEntityState<T, Id>>(
6159
state: PreventAny<S, T, Id>,
6260
action: PayloadAction<T>
6361
): S
6462

65-
addMany<S extends EntityState<T, Id>>(
63+
addMany<S extends DraftableEntityState<T, Id>>(
6664
state: PreventAny<S, T, Id>,
6765
entities: readonly T[] | Record<Id, T>
6866
): S
69-
addMany<S extends EntityState<T, Id>>(
67+
addMany<S extends DraftableEntityState<T, Id>>(
7068
state: PreventAny<S, T, Id>,
7169
entities: PayloadAction<readonly T[] | Record<Id, T>>
7270
): S
7371

74-
setOne<S extends EntityState<T, Id>>(
72+
setOne<S extends DraftableEntityState<T, Id>>(
7573
state: PreventAny<S, T, Id>,
7674
entity: T
7775
): S
78-
setOne<S extends EntityState<T, Id>>(
76+
setOne<S extends DraftableEntityState<T, Id>>(
7977
state: PreventAny<S, T, Id>,
8078
action: PayloadAction<T>
8179
): S
82-
setMany<S extends EntityState<T, Id>>(
80+
setMany<S extends DraftableEntityState<T, Id>>(
8381
state: PreventAny<S, T, Id>,
8482
entities: readonly T[] | Record<Id, T>
8583
): S
86-
setMany<S extends EntityState<T, Id>>(
84+
setMany<S extends DraftableEntityState<T, Id>>(
8785
state: PreventAny<S, T, Id>,
8886
entities: PayloadAction<readonly T[] | Record<Id, T>>
8987
): S
90-
setAll<S extends EntityState<T, Id>>(
88+
setAll<S extends DraftableEntityState<T, Id>>(
9189
state: PreventAny<S, T, Id>,
9290
entities: readonly T[] | Record<Id, T>
9391
): S
94-
setAll<S extends EntityState<T, Id>>(
92+
setAll<S extends DraftableEntityState<T, Id>>(
9593
state: PreventAny<S, T, Id>,
9694
entities: PayloadAction<readonly T[] | Record<Id, T>>
9795
): S
9896

99-
removeOne<S extends EntityState<T, Id>>(
97+
removeOne<S extends DraftableEntityState<T, Id>>(
10098
state: PreventAny<S, T, Id>,
10199
key: Id
102100
): S
103-
removeOne<S extends EntityState<T, Id>>(
101+
removeOne<S extends DraftableEntityState<T, Id>>(
104102
state: PreventAny<S, T, Id>,
105103
key: PayloadAction<Id>
106104
): S
107105

108-
removeMany<S extends EntityState<T, Id>>(
106+
removeMany<S extends DraftableEntityState<T, Id>>(
109107
state: PreventAny<S, T, Id>,
110108
keys: readonly Id[]
111109
): S
112-
removeMany<S extends EntityState<T, Id>>(
110+
removeMany<S extends DraftableEntityState<T, Id>>(
113111
state: PreventAny<S, T, Id>,
114112
keys: PayloadAction<readonly Id[]>
115113
): S
116114

117-
removeAll<S extends EntityState<T, Id>>(state: PreventAny<S, T, Id>): S
115+
removeAll<S extends DraftableEntityState<T, Id>>(state: PreventAny<S, T, Id>): S
118116

119-
updateOne<S extends EntityState<T, Id>>(
117+
updateOne<S extends DraftableEntityState<T, Id>>(
120118
state: PreventAny<S, T, Id>,
121119
update: Update<T, Id>
122120
): S
123-
updateOne<S extends EntityState<T, Id>>(
121+
updateOne<S extends DraftableEntityState<T, Id>>(
124122
state: PreventAny<S, T, Id>,
125123
update: PayloadAction<Update<T, Id>>
126124
): S
127125

128-
updateMany<S extends EntityState<T, Id>>(
126+
updateMany<S extends DraftableEntityState<T, Id>>(
129127
state: PreventAny<S, T, Id>,
130128
updates: ReadonlyArray<Update<T, Id>>
131129
): S
132-
updateMany<S extends EntityState<T, Id>>(
130+
updateMany<S extends DraftableEntityState<T, Id>>(
133131
state: PreventAny<S, T, Id>,
134132
updates: PayloadAction<ReadonlyArray<Update<T, Id>>>
135133
): S
136134

137-
upsertOne<S extends EntityState<T, Id>>(
135+
upsertOne<S extends DraftableEntityState<T, Id>>(
138136
state: PreventAny<S, T, Id>,
139137
entity: T
140138
): S
141-
upsertOne<S extends EntityState<T, Id>>(
139+
upsertOne<S extends DraftableEntityState<T, Id>>(
142140
state: PreventAny<S, T, Id>,
143141
entity: PayloadAction<T>
144142
): S
145143

146-
upsertMany<S extends EntityState<T, Id>>(
144+
upsertMany<S extends DraftableEntityState<T, Id>>(
147145
state: PreventAny<S, T, Id>,
148146
entities: readonly T[] | Record<Id, T>
149147
): S
150-
upsertMany<S extends EntityState<T, Id>>(
148+
upsertMany<S extends DraftableEntityState<T, Id>>(
151149
state: PreventAny<S, T, Id>,
152150
entities: PayloadAction<readonly T[] | Record<Id, T>>
153151
): S

packages/toolkit/src/entities/sorted_state_adapter.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
import type {Draft} from 'immer'
21
import type {
3-
EntityState,
42
IdSelector,
53
Comparer,
64
EntityStateAdapter,
75
Update,
86
EntityId,
9-
DraftableEntityState,
10-
DraftableIdSelector,
7+
DraftableEntityState
118
} from './models'
129
import { createStateOperator } from './state_adapter'
1310
import { createUnsortedStateAdapter } from './unsorted_state_adapter'
@@ -21,7 +18,7 @@ export function createSortedStateAdapter<T, Id extends EntityId>(
2118
selectId: IdSelector<T, Id>,
2219
sort: Comparer<T>
2320
): EntityStateAdapter<T, Id> {
24-
type R = EntityState<T, Id>
21+
type R = DraftableEntityState<T, Id>
2522

2623
const { removeOne, removeMany, removeAll } =
2724
createUnsortedStateAdapter(selectId)
@@ -81,7 +78,7 @@ export function createSortedStateAdapter<T, Id extends EntityId>(
8178
let appliedUpdates = false
8279

8380
for (let update of updates) {
84-
const entity: T | undefined = state.entities[update.id]
81+
const entity: T | undefined = (state.entities as Record<Id, T>)[update.id]
8582
if (!entity) {
8683
continue
8784
}
@@ -91,8 +88,8 @@ export function createSortedStateAdapter<T, Id extends EntityId>(
9188
Object.assign(entity, update.changes)
9289
const newId = selectId(entity)
9390
if (update.id !== newId) {
94-
delete state.entities[update.id]
95-
state.entities[newId] = entity
91+
delete (state.entities as Record<Id, T>)[update.id];
92+
(state.entities as Record<Id, T>)[newId] = entity
9693
}
9794
}
9895

@@ -136,7 +133,7 @@ export function createSortedStateAdapter<T, Id extends EntityId>(
136133
function merge(models: readonly T[], state: R): void {
137134
// Insert/overwrite all new/updated
138135
models.forEach((model) => {
139-
state.entities[selectId(model)] = model
136+
(state.entities as Record<Id, T>)[selectId(model)] = model
140137
})
141138

142139
resortEntities(state)

packages/toolkit/src/entities/state_adapter.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,29 @@
11
import { produce as createNextState, isDraft } from 'immer'
22
import type { Draft } from 'immer'
3-
import type { EntityId, DraftableEntityState, EntityState, PreventAny } from './models'
3+
import type { EntityId, DraftableEntityState, PreventAny } from './models'
44
import type { PayloadAction } from '../createAction'
55
import { isFSA } from '../createAction'
6-
import { IsAny } from '../tsHelpers'
76

87
export const isDraftTyped = isDraft as <T>(value: T | Draft<T>) => value is Draft<T>
98

109
export function createSingleArgumentStateOperator<T, Id extends EntityId>(
11-
mutator: (state: EntityState<T, Id>) => void
10+
mutator: (state: DraftableEntityState<T, Id>) => void
1211
) {
1312
const operator = createStateOperator(
14-
(_: undefined, state: EntityState<T, Id>) => mutator(state)
13+
(_: undefined, state: DraftableEntityState<T, Id>) => mutator(state)
1514
)
1615

17-
return function operation<S extends EntityState<T, Id>>(
16+
return function operation<S extends DraftableEntityState<T, Id>>(
1817
state: PreventAny<S, T, Id>
1918
): S {
2019
return operator(state as S, undefined)
2120
}
2221
}
2322

2423
export function createStateOperator<T, Id extends EntityId, R>(
25-
mutator: (arg: R, state: EntityState<T, Id>) => void
24+
mutator: (arg: R, state: DraftableEntityState<T, Id>) => void
2625
) {
27-
return function operation<S extends EntityState<T, Id>>(
26+
return function operation<S extends DraftableEntityState<T, Id>>(
2827
state: S,
2928
arg: R | PayloadAction<R>
3029
): S {
@@ -34,15 +33,15 @@ export function createStateOperator<T, Id extends EntityId, R>(
3433
return isFSA(arg)
3534
}
3635

37-
const runMutator = (draft: EntityState<T, Id>) => {
36+
const runMutator = (draft: DraftableEntityState<T, Id>) => {
3837
if (isPayloadActionArgument(arg)) {
3938
mutator(arg.payload, draft)
4039
} else {
4140
mutator(arg, draft)
4241
}
4342
}
4443

45-
if (isDraftTyped<EntityState<V>>(state)) {
44+
if (isDraftTyped<DraftableEntityState<T, Id>>(state)) {
4645
// we must already be inside a `createNextState` call, likely because
4746
// this is being wrapped in `createReducer` or `createSlice`.
4847
// It's safe to just pass the draft to the mutator.

packages/toolkit/src/entities/tests/entity_slice_enhancer.test.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,44 @@
11
import { createEntityAdapter, createSlice } from "../..";
2-
import type { PayloadAction, Slice, SliceCaseReducers } from "../..";
3-
import type { DraftableIdSelector, EntityAdapter, EntityState, IdSelector } from "../models";
2+
import type { PayloadAction, Slice, SliceCaseReducers, UnknownAction } from "../..";
3+
import type { EntityId, EntityState, IdSelector } from "../models";
44
import type { BookModel } from "./fixtures/book";
55

66
describe('Entity Slice Enhancer', () => {
7-
let slice: Slice<EntityState<BookModel>>;
7+
let slice: Slice<EntityState<BookModel, BookModel['id']>>;
88

99
beforeEach(() => {
1010
const indieSlice = entitySliceEnhancer({
1111
name: 'book',
12-
selectDraftableId: (book: BookModel) => book.id
12+
selectId: (book: BookModel) => book.id
1313
})
1414
slice = indieSlice
1515
})
1616

1717
it('exposes oneAdded', () => {
18-
const oneAdded = slice.reducer(undefined, slice.actions.oneAdded({
18+
const book = {
1919
id: '0',
2020
title: 'Der Steppenwolf',
2121
author: 'Herman Hesse'
22-
}))
23-
expect(oneAdded.entities['0']?.id).toBe('0')
22+
}
23+
const action = slice.actions.oneAdded(book)
24+
const oneAdded = slice.reducer(undefined, action as UnknownAction)
25+
expect(oneAdded.entities['0']).toBe(book)
2426
})
2527
})
2628

27-
interface EntitySliceArgs<T> {
29+
interface EntitySliceArgs<T, Id extends EntityId> {
2830
name: string
29-
selectId?: IdSelector<T> // unusable
30-
selectDraftableId?: DraftableIdSelector<T>
31+
selectId: IdSelector<T, Id>
3132
modelReducer?: SliceCaseReducers<T>
3233
}
3334

34-
function entitySliceEnhancer<T>({
35+
function entitySliceEnhancer<T, Id extends EntityId>({
3536
name,
36-
selectId: unusableSelectId,
37-
selectDraftableId,
37+
selectId,
3838
modelReducer
39-
}: EntitySliceArgs<T>) {
39+
}: EntitySliceArgs<T, Id>) {
4040
const modelAdapter = createEntityAdapter({
41-
selectId: selectDraftableId // unusableSelectId would give an interesting error
41+
selectId
4242
});
4343

4444
return createSlice({

packages/toolkit/src/entities/tests/entity_state.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { createSlice } from '../../createSlice'
66
import type { BookModel } from './fixtures/book'
77

88
describe('Entity State', () => {
9-
let adapter: EntityAdapter<string, BookModel>
9+
let adapter: EntityAdapter<BookModel, string>
1010

1111
beforeEach(() => {
1212
adapter = createEntityAdapter({

0 commit comments

Comments
 (0)