Skip to content

Commit c717d8e

Browse files
author
ben.durrant
committed
add createDraftSafeSelectorCreator
1 parent 44b4f67 commit c717d8e

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed
Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
import { current, isDraft } from 'immer'
2-
import { createSelector } from 'reselect'
2+
import { createSelectorCreator, defaultMemoize } from 'reselect'
3+
4+
export const createDraftSafeSelectorCreator: typeof createSelectorCreator = (
5+
...args: unknown[]
6+
) => {
7+
const createSelector = (createSelectorCreator as any)(...args)
8+
return (...args: unknown[]) => {
9+
const selector = createSelector(...args)
10+
const wrappedSelector = (value: unknown, ...rest: unknown[]) =>
11+
selector(isDraft(value) ? current(value) : value, ...rest)
12+
return wrappedSelector as any
13+
}
14+
}
315

416
/**
517
* "Draft-Safe" version of `reselect`'s `createSelector`:
@@ -8,11 +20,5 @@ import { createSelector } from 'reselect'
820
* that might be possibly outdated if the draft has been modified since.
921
* @public
1022
*/
11-
export const createDraftSafeSelector: typeof createSelector = (
12-
...args: unknown[]
13-
) => {
14-
const selector = (createSelector as any)(...args)
15-
const wrappedSelector = (value: unknown, ...rest: unknown[]) =>
16-
selector(isDraft(value) ? current(value) : value, ...rest)
17-
return wrappedSelector as any
18-
}
23+
export const createDraftSafeSelector =
24+
createDraftSafeSelectorCreator(defaultMemoize)

0 commit comments

Comments
 (0)