Files
windmill/frontend/src/lib/components/apps/editor/appUtilsInfer.ts
2023-09-08 09:48:28 +02:00

33 lines
897 B
TypeScript

import { parseOutputs } from '$lib/infer'
import { deepEqual } from 'fast-equals'
import type { EvalV2AppInput, TemplateV2Input } from '../inputType'
import type { Writable } from 'svelte/store'
import type { App } from '../types'
export async function inferDeps(
code: string,
worldOutputs: Record<string, any>,
componentInput: EvalV2AppInput | TemplateV2Input,
app: Writable<App>
) {
const outputs = await parseOutputs(code, true)
if (outputs && componentInput) {
const noutputs = outputs
.filter(
([componentId, id]) =>
componentId == 'row' ||
componentId == 'iter' ||
componentId == 'group' ||
id in (worldOutputs[componentId] ?? {})
)
.map(([componentId, id]) => ({
componentId: componentId,
id: id
}))
if (!deepEqual(noutputs, componentInput.connections)) {
componentInput.connections = noutputs
app.update((old) => old)
}
}
}