2
0

♻️ Introduce typebot v6 with events (#1013)

Closes #885
This commit is contained in:
Baptiste Arnaud
2023-11-08 15:34:16 +01:00
committed by GitHub
parent 68e4fc71fb
commit 35300eaf34
634 changed files with 58971 additions and 31449 deletions

View File

@ -0,0 +1,25 @@
import { SetVariableBlock } from './schema'
export const valueTypes = [
'Custom',
'Empty',
'Append value(s)',
'Environment name',
'User ID',
'Now',
'Today',
'Yesterday',
'Tomorrow',
'Random ID',
'Moment of the day',
'Map item with same index',
'Phone number',
'Contact name',
] as const
export const hiddenTypes = ['Today'] as const
export const defaultSetVariableOptions = {
type: 'Custom',
isExecutedOnClient: false,
} as const satisfies SetVariableBlock['options']

View File

@ -0,0 +1 @@
export * from './schema'

View File

@ -0,0 +1,69 @@
import { z } from 'zod'
import { blockBaseSchema } from '../../shared'
import { LogicBlockType } from '../constants'
const baseOptions = z.object({
variableId: z.string().optional(),
isExecutedOnClient: z.boolean().optional(),
})
const basicSetVariableOptionsSchema = baseOptions.extend({
type: z.enum([
'Today',
'Now',
'Yesterday',
'Tomorrow',
'Moment of the day',
'Empty',
'Environment name',
'User ID',
'Random ID',
'Phone number',
'Contact name',
]),
})
const initialSetVariableOptionsSchema = baseOptions.extend({
type: z.undefined(),
expressionToEvaluate: z.string().optional(),
isCode: z.boolean().optional(),
})
const customSetVariableOptionsSchema = baseOptions.extend({
type: z.literal('Custom'),
expressionToEvaluate: z.string().optional(),
isCode: z.boolean().optional(),
})
const mapListItemsOptionsSchema = baseOptions.extend({
type: z.literal('Map item with same index'),
mapListItemParams: z
.object({
baseItemVariableId: z.string().optional(),
baseListVariableId: z.string().optional(),
targetListVariableId: z.string().optional(),
})
.optional(),
})
const appendItemToListOptionsSchema = baseOptions.extend({
type: z.literal('Append value(s)'),
item: z.string().optional(),
})
export const setVariableOptionsSchema = z.discriminatedUnion('type', [
initialSetVariableOptionsSchema,
basicSetVariableOptionsSchema,
customSetVariableOptionsSchema,
mapListItemsOptionsSchema,
appendItemToListOptionsSchema,
])
export const setVariableBlockSchema = blockBaseSchema.merge(
z.object({
type: z.enum([LogicBlockType.SET_VARIABLE]),
options: setVariableOptionsSchema.optional(),
})
)
export type SetVariableBlock = z.infer<typeof setVariableBlockSchema>