UNPKG

create-vite-app-cli

Version:

a fast create webapp template cli, perfect engineering development experience, currently supported template presets include: - `react-ts` (React + TypeScript + Vite + Pnpm + Zustand + Openapi + Docker) - `vue-ts` (Vue 3 + TypeScript + Vite + Pnpm + Pinia

70 lines (61 loc) 1.73 kB
import { create } from "zustand"; import { StorageValue, devtools, persist } from "zustand/middleware"; import { logger } from "./loggerMiddleware"; interface ILoginInfo { accessToken: string; refreshToken?: string; uid?: string; expireAt?: string; expires_in?: number; name?: string; } interface ILoginInfoState { loginInfo: ILoginInfo | null; updateLoginInfo: (nextState: ILoginInfo) => void; clear: () => void; } export const loginInfoStorageKey = "login-info-storage"; export const defaultLoginInfoStorage = { state: { loginInfo: null }, version: 0 }; export type ILoginInfoStorageState = StorageValue<Pick<ILoginInfoState, "loginInfo">>; export const useLoginInfoStore = create<ILoginInfoState>()( logger( devtools( persist( (set) => ({ loginInfo: null, updateLoginInfo: (newLoginInfo) => set(() => ({ loginInfo: newLoginInfo })), clear: () => set(() => ({ loginInfo: null })), }), { name: loginInfoStorageKey, }, ), ), ), ); interface IProjectInfo { projectId: string; projectName: string; } interface IProjectInfoState { projectInfo: IProjectInfo[] | null; updateProjectInfo: (nextState: IProjectInfo[]) => void; clear: () => void; } const projectInfoStorageKey = "project-info-storage"; export const useProjectInfoStore = create<IProjectInfoState>()( logger( devtools( persist( (set) => ({ projectInfo: null, updateProjectInfo: (newProjectInfo) => set(() => ({ projectInfo: newProjectInfo })), clear: () => set(() => ({ projectInfo: null })), }), { name: projectInfoStorageKey, }, ), ), ), );