diff --git a/frontend/package.json b/frontend/package.json index 263c0ad7..41a80e41 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -35,7 +35,8 @@ "vite-bundle-visualizer": "^1.2.1", "vite-plugin-image-optimizer": "^1.1.8", "vite-plugin-svgr": "^4.2.0", - "vite-tsconfig-paths": "^5.0.1" + "vite-tsconfig-paths": "^5.0.1", + "zod": "^3.23.8" }, "proxy": "http://127.0.0.1:5000", "scripts": { @@ -60,10 +61,10 @@ }, "devDependencies": { "@biomejs/biome": "1.8.3", + "@vitest/coverage-v8": "^2.1.5", "babel-plugin-named-exports-order": "^0.0.2", "prop-types": "^15.8.1", - "vitest": "^2.1.5", - "@vitest/coverage-v8": "^2.1.5" + "vitest": "^2.1.5" }, "engines": { "node": ">=20", diff --git a/frontend/src/apiDefinitions.ts b/frontend/src/apiDefinitions.ts index b6d45ae0..a0949fa2 100644 --- a/frontend/src/apiDefinitions.ts +++ b/frontend/src/apiDefinitions.ts @@ -1,20 +1,25 @@ // Copyright Contributors to the Packit project. // SPDX-License-Identifier: MIT +import { z } from "zod"; + /** * This is a list of items from the Packit API */ // /api/projects/$forge/$namespace/$repo -export interface Project { - namespace: string; - repo_name: string; - project_url: string; - prs_handled: number; - branches_handled: number; - releases_handled: number; - issues_handled: number; -} + +export const Project = z.object({ + namespace: z.string(), + repo_name: z.string(), + project_url: z.string(), + prs_handled: z.number(), + branches_handled: z.number(), + releases_handled: z.number(), + issues_handled: z.number(), +}); + +export type Project = z.infer; // /api/projects/$forge/$namespace/$repo/issues export type ProjectIssue = number; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c6b032af..13b1ab6c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,6 +104,9 @@ importers: vite-tsconfig-paths: specifier: ^5.0.1 version: 5.0.1(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4)) + zod: + specifier: ^3.23.8 + version: 3.23.8 devDependencies: '@biomejs/biome': specifier: 1.8.3