Skip to content
19 changes: 19 additions & 0 deletions packages/app/src/cli/models/extensions/schemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,27 @@ export const ExtensionsArraySchema = zod.object({
extensions: zod.array(zod.any()).optional(),
})

const InterceptEventsSchema = zod
.array(
zod.string().regex(/^[a-z]+$/, {
message: 'Intercept event must contain only lowercase letters (a-z)',
}),
)
.superRefine((events, context) => {
const duplicates = [...new Set(events.filter((event, index) => events.indexOf(event) !== index))]
if (duplicates.length > 0) {
context.addIssue({
code: zod.ZodIssueCode.custom,
message: `Duplicate intercept events found: ${duplicates.join(
', ',
)}. Each intercept event may only be declared once.`,
})
}
})

const TargetCapabilitiesSchema = zod.object({
allow_direct_linking: zod.boolean().optional(),
intercepts: InterceptEventsSchema.optional(),
})

const ShouldRenderSchema = zod.object({
Expand Down
Loading