dify/web/app/components/workflow/nodes/assigner/use-config.helpers.ts
非法操作 53a22aa41b
feat: collaboration (#30781)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: yyh <yuanyouhuilyz@gmail.com>
Co-authored-by: yyh <92089059+lyzno1@users.noreply.github.com>
2026-04-16 02:21:04 +00:00

92 lines
2.4 KiB
TypeScript

import type { ValueSelector, Var } from '../../types'
import type { AssignerNodeOperation, AssignerNodeType } from './types'
import { produce } from 'immer'
import { VarType } from '../../types'
import { WriteMode } from './types'
import { normalizeOperationItems } from './utils'
export const filterVarByType = (varType: VarType) => {
return (variable: Var) => {
if (varType === VarType.any || variable.type === VarType.any)
return true
return variable.type === varType
}
}
export const normalizeAssignedVarType = (assignedVarType: VarType, writeMode: WriteMode) => {
if (
writeMode === WriteMode.overwrite
|| writeMode === WriteMode.increment
|| writeMode === WriteMode.decrement
|| writeMode === WriteMode.multiply
|| writeMode === WriteMode.divide
|| writeMode === WriteMode.extend
) {
return assignedVarType
}
if (writeMode === WriteMode.append) {
switch (assignedVarType) {
case VarType.arrayString:
return VarType.string
case VarType.arrayNumber:
return VarType.number
case VarType.arrayObject:
return VarType.object
default:
return VarType.string
}
}
return VarType.string
}
export const canAssignVar = (_varPayload: Var, selector: ValueSelector) => {
return selector.join('.').startsWith('conversation')
}
export const canAssignToVar = (
varPayload: Var,
assignedVarType: VarType,
writeMode: WriteMode,
) => {
if (
writeMode === WriteMode.overwrite
|| writeMode === WriteMode.extend
|| writeMode === WriteMode.increment
|| writeMode === WriteMode.decrement
|| writeMode === WriteMode.multiply
|| writeMode === WriteMode.divide
) {
return varPayload.type === assignedVarType
}
if (writeMode === WriteMode.append) {
switch (assignedVarType) {
case VarType.arrayString:
return varPayload.type === VarType.string
case VarType.arrayNumber:
return varPayload.type === VarType.number
case VarType.arrayObject:
return varPayload.type === VarType.object
default:
return false
}
}
return true
}
export const ensureAssignerVersion = (newInputs: AssignerNodeType) => produce(newInputs, (draft) => {
if (draft.version !== '2')
draft.version = '2'
})
export const updateOperationItems = (
inputs: AssignerNodeType,
items: AssignerNodeOperation[],
) => produce(inputs, (draft) => {
draft.items = normalizeOperationItems(items)
})