Squashed commit of the following:

commit e6b72ac1ff
Author: Yifei Zhang <yidadaa@qq.com>
Date:   Fri Nov 10 02:59:47 2023 +0800

    Update README.md

commit 8032e6d68d
Author: Yifei Zhang <yidadaa@qq.com>
Date:   Fri Nov 10 02:59:30 2023 +0800

    Update README.md

commit c7e0a6f37f
Author: Yidadaa <yidadaa@qq.com>
Date:   Fri Nov 10 02:57:40 2023 +0800

    doc: update azure env vars

commit 1141cd2e6e
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

commit c9dd953817
Author: Yidadaa <yidadaa@qq.com>
Date:   Fri Nov 10 02:50:50 2023 +0800

    fixup

commit b7ffca031e
Author: Yidadaa <yidadaa@qq.com>
Date:   Fri Nov 10 02:43:30 2023 +0800

    feat: close #935 add azure support

commit fd2f441e02
Author: Yifei Zhang <yidadaa@qq.com>
Date:   Thu Nov 9 20:45:25 2023 +0800

    feat: wont send max_tokens
This commit is contained in:
DirkSchlossmacher
2023-11-10 03:06:59 +01:00
parent 459d86b90b
commit 6e7cede1a0
34 changed files with 552 additions and 322 deletions

View File

@@ -1,3 +1,10 @@
export function deepClone<T>(obj: T) {
return JSON.parse(JSON.stringify(obj));
}
export function ensure<T extends object>(
obj: T,
keys: Array<[keyof T][number]>,
) {
return keys.every((k) => obj[k] !== undefined && obj[k] !== null);
}

View File

@@ -1,5 +1,5 @@
import { create } from "zustand";
import { persist } from "zustand/middleware";
import { combine, persist } from "zustand/middleware";
import { Updater } from "../typing";
import { deepClone } from "./clone";
@@ -23,33 +23,42 @@ type SetStoreState<T> = (
replace?: boolean | undefined,
) => void;
export function createPersistStore<T, M>(
defaultState: T,
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<T & M & MakeUpdater<T>>()(
persist((set, get) => {
return {
...defaultState,
...methods(set as any, get),
return create(
persist(
combine(
{
...state,
lastUpdateTime: 0,
},
(set, get) => {
return {
...methods(set, get as any),
lastUpdateTime: 0,
markUpdate() {
set({ lastUpdateTime: Date.now() } as Partial<
T & M & MakeUpdater<T>
>);
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>;
},
update(updater) {
const state = deepClone(get());
updater(state);
get().markUpdate();
set(state);
},
};
}, persistOptions),
),
persistOptions as any,
),
);
}