msw-dev-tool 1.0.14 → 1.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # Install
2
+
3
+ ```bash
4
+ npm i msw-dev-tool --save-dev
5
+ ```
6
+
7
+ ## Peer Dep
8
+
9
+ These dependencies are assumed to already exist in your project.
10
+ If not, please install it.
11
+
12
+ ```json
13
+ "react": "^18.0.0",
14
+ "react-dom": "^18.0.0",
15
+ "zustand": "^5.0.2",
16
+ "msw": "^2.7.0"
17
+ ```
18
+
19
+ # Usage
20
+
21
+ ## UI
22
+
23
+ ```jsx
24
+ import { MSWDevTool } from "msw-dev-tool";
25
+ import "msw-dev-tool/msw-dev-tool.css"
26
+
27
+ function App() {
28
+
29
+ return (
30
+ <>
31
+ <MSWDevTool />
32
+ {/* ... */}
33
+ </>
34
+ );
35
+ }
36
+ ```
37
+
38
+ ## Integration with msw
39
+
40
+ ```typescript
41
+ import { setupWorker } from "msw/browser";
42
+ import { handlers } from "./handlers";
43
+ import { initMSWDevTool } from "msw-dev-tool";
44
+
45
+ // Wrap worker init logic with `initMSWDevTool` middleware.
46
+ export const worker = initMSWDevTool(setupWorker(...handlers));
47
+
48
+ ```
49
+
50
+ # Structure
51
+
52
+ This project uses pnpm workspaces.
53
+
54
+ | Project | Description |
55
+ | ---------------- | ----------------------------------------------------------------------------------------------------- |
56
+ | **example** | A sample project to develop and test `msw-dev-tool`. You need to build `msw-dev-tool` before testing. |
57
+ | **msw-dev-tool** | The source code of the library. |
@@ -1 +1 @@
1
- {"version":3,"file":"handlerStore.js","sources":["../../../src/lib/handlerStore.ts"],"sourcesContent":["import { SetupWorker } from \"msw/browser\";\nimport { create } from \"zustand\";\nimport { produce } from \"immer\";\nimport { Handler, HandlerMap } from \"./type\";\nimport { convertHandlers, flatHandlerMap } from \"./util\";\nimport { dummyHandler } from \"../const/handler\";\nimport { HttpHandler } from \"msw\";\n\nexport interface HandlerStoreState {\n worker: SetupWorker | null;\n /**\n * HTTP handler map\n */\n handlerMap: HandlerMap;\n /**\n * GraphQL or WebSocketHandler\n *\n * *Currently not supported*\n */\n restHandlers: Handler[];\n initMSWDevTool: (worker: SetupWorker) => SetupWorker;\n setHandlerMap: (handlers: HandlerMap) => HandlerMap;\n getIsChecked: (url: string, method: string) => boolean;\n setIsChecked: (url: string, method: string, isChecked: boolean) => void;\n toggleIsChecked: (url: string, method: string) => void;\n getWorker: () => SetupWorker;\n getTotalEnableHandlers: () => (Handler | HttpHandler)[];\n /**\n * This has to do with `msw` internal workings.\n * If I spread an empty array in `resetHandlers`, it will be replaced by `initialHandler`.\n * Therefore, I proposed the `clear` method, but unfortunately it was not accepted!\n */\n updateEnableHandlers: () => void;\n}\nexport const useHandlerStore = create<HandlerStoreState>((set, get) => ({\n handlerMap: {},\n worker: null,\n restHandlers: [],\n initMSWDevTool: (_worker) => {\n const worker = _worker;\n set({ worker });\n const handlers = worker.listHandlers() as Handler[];\n const { handlerMap, unsupportedHandlers } = convertHandlers(handlers);\n set({ handlerMap });\n set({ restHandlers: unsupportedHandlers });\n return worker;\n },\n setHandlerMap: (handlerMap) => {\n set({ handlerMap });\n return handlerMap;\n },\n getIsChecked: (url, method) => get().handlerMap[url]?.[method].checked,\n setIsChecked: (url, method, isChecked) => {\n set(\n produce<HandlerStoreState>((state) => {\n if (!state.handlerMap[url]) {\n return;\n }\n state.handlerMap[url][method].checked = isChecked;\n })\n );\n get().updateEnableHandlers();\n },\n toggleIsChecked: (url, method) => {\n set(\n produce<HandlerStoreState>((state) => {\n if (!state.handlerMap[url]?.[method]) {\n return;\n }\n state.handlerMap[url][method].checked =\n !state.handlerMap[url][method].checked;\n })\n );\n get().updateEnableHandlers();\n },\n getWorker: () => {\n const worker = get().worker;\n if (!worker) throw new Error(\"Worker is not initialized\");\n return worker;\n },\n getTotalEnableHandlers: () => {\n const handlerMapList = flatHandlerMap(get().handlerMap);\n const checkedHttpHandlers = handlerMapList\n .filter((h) => h.checked)\n .map((h) => h.handler);\n const otherProtocolHandlers = get().restHandlers;\n return [...checkedHttpHandlers, ...otherProtocolHandlers];\n },\n updateEnableHandlers: () => {\n const worker = get().getWorker();\n const totalEnableHandlers = get().getTotalEnableHandlers();\n if (totalEnableHandlers.length === 0) {\n worker.resetHandlers(dummyHandler);\n return;\n }\n\n worker.resetHandlers(...totalEnableHandlers);\n },\n}));\n\nexport const initMSWDevTool = useHandlerStore.getState().initMSWDevTool;\n"],"names":["create","convertHandlers","produce","flatHandlerMap","dummyHandler"],"mappings":"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"}
1
+ {"version":3,"file":"handlerStore.js","sources":["../../../src/lib/handlerStore.ts"],"sourcesContent":["import { SetupWorker } from \"msw/browser\";\nimport { create } from \"zustand\";\nimport { produce } from \"immer\";\nimport { Handler, HandlerMap } from \"./type\";\nimport { convertHandlers, flatHandlerMap } from \"./util\";\nimport { dummyHandler } from \"../const/handler\";\nimport { HttpHandler } from \"msw\";\n\nexport interface HandlerStoreState {\n worker: SetupWorker | null;\n /**\n * HTTP handler map\n */\n handlerMap: HandlerMap;\n /**\n * GraphQL or WebSocketHandler\n *\n * **Currently not supported**\n */\n restHandlers: Handler[];\n initMSWDevTool: (worker: SetupWorker) => SetupWorker;\n setHandlerMap: (handlers: HandlerMap) => HandlerMap;\n getIsChecked: (url: string, method: string) => boolean;\n setIsChecked: (url: string, method: string, isChecked: boolean) => void;\n toggleIsChecked: (url: string, method: string) => void;\n getWorker: () => SetupWorker;\n getTotalEnableHandlers: () => (Handler | HttpHandler)[];\n /**\n * This has to do with `msw` internal workings.\n * If I spread an empty array in `resetHandlers`, it will be replaced by `initialHandler`.\n * Therefore, I proposed the `clear` method, but unfortunately it was not accepted!\n */\n updateEnableHandlers: () => void;\n}\nexport const useHandlerStore = create<HandlerStoreState>((set, get) => ({\n handlerMap: {},\n worker: null,\n restHandlers: [],\n initMSWDevTool: (_worker) => {\n const worker = _worker;\n set({ worker });\n const handlers = worker.listHandlers() as Handler[];\n const { handlerMap, unsupportedHandlers } = convertHandlers(handlers);\n set({ handlerMap });\n set({ restHandlers: unsupportedHandlers });\n return worker;\n },\n setHandlerMap: (handlerMap) => {\n set({ handlerMap });\n return handlerMap;\n },\n getIsChecked: (url, method) => get().handlerMap[url]?.[method].checked,\n setIsChecked: (url, method, isChecked) => {\n set(\n produce<HandlerStoreState>((state) => {\n if (!state.handlerMap[url]) {\n return;\n }\n state.handlerMap[url][method].checked = isChecked;\n })\n );\n get().updateEnableHandlers();\n },\n toggleIsChecked: (url, method) => {\n set(\n produce<HandlerStoreState>((state) => {\n if (!state.handlerMap[url]?.[method]) {\n return;\n }\n state.handlerMap[url][method].checked =\n !state.handlerMap[url][method].checked;\n })\n );\n get().updateEnableHandlers();\n },\n getWorker: () => {\n const worker = get().worker;\n if (!worker) throw new Error(\"Worker is not initialized\");\n return worker;\n },\n getTotalEnableHandlers: () => {\n const handlerMapList = flatHandlerMap(get().handlerMap);\n const checkedHttpHandlers = handlerMapList\n .filter((h) => h.checked)\n .map((h) => h.handler);\n const otherProtocolHandlers = get().restHandlers;\n return [...checkedHttpHandlers, ...otherProtocolHandlers];\n },\n updateEnableHandlers: () => {\n const worker = get().getWorker();\n const totalEnableHandlers = get().getTotalEnableHandlers();\n if (totalEnableHandlers.length === 0) {\n worker.resetHandlers(dummyHandler);\n return;\n }\n\n worker.resetHandlers(...totalEnableHandlers);\n },\n}));\n\nexport const initMSWDevTool = useHandlerStore.getState().initMSWDevTool;\n"],"names":["create","convertHandlers","produce","flatHandlerMap","dummyHandler"],"mappings":";;;;;;;AAkCO,MAAM,eAAe,GAAGA,cAAM,CAAoB,CAAC,GAAG,EAAE,GAAG,MAAM;AACtE,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,cAAc,EAAE,CAAC,OAAO,KAAI;QAC1B,MAAM,MAAM,GAAG,OAAO,CAAC;AACvB,QAAA,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAChB,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAe,CAAC;QACpD,MAAM,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAGC,oBAAe,CAAC,QAAQ,CAAC,CAAC;AACtE,QAAA,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AACpB,QAAA,GAAG,CAAC,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAC3C,QAAA,OAAO,MAAM,CAAC;KACf;AACD,IAAA,aAAa,EAAE,CAAC,UAAU,KAAI;AAC5B,QAAA,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AACpB,QAAA,OAAO,UAAU,CAAC;KACnB;IACD,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,0CAAG,MAAM,CAAA,CAAE,OAAO,CAAA,EAAA;IACtE,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,KAAI;AACvC,QAAA,GAAG,CACDC,aAAO,CAAoB,CAAC,KAAK,KAAI;YACnC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC1B,OAAO;aACR;AACD,YAAA,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC;SACnD,CAAC,CACH,CAAC;AACF,QAAA,GAAG,EAAE,CAAC,oBAAoB,EAAE,CAAC;KAC9B;AACD,IAAA,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAI;AAC/B,QAAA,GAAG,CACDA,aAAO,CAAoB,CAAC,KAAK,KAAI;;AACnC,YAAA,IAAI,EAAC,CAAA,EAAA,GAAA,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,CAAA,EAAE;gBACpC,OAAO;aACR;YACD,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO;gBACnC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;SAC1C,CAAC,CACH,CAAC;AACF,QAAA,GAAG,EAAE,CAAC,oBAAoB,EAAE,CAAC;KAC9B;IACD,SAAS,EAAE,MAAK;AACd,QAAA,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC1D,QAAA,OAAO,MAAM,CAAC;KACf;IACD,sBAAsB,EAAE,MAAK;QAC3B,MAAM,cAAc,GAAGC,mBAAc,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,mBAAmB,GAAG,cAAc;aACvC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;aACxB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;AACzB,QAAA,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC;AACjD,QAAA,OAAO,CAAC,GAAG,mBAAmB,EAAE,GAAG,qBAAqB,CAAC,CAAC;KAC3D;IACD,oBAAoB,EAAE,MAAK;AACzB,QAAA,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;AACjC,QAAA,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,sBAAsB,EAAE,CAAC;AAC3D,QAAA,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,YAAA,MAAM,CAAC,aAAa,CAACC,oBAAY,CAAC,CAAC;YACnC,OAAO;SACR;AAED,QAAA,MAAM,CAAC,aAAa,CAAC,GAAG,mBAAmB,CAAC,CAAC;KAC9C;AACF,CAAA,CAAC,EAAE;AAES,MAAA,cAAc,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"handlerStore.js","sources":["../../../src/lib/handlerStore.ts"],"sourcesContent":["import { SetupWorker } from \"msw/browser\";\nimport { create } from \"zustand\";\nimport { produce } from \"immer\";\nimport { Handler, HandlerMap } from \"./type\";\nimport { convertHandlers, flatHandlerMap } from \"./util\";\nimport { dummyHandler } from \"../const/handler\";\nimport { HttpHandler } from \"msw\";\n\nexport interface HandlerStoreState {\n worker: SetupWorker | null;\n /**\n * HTTP handler map\n */\n handlerMap: HandlerMap;\n /**\n * GraphQL or WebSocketHandler\n *\n * *Currently not supported*\n */\n restHandlers: Handler[];\n initMSWDevTool: (worker: SetupWorker) => SetupWorker;\n setHandlerMap: (handlers: HandlerMap) => HandlerMap;\n getIsChecked: (url: string, method: string) => boolean;\n setIsChecked: (url: string, method: string, isChecked: boolean) => void;\n toggleIsChecked: (url: string, method: string) => void;\n getWorker: () => SetupWorker;\n getTotalEnableHandlers: () => (Handler | HttpHandler)[];\n /**\n * This has to do with `msw` internal workings.\n * If I spread an empty array in `resetHandlers`, it will be replaced by `initialHandler`.\n * Therefore, I proposed the `clear` method, but unfortunately it was not accepted!\n */\n updateEnableHandlers: () => void;\n}\nexport const useHandlerStore = create<HandlerStoreState>((set, get) => ({\n handlerMap: {},\n worker: null,\n restHandlers: [],\n initMSWDevTool: (_worker) => {\n const worker = _worker;\n set({ worker });\n const handlers = worker.listHandlers() as Handler[];\n const { handlerMap, unsupportedHandlers } = convertHandlers(handlers);\n set({ handlerMap });\n set({ restHandlers: unsupportedHandlers });\n return worker;\n },\n setHandlerMap: (handlerMap) => {\n set({ handlerMap });\n return handlerMap;\n },\n getIsChecked: (url, method) => get().handlerMap[url]?.[method].checked,\n setIsChecked: (url, method, isChecked) => {\n set(\n produce<HandlerStoreState>((state) => {\n if (!state.handlerMap[url]) {\n return;\n }\n state.handlerMap[url][method].checked = isChecked;\n })\n );\n get().updateEnableHandlers();\n },\n toggleIsChecked: (url, method) => {\n set(\n produce<HandlerStoreState>((state) => {\n if (!state.handlerMap[url]?.[method]) {\n return;\n }\n state.handlerMap[url][method].checked =\n !state.handlerMap[url][method].checked;\n })\n );\n get().updateEnableHandlers();\n },\n getWorker: () => {\n const worker = get().worker;\n if (!worker) throw new Error(\"Worker is not initialized\");\n return worker;\n },\n getTotalEnableHandlers: () => {\n const handlerMapList = flatHandlerMap(get().handlerMap);\n const checkedHttpHandlers = handlerMapList\n .filter((h) => h.checked)\n .map((h) => h.handler);\n const otherProtocolHandlers = get().restHandlers;\n return [...checkedHttpHandlers, ...otherProtocolHandlers];\n },\n updateEnableHandlers: () => {\n const worker = get().getWorker();\n const totalEnableHandlers = get().getTotalEnableHandlers();\n if (totalEnableHandlers.length === 0) {\n worker.resetHandlers(dummyHandler);\n return;\n }\n\n worker.resetHandlers(...totalEnableHandlers);\n },\n}));\n\nexport const initMSWDevTool = useHandlerStore.getState().initMSWDevTool;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlerStore.js","sources":["../../../src/lib/handlerStore.ts"],"sourcesContent":["import { SetupWorker } from \"msw/browser\";\nimport { create } from \"zustand\";\nimport { produce } from \"immer\";\nimport { Handler, HandlerMap } from \"./type\";\nimport { convertHandlers, flatHandlerMap } from \"./util\";\nimport { dummyHandler } from \"../const/handler\";\nimport { HttpHandler } from \"msw\";\n\nexport interface HandlerStoreState {\n worker: SetupWorker | null;\n /**\n * HTTP handler map\n */\n handlerMap: HandlerMap;\n /**\n * GraphQL or WebSocketHandler\n *\n * **Currently not supported**\n */\n restHandlers: Handler[];\n initMSWDevTool: (worker: SetupWorker) => SetupWorker;\n setHandlerMap: (handlers: HandlerMap) => HandlerMap;\n getIsChecked: (url: string, method: string) => boolean;\n setIsChecked: (url: string, method: string, isChecked: boolean) => void;\n toggleIsChecked: (url: string, method: string) => void;\n getWorker: () => SetupWorker;\n getTotalEnableHandlers: () => (Handler | HttpHandler)[];\n /**\n * This has to do with `msw` internal workings.\n * If I spread an empty array in `resetHandlers`, it will be replaced by `initialHandler`.\n * Therefore, I proposed the `clear` method, but unfortunately it was not accepted!\n */\n updateEnableHandlers: () => void;\n}\nexport const useHandlerStore = create<HandlerStoreState>((set, get) => ({\n handlerMap: {},\n worker: null,\n restHandlers: [],\n initMSWDevTool: (_worker) => {\n const worker = _worker;\n set({ worker });\n const handlers = worker.listHandlers() as Handler[];\n const { handlerMap, unsupportedHandlers } = convertHandlers(handlers);\n set({ handlerMap });\n set({ restHandlers: unsupportedHandlers });\n return worker;\n },\n setHandlerMap: (handlerMap) => {\n set({ handlerMap });\n return handlerMap;\n },\n getIsChecked: (url, method) => get().handlerMap[url]?.[method].checked,\n setIsChecked: (url, method, isChecked) => {\n set(\n produce<HandlerStoreState>((state) => {\n if (!state.handlerMap[url]) {\n return;\n }\n state.handlerMap[url][method].checked = isChecked;\n })\n );\n get().updateEnableHandlers();\n },\n toggleIsChecked: (url, method) => {\n set(\n produce<HandlerStoreState>((state) => {\n if (!state.handlerMap[url]?.[method]) {\n return;\n }\n state.handlerMap[url][method].checked =\n !state.handlerMap[url][method].checked;\n })\n );\n get().updateEnableHandlers();\n },\n getWorker: () => {\n const worker = get().worker;\n if (!worker) throw new Error(\"Worker is not initialized\");\n return worker;\n },\n getTotalEnableHandlers: () => {\n const handlerMapList = flatHandlerMap(get().handlerMap);\n const checkedHttpHandlers = handlerMapList\n .filter((h) => h.checked)\n .map((h) => h.handler);\n const otherProtocolHandlers = get().restHandlers;\n return [...checkedHttpHandlers, ...otherProtocolHandlers];\n },\n updateEnableHandlers: () => {\n const worker = get().getWorker();\n const totalEnableHandlers = get().getTotalEnableHandlers();\n if (totalEnableHandlers.length === 0) {\n worker.resetHandlers(dummyHandler);\n return;\n }\n\n worker.resetHandlers(...totalEnableHandlers);\n },\n}));\n\nexport const initMSWDevTool = useHandlerStore.getState().initMSWDevTool;\n"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ interface HandlerStoreState {
20
20
  /**
21
21
  * GraphQL or WebSocketHandler
22
22
  *
23
- * *Currently not supported*
23
+ * **Currently not supported**
24
24
  */
25
25
  restHandlers: Handler[];
26
26
  initMSWDevTool: (worker: SetupWorker) => SetupWorker;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "msw-dev-tool",
3
- "version": "1.0.14",
3
+ "version": "1.0.16",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -9,6 +9,7 @@
9
9
  "LICENSE",
10
10
  "README.md"
11
11
  ],
12
+ "description": "msw-dev-tool is a powerful library that enhances the Mock Service Worker (MSW) experience in React by providing an intuitive UI to control mock logic dynamically. It allows developers to modify mock data, adjust response statuses, and monitor API requests in real-time, making API mocking and debugging more seamless and efficient. 🚀",
12
13
  "exports": {
13
14
  ".": {
14
15
  "types": "./dist/types/index.d.ts",
@@ -24,10 +25,10 @@
24
25
  "build": "rollup -c"
25
26
  },
26
27
  "peerDependencies": {
28
+ "msw": "^2.7.0",
27
29
  "react": "^18.0.0",
28
30
  "react-dom": "^18.0.0",
29
- "zustand": "^5.0.2",
30
- "msw": "^2.7.0"
31
+ "zustand": "^5.0.2"
31
32
  },
32
33
  "devDependencies": {
33
34
  "@rollup/plugin-commonjs": "^24.0.1",
@@ -35,6 +36,7 @@
35
36
  "@rollup/plugin-typescript": "^11.1.3",
36
37
  "@types/react": "^18.3.18",
37
38
  "@types/react-dom": "^18.3.5",
39
+ "msw": "^2.7.0",
38
40
  "postcss": "^8.5.1",
39
41
  "react": "^18.3.1",
40
42
  "react-dom": "^18.3.1",
@@ -45,10 +47,10 @@
45
47
  "rollup-plugin-postcss": "^4.0.2",
46
48
  "tslib": "^2.8.1",
47
49
  "typescript": "^5.2.2",
48
- "zustand": "^5.0.2",
49
- "msw": "^2.7.0"
50
+ "zustand": "^5.0.2"
50
51
  },
51
52
  "dependencies": {
53
+ "@tanstack/react-table": "^8.20.6",
52
54
  "immer": "^10.1.1"
53
55
  }
54
56
  }