67 lines
2.2 KiB
TypeScript
67 lines
2.2 KiB
TypeScript
import { create } from 'zustand'
|
|
import { persist, createJSONStorage } from 'zustand/middleware'
|
|
import { localStorageKey } from '@/constants/localStorage'
|
|
|
|
type LocalApiServerState = {
|
|
// Run local API server once app opens
|
|
enableOnStartup: boolean
|
|
setEnableOnStartup: (value: boolean) => void
|
|
// Server host option (127.0.0.1 or 0.0.0.0)
|
|
serverHost: '127.0.0.1' | '0.0.0.0'
|
|
setServerHost: (value: '127.0.0.1' | '0.0.0.0') => void
|
|
// Server port (default 1337)
|
|
serverPort: number
|
|
setServerPort: (value: number) => void
|
|
// API prefix (default /v1)
|
|
apiPrefix: string
|
|
setApiPrefix: (value: string) => void
|
|
// CORS enabled
|
|
corsEnabled: boolean
|
|
setCorsEnabled: (value: boolean) => void
|
|
// Verbose server logs
|
|
verboseLogs: boolean
|
|
setVerboseLogs: (value: boolean) => void
|
|
apiKey: string
|
|
setApiKey: (value: string) => void
|
|
// Trusted hosts
|
|
trustedHosts: string[]
|
|
addTrustedHost: (host: string) => void
|
|
removeTrustedHost: (host: string) => void
|
|
setTrustedHosts: (hosts: string[]) => void
|
|
}
|
|
|
|
export const useLocalApiServer = create<LocalApiServerState>()(
|
|
persist(
|
|
(set) => ({
|
|
enableOnStartup: false,
|
|
setEnableOnStartup: (value) => set({ enableOnStartup: value }),
|
|
serverHost: '127.0.0.1',
|
|
setServerHost: (value) => set({ serverHost: value }),
|
|
serverPort: 1337,
|
|
setServerPort: (value) => set({ serverPort: value }),
|
|
apiPrefix: '/v1',
|
|
setApiPrefix: (value) => set({ apiPrefix: value }),
|
|
corsEnabled: true,
|
|
setCorsEnabled: (value) => set({ corsEnabled: value }),
|
|
verboseLogs: true,
|
|
setVerboseLogs: (value) => set({ verboseLogs: value }),
|
|
trustedHosts: [],
|
|
addTrustedHost: (host) =>
|
|
set((state) => ({
|
|
trustedHosts: [...state.trustedHosts, host],
|
|
})),
|
|
removeTrustedHost: (host) =>
|
|
set((state) => ({
|
|
trustedHosts: state.trustedHosts.filter((h) => h !== host),
|
|
})),
|
|
setTrustedHosts: (hosts) => set({ trustedHosts: hosts }),
|
|
apiKey: '',
|
|
setApiKey: (value) => set({ apiKey: value }),
|
|
}),
|
|
{
|
|
name: localStorageKey.settingLocalApiServer,
|
|
storage: createJSONStorage(() => localStorage),
|
|
}
|
|
)
|
|
)
|