mirror of https://github.com/langgenius/dify.git
refactor(web): replace enums with as const in models and service files
Convert PromptMode, PromptRole, SubjectType, AccessMode, and AppSourceType from TypeScript enums to as const objects with companion type aliases to reduce bundle size. Also convert PromptRole in workflow/types.ts (required to keep cross-module type compatibility) and add explicit generic to useState<PromptMode> in configuration/index.tsx so TypeScript correctly widens the inferred state type. Part of #27998
This commit is contained in:
parent
f5cc1c8b75
commit
d6d696cd04
|
|
@ -392,7 +392,7 @@ const Configuration: FC = () => {
|
|||
}
|
||||
}, [textGenerationModelList, hasFetchedDetail, modelModeType, currModel, modelConfig])
|
||||
|
||||
const [promptMode, doSetPromptMode] = useState(PromptMode.simple)
|
||||
const [promptMode, doSetPromptMode] = useState<PromptMode>(PromptMode.simple)
|
||||
const isAdvancedMode = promptMode === PromptMode.advanced
|
||||
const [canReturnToSimpleMode, setCanReturnToSimpleMode] = useState(true)
|
||||
const setPromptMode = async (mode: PromptMode) => {
|
||||
|
|
|
|||
|
|
@ -239,11 +239,14 @@ export type ModelConfig = {
|
|||
completion_params: Record<string, any>
|
||||
}
|
||||
|
||||
export enum PromptRole {
|
||||
system = 'system',
|
||||
user = 'user',
|
||||
assistant = 'assistant',
|
||||
}
|
||||
export const PromptRole = {
|
||||
system: 'system',
|
||||
user: 'user',
|
||||
assistant: 'assistant',
|
||||
} as const
|
||||
|
||||
// eslint-disable-next-line ts/no-redeclare -- value-type pair
|
||||
export type PromptRole = typeof PromptRole[keyof typeof PromptRole]
|
||||
|
||||
export enum EditionType {
|
||||
basic = 'basic',
|
||||
|
|
|
|||
|
|
@ -1,14 +1,20 @@
|
|||
export enum SubjectType {
|
||||
GROUP = 'group',
|
||||
ACCOUNT = 'account',
|
||||
}
|
||||
export const SubjectType = {
|
||||
GROUP: 'group',
|
||||
ACCOUNT: 'account',
|
||||
} as const
|
||||
|
||||
export enum AccessMode {
|
||||
PUBLIC = 'public',
|
||||
SPECIFIC_GROUPS_MEMBERS = 'private',
|
||||
ORGANIZATION = 'private_all',
|
||||
EXTERNAL_MEMBERS = 'sso_verified',
|
||||
}
|
||||
// eslint-disable-next-line ts/no-redeclare -- value-type pair
|
||||
export type SubjectType = typeof SubjectType[keyof typeof SubjectType]
|
||||
|
||||
export const AccessMode = {
|
||||
PUBLIC: 'public',
|
||||
SPECIFIC_GROUPS_MEMBERS: 'private',
|
||||
ORGANIZATION: 'private_all',
|
||||
EXTERNAL_MEMBERS: 'sso_verified',
|
||||
} as const
|
||||
|
||||
// eslint-disable-next-line ts/no-redeclare -- value-type pair
|
||||
export type AccessMode = typeof AccessMode[keyof typeof AccessMode]
|
||||
|
||||
export type AccessControlGroup = {
|
||||
id: 'string'
|
||||
|
|
|
|||
|
|
@ -13,10 +13,13 @@ import type { AgentStrategy, ModelModeType, RETRIEVE_TYPE, ToolItem, TtsAutoPlay
|
|||
|
||||
export type Inputs = Record<string, string | number | object | boolean>
|
||||
|
||||
export enum PromptMode {
|
||||
simple = 'simple',
|
||||
advanced = 'advanced',
|
||||
}
|
||||
export const PromptMode = {
|
||||
simple: 'simple',
|
||||
advanced: 'advanced',
|
||||
} as const
|
||||
|
||||
// eslint-disable-next-line ts/no-redeclare -- value-type pair
|
||||
export type PromptMode = typeof PromptMode[keyof typeof PromptMode]
|
||||
|
||||
export type PromptItem = {
|
||||
role?: PromptRole
|
||||
|
|
@ -42,11 +45,14 @@ export type BlockStatus = {
|
|||
query: boolean
|
||||
}
|
||||
|
||||
export enum PromptRole {
|
||||
system = 'system',
|
||||
user = 'user',
|
||||
assistant = 'assistant',
|
||||
}
|
||||
export const PromptRole = {
|
||||
system: 'system',
|
||||
user: 'user',
|
||||
assistant: 'assistant',
|
||||
} as const
|
||||
|
||||
// eslint-disable-next-line ts/no-redeclare -- value-type pair
|
||||
export type PromptRole = typeof PromptRole[keyof typeof PromptRole]
|
||||
|
||||
export type PromptVariable = {
|
||||
key: string
|
||||
|
|
|
|||
|
|
@ -29,11 +29,14 @@ import {
|
|||
} from './base'
|
||||
import { getWebAppAccessToken } from './webapp-auth'
|
||||
|
||||
export enum AppSourceType {
|
||||
webApp = 'webApp',
|
||||
installedApp = 'installedApp',
|
||||
tryApp = 'tryApp',
|
||||
}
|
||||
export const AppSourceType = {
|
||||
webApp: 'webApp',
|
||||
installedApp: 'installedApp',
|
||||
tryApp: 'tryApp',
|
||||
} as const
|
||||
|
||||
// eslint-disable-next-line ts/no-redeclare -- value-type pair
|
||||
export type AppSourceType = typeof AppSourceType[keyof typeof AppSourceType]
|
||||
|
||||
const apiPrefix = {
|
||||
[AppSourceType.webApp]: '',
|
||||
|
|
|
|||
Loading…
Reference in New Issue