Use V2 schema in widget constructors (Part 1) (#2860)

This commit is contained in:
Chenlei Hu
2025-03-04 17:22:13 -05:00
committed by GitHub
parent 89b73429b7
commit 6255cea181
6 changed files with 139 additions and 135 deletions

View File

@@ -25,14 +25,20 @@ export function transformNodeDefV1ToV2(
// Process required inputs
if (nodeDefV1.input?.required) {
Object.entries(nodeDefV1.input.required).forEach(([name, inputSpecV1]) => {
inputs[name] = transformInputSpec(inputSpecV1, name, false)
inputs[name] = transformInputSpecV1ToV2(inputSpecV1, {
name,
isOptional: false
})
})
}
// Process optional inputs
if (nodeDefV1.input?.optional) {
Object.entries(nodeDefV1.input.optional).forEach(([name, inputSpecV1]) => {
inputs[name] = transformInputSpec(inputSpecV1, name, true)
inputs[name] = transformInputSpecV1ToV2(inputSpecV1, {
name,
isOptional: true
})
})
}
@@ -81,11 +87,15 @@ export function transformNodeDefV1ToV2(
* @param isOptional Whether the input is optional
* @returns The transformed V2 input specification
*/
function transformInputSpec(
export function transformInputSpecV1ToV2(
inputSpecV1: InputSpecV1,
name: string,
isOptional: boolean
kwargs: {
name: string
isOptional?: boolean
}
): InputSpecV2 {
const { name, isOptional = false } = kwargs
// Extract options from the input spec
const options = inputSpecV1[1] || {}
@@ -119,3 +129,9 @@ function transformInputSpec(
...baseProps
}
}
export function transformInputSpecV2ToV1(
inputSpecV2: InputSpecV2
): InputSpecV1 {
return [inputSpecV2.type, inputSpecV2]
}