feat: Add zod schemas for CI validation (#479)

* Add zod schemas for CI validation

* Stricter Zod validation
This commit is contained in:
Lachlan Collins
2023-11-12 22:57:01 +11:00
committed by GitHub
parent f87d57eebe
commit 71d1b2e4d6
4 changed files with 90 additions and 2 deletions

65
src/lib/schemas.js Normal file
View File

@@ -0,0 +1,65 @@
import { z } from 'zod';
export const componentsSchema = z.array(
z.object({
title: z.string(),
npm: z
.string()
.regex(/(@[\w-]+\/)?[\w-]+/)
.optional(),
url: z.string().url().optional(),
repository: z.string().url(),
description: z.string(),
category: z.enum([
'Display Components',
'Developer Experience',
'Internationalization',
'CSS and Layout',
'Icons',
'Multimedia',
'Testing',
'Data Visualisation',
'Integration',
'Design Pattern',
'Stores',
'Routers',
'SvelteKit Adapters',
'Design System',
'User Interaction',
'Forms & User Input'
]),
tags: z.array(z.string()).optional()
})
);
export const templatesSchema = z.array(
z.object({
title: z.string(),
url: z.string().url().optional(),
repository: z.string().url(),
description: z.string(),
category: z.enum(['Svelte Add', 'SvelteKit', 'Svelte']),
tags: z.array(z.string()).optional()
})
);
export const toolsSchema = z.array(
z.object({
title: z.string(),
npm: z
.string()
.regex(/(@[\w-]+\/)?[\w-]+/)
.optional(),
url: z.string().url().optional(),
repository: z.string().url(),
description: z.string(),
category: z.enum([
'Debugging',
'Linting and Formatting',
'Editor Extensions',
'Bundler Plugins',
'Preprocessors'
]),
tags: z.array(z.string()).optional()
})
);