Skip to content

Commit c7faa3e

Browse files
security: bump immer (#24)
1 parent 5c2d7a5 commit c7faa3e

3 files changed

Lines changed: 46 additions & 15 deletions

File tree

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@
106106
"date-fns": "^2.19.0",
107107
"dompurify": "^2.2.9",
108108
"downshift": "^6.1.1",
109-
"immer": "^8.0.2",
109+
"immer": "^9.0.12",
110110
"lodash": "^4.17.21",
111111
"lodash-es": "^4.17.21",
112112
"match-sorter": "^6.3.0",
@@ -115,6 +115,6 @@
115115
"react-virtualized-auto-sizer": "^1.0.5",
116116
"react-window": "^1.8.6",
117117
"twin.macro": "^2.6.2",
118-
"zustand": "^3.3.3"
118+
"zustand": "^3.6.9"
119119
}
120120
}

src/store.ts

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
import tw from 'twin.macro';
2-
import create, { StateCreator } from 'zustand';
2+
import create, {
3+
GetState,
4+
SetState,
5+
State,
6+
StateCreator,
7+
StoreApi,
8+
} from 'zustand';
39
import produce from 'immer';
10+
import type { Draft } from 'immer';
411
import {
512
format as d3Format,
613
timeFormat,
@@ -29,10 +36,34 @@ import { StringFilter } from './components/filters/string';
2936
import { CategoryFilter } from './components/filters/category';
3037
import { RangeFilter } from './components/filters/range';
3138

32-
export const immer = <T extends {}>(
33-
config: StateCreator<T, (fn: (draft: T) => void) => void>
34-
): StateCreator<T> => (set, get, api) =>
35-
config((fn) => set(produce(fn) as (state: T) => T), get, api);
39+
const immer = <
40+
T extends State,
41+
CustomSetState extends SetState<T>,
42+
CustomGetState extends GetState<T>,
43+
CustomStoreApi extends StoreApi<T>
44+
>(
45+
config: StateCreator<
46+
T,
47+
(partial: ((draft: Draft<T>) => void) | T, replace?: boolean) => void,
48+
CustomGetState,
49+
CustomStoreApi
50+
>
51+
): StateCreator<T, CustomSetState, CustomGetState, CustomStoreApi> => (
52+
set,
53+
get,
54+
api
55+
) =>
56+
config(
57+
(partial, replace) => {
58+
const nextState =
59+
typeof partial === 'function'
60+
? produce(partial as (state: Draft<T>) => T)
61+
: (partial as T);
62+
return set(nextState, replace);
63+
},
64+
get,
65+
api
66+
);
3667

3768
export type GridState = {
3869
data: any[];

yarn.lock

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8398,10 +8398,10 @@ immer@8.0.1:
83988398
resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656"
83998399
integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==
84008400

8401-
immer@^8.0.2:
8402-
version "8.0.4"
8403-
resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.4.tgz#3a21605a4e2dded852fb2afd208ad50969737b7a"
8404-
integrity sha512-jMfL18P+/6P6epANRvRk6q8t+3gGhqsJ9EuJ25AXE+9bNTYtssvzeYbEd0mXRYWCmmXSIbnlpz6vd6iJlmGGGQ==
8401+
immer@^9.0.12:
8402+
version "9.0.12"
8403+
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.12.tgz#2d33ddf3ee1d247deab9d707ca472c8c942a0f20"
8404+
integrity sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==
84058405

84068406
import-cwd@^3.0.0:
84078407
version "3.0.0"
@@ -15567,10 +15567,10 @@ yocto-queue@^0.1.0:
1556715567
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
1556815568
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
1556915569

15570-
zustand@^3.3.3:
15571-
version "3.5.6"
15572-
resolved "https://registry.yarnpkg.com/zustand/-/zustand-3.5.6.tgz#c28cfbdfdd999d26d1a94ea105a6fd1da56ed38a"
15573-
integrity sha512-8XrpRO5scF8MSxeAlu7vFupmLG+5MTWhT+6+3QNsihs0QZfOjaArFyvenUgrk30WdZVGVHLHXBhbqC2/QzLeMA==
15570+
zustand@^3.6.9:
15571+
version "3.6.9"
15572+
resolved "https://registry.yarnpkg.com/zustand/-/zustand-3.6.9.tgz#f61a756ddea9f95c7ee7cfd3af2f88c10078afbc"
15573+
integrity sha512-OvDNu/jEWpRnEC7k8xh8GKjqYog7td6FZrLMuHs/IeI8WhrCwV+FngVuwMIFhp5kysZXr6emaeReMqjLGaldAQ==
1557415574

1557515575
zwitch@^1.0.0:
1557615576
version "1.0.5"

0 commit comments

Comments
 (0)