| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | 
							- import type { NodeDefault } from '../../types'
 - import type { DataSourceNodeType } from './types'
 - import { DataSourceClassification } from './types'
 - import { genNodeMetaData } from '@/app/components/workflow/utils'
 - import { BlockEnum } from '@/app/components/workflow/types'
 - import {
 -   COMMON_OUTPUT,
 -   LOCAL_FILE_OUTPUT,
 - } from './constants'
 - import { VarType as VarKindType } from '@/app/components/workflow/nodes/tool/types'
 - import { getMatchedSchemaType } from '../_base/components/variable/use-match-schema-type'
 - 
 - const i18nPrefix = 'workflow.errorMsg'
 - 
 - const metaData = genNodeMetaData({
 -   sort: -1,
 -   type: BlockEnum.DataSource,
 - })
 - const nodeDefault: NodeDefault<DataSourceNodeType> = {
 -   metaData,
 -   defaultValue: {
 -     datasource_parameters: {},
 -     datasource_configurations: {},
 -   },
 -   checkValid(payload, t, moreDataForCheckValid) {
 -     const { dataSourceInputsSchema, notAuthed } = moreDataForCheckValid
 -     let errorMessage = ''
 -     if (notAuthed)
 -       errorMessage = t(`${i18nPrefix}.authRequired`)
 - 
 -     if (!errorMessage) {
 -       dataSourceInputsSchema.filter((field: any) => {
 -         return field.required
 -       }).forEach((field: any) => {
 -         const targetVar = payload.datasource_parameters[field.variable]
 -         if (!targetVar) {
 -           errorMessage = t(`${i18nPrefix}.fieldRequired`, { field: field.label })
 -           return
 -         }
 -         const { type: variable_type, value } = targetVar
 -         if (variable_type === VarKindType.variable) {
 -           if (!errorMessage && (!value || value.length === 0))
 -             errorMessage = t(`${i18nPrefix}.fieldRequired`, { field: field.label })
 -         }
 -         else {
 -           if (!errorMessage && (value === undefined || value === null || value === ''))
 -             errorMessage = t(`${i18nPrefix}.fieldRequired`, { field: field.label })
 -         }
 -       })
 -     }
 - 
 -     return {
 -       isValid: !errorMessage,
 -       errorMessage,
 -     }
 -   },
 -   getOutputVars(payload, allPluginInfoList, ragVars = [], { schemaTypeDefinitions } = { schemaTypeDefinitions: [] }) {
 -     const {
 -       plugin_id,
 -       datasource_name,
 -       provider_type,
 -     } = payload
 - 
 -     const isLocalFile = provider_type === DataSourceClassification.localFile
 -     const currentDataSource = allPluginInfoList.dataSourceList?.find((ds: any) => ds.plugin_id === plugin_id)
 -     const currentDataSourceItem = currentDataSource?.tools?.find((tool: any) => tool.name === datasource_name)
 -     const output_schema = currentDataSourceItem?.output_schema
 -     const dynamicOutputSchema: any[] = []
 - 
 -     if (output_schema?.properties) {
 -       Object.keys(output_schema.properties).forEach((outputKey) => {
 -         const output = output_schema.properties[outputKey]
 -         const dataType = output.type
 -         let type = dataType === 'array'
 -           ? `array[${output.items?.type.slice(0, 1).toLocaleLowerCase()}${output.items?.type.slice(1)}]`
 -           : `${dataType.slice(0, 1).toLocaleLowerCase()}${dataType.slice(1)}`
 -         const schemaType = getMatchedSchemaType?.(output, schemaTypeDefinitions)
 - 
 -         if (type === 'object' && schemaType === 'file')
 -           type = 'file'
 - 
 -         dynamicOutputSchema.push({
 -           variable: outputKey,
 -           type,
 -           description: output.description,
 -           schemaType,
 -           children: output.type === 'object' ? {
 -             schema: {
 -               type: 'object',
 -               properties: output.properties,
 -             },
 -           } : undefined,
 -         })
 -       })
 -     }
 -     return [
 -       ...COMMON_OUTPUT.map(item => ({ variable: item.name, type: item.type })),
 -       ...(
 -         isLocalFile
 -           ? LOCAL_FILE_OUTPUT.map(item => ({ variable: item.name, type: item.type }))
 -           : []
 -       ),
 -       ...ragVars,
 -       ...dynamicOutputSchema,
 -     ]
 -   },
 - }
 - 
 - export default nodeDefault
 
 
  |