45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
![]() |
import { z } from 'zod'
|
||
|
import { conditionBlockSchemas } from './condition'
|
||
|
import { jumpBlockSchema } from './jump'
|
||
|
import { redirectBlockSchema } from './redirect'
|
||
|
import { scriptBlockSchema } from './script'
|
||
|
import { setVariableBlockSchema } from './setVariable'
|
||
|
import { typebotLinkBlockSchema } from './typebotLink'
|
||
|
import { waitBlockSchema } from './wait'
|
||
|
import { abTestBlockSchemas } from './abTest'
|
||
|
|
||
|
export const logicBlockSchemas = {
|
||
|
v5: [
|
||
|
scriptBlockSchema,
|
||
|
conditionBlockSchemas.v5,
|
||
|
redirectBlockSchema,
|
||
|
setVariableBlockSchema,
|
||
|
typebotLinkBlockSchema,
|
||
|
waitBlockSchema,
|
||
|
jumpBlockSchema,
|
||
|
abTestBlockSchemas.v5,
|
||
|
],
|
||
|
v6: [
|
||
|
scriptBlockSchema,
|
||
|
conditionBlockSchemas.v6,
|
||
|
redirectBlockSchema,
|
||
|
setVariableBlockSchema,
|
||
|
typebotLinkBlockSchema,
|
||
|
waitBlockSchema,
|
||
|
jumpBlockSchema,
|
||
|
abTestBlockSchemas.v6,
|
||
|
],
|
||
|
} as const
|
||
|
|
||
|
const logicBlockV5Schema = z.discriminatedUnion('type', [
|
||
|
...logicBlockSchemas.v5,
|
||
|
])
|
||
|
|
||
|
const logicBlockV6Schema = z.discriminatedUnion('type', [
|
||
|
...logicBlockSchemas.v6,
|
||
|
])
|
||
|
|
||
|
const logicBlockSchema = z.union([logicBlockV5Schema, logicBlockV6Schema])
|
||
|
|
||
|
export type LogicBlock = z.infer<typeof logicBlockSchema>
|