@ -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']
|
@ -0,0 +1 @@
|
||||
export * from './schema'
|
69
packages/schemas/features/blocks/logic/setVariable/schema.ts
Normal file
69
packages/schemas/features/blocks/logic/setVariable/schema.ts
Normal 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>
|
Reference in New Issue
Block a user