2
0

Add AB test block

Closes #449
This commit is contained in:
Baptiste Arnaud
2023-04-17 16:47:17 +02:00
parent b416c6e373
commit 7e937e1c7c
28 changed files with 443 additions and 21 deletions

View File

@ -0,0 +1,31 @@
import { z } from 'zod'
import { blockBaseSchema } from '../baseSchemas'
import { LogicBlockType } from './enums'
import { itemBaseSchema } from '../../items/baseSchemas'
import { ItemType } from '../../items/enums'
export const aItemSchema = itemBaseSchema.extend({
type: z.literal(ItemType.AB_TEST),
path: z.literal('a'),
})
export const bItemSchema = itemBaseSchema.extend({
type: z.literal(ItemType.AB_TEST),
path: z.literal('b'),
})
export const abTestBlockSchema = blockBaseSchema.merge(
z.object({
type: z.enum([LogicBlockType.AB_TEST]),
items: z.tuple([aItemSchema, bItemSchema]),
options: z.object({
aPercent: z.number().min(0).max(100),
}),
})
)
export const defaultAbTestOptions = {
aPercent: 50,
}
export type AbTestBlock = z.infer<typeof abTestBlockSchema>