lobe-chat

Форк
0
/
store.ts 
32 строки · 1.2 Кб
1
import { shallow } from 'zustand/shallow';
2
import { createWithEqualityFn } from 'zustand/traditional';
3
import { StateCreator } from 'zustand/vanilla';
4

5
import { createDevtools } from '../middleware/createDevtools';
6
import { ToolStoreState, initialState } from './initialState';
7
import { BuiltinToolAction, createBuiltinToolSlice } from './slices/builtin';
8
import { CustomPluginAction, createCustomPluginSlice } from './slices/customPlugin';
9
import { PluginAction, createPluginSlice } from './slices/plugin';
10
import { PluginStoreAction, createPluginStoreSlice } from './slices/store';
11

12
//  ===============  聚合 createStoreFn ============ //
13

14
export type ToolStore = ToolStoreState &
15
  CustomPluginAction &
16
  PluginAction &
17
  PluginStoreAction &
18
  BuiltinToolAction;
19

20
const createStore: StateCreator<ToolStore, [['zustand/devtools', never]]> = (...parameters) => ({
21
  ...initialState,
22
  ...createPluginSlice(...parameters),
23
  ...createCustomPluginSlice(...parameters),
24
  ...createPluginStoreSlice(...parameters),
25
  ...createBuiltinToolSlice(...parameters),
26
});
27

28
//  ===============  实装 useStore ============ //
29

30
const devtools = createDevtools('tools');
31

32
export const useToolStore = createWithEqualityFn<ToolStore>()(devtools(createStore), shallow);
33

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.