mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2025-10-09 03:26:38 +08:00
commite6b72ac1ff
Author: Yifei Zhang <yidadaa@qq.com> Date: Fri Nov 10 02:59:47 2023 +0800 Update README.md commit8032e6d68d
Author: Yifei Zhang <yidadaa@qq.com> Date: Fri Nov 10 02:59:30 2023 +0800 Update README.md commitc7e0a6f37f
Author: Yidadaa <yidadaa@qq.com> Date: Fri Nov 10 02:57:40 2023 +0800 doc: update azure env vars commit1141cd2e6e
Merge:fd2f441
c9dd953
Author: Yifei Zhang <yidadaa@qq.com> Date: Fri Nov 10 02:55:12 2023 +0800 Merge pull request #3206 from Yidadaa/azure commitc9dd953817
Author: Yidadaa <yidadaa@qq.com> Date: Fri Nov 10 02:50:50 2023 +0800 fixup commitb7ffca031e
Author: Yidadaa <yidadaa@qq.com> Date: Fri Nov 10 02:43:30 2023 +0800 feat: close #935 add azure support commitfd2f441e02
Author: Yifei Zhang <yidadaa@qq.com> Date: Thu Nov 9 20:45:25 2023 +0800 feat: wont send max_tokens
65 lines
1.4 KiB
TypeScript
65 lines
1.4 KiB
TypeScript
import { create } from "zustand";
|
|
import { combine, persist } from "zustand/middleware";
|
|
import { Updater } from "../typing";
|
|
import { deepClone } from "./clone";
|
|
|
|
type SecondParam<T> = T extends (
|
|
_f: infer _F,
|
|
_s: infer S,
|
|
...args: infer _U
|
|
) => any
|
|
? S
|
|
: never;
|
|
|
|
type MakeUpdater<T> = {
|
|
lastUpdateTime: number;
|
|
|
|
markUpdate: () => void;
|
|
update: Updater<T>;
|
|
};
|
|
|
|
type SetStoreState<T> = (
|
|
partial: T | Partial<T> | ((state: T) => T | Partial<T>),
|
|
replace?: boolean | undefined,
|
|
) => void;
|
|
|
|
export function createPersistStore<T extends object, M>(
|
|
state: T,
|
|
methods: (
|
|
set: SetStoreState<T & MakeUpdater<T>>,
|
|
get: () => T & MakeUpdater<T>,
|
|
) => M,
|
|
persistOptions: SecondParam<typeof persist<T & M & MakeUpdater<T>>>,
|
|
) {
|
|
return create(
|
|
persist(
|
|
combine(
|
|
{
|
|
...state,
|
|
lastUpdateTime: 0,
|
|
},
|
|
(set, get) => {
|
|
return {
|
|
...methods(set, get as any),
|
|
|
|
markUpdate() {
|
|
set({ lastUpdateTime: Date.now() } as Partial<
|
|
T & M & MakeUpdater<T>
|
|
>);
|
|
},
|
|
update(updater) {
|
|
const state = deepClone(get());
|
|
updater(state);
|
|
set({
|
|
...state,
|
|
lastUpdateTime: Date.now(),
|
|
});
|
|
},
|
|
} as M & MakeUpdater<T>;
|
|
},
|
|
),
|
|
persistOptions as any,
|
|
),
|
|
);
|
|
}
|