mirror of
https://github.com/langgenius/dify.git
synced 2026-04-12 22:17:09 +08:00
Co-authored-by: CodingOnStar <hanxujiang@dify.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
91 lines
2.4 KiB
TypeScript
91 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'
|
|
|
|
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 = [...items]
|
|
})
|