2023-12-06 22:58:38 +00:00
|
|
|
import z from "zod";
|
|
|
|
|
|
|
|
export const zPublisher = z.object({
|
|
|
|
mbox: z.string().optional(),
|
|
|
|
name: z.string(),
|
|
|
|
});
|
|
|
|
export const zDistribution = z.object({
|
|
|
|
identifier: z.string(),
|
|
|
|
downloadURL: z.string(),
|
|
|
|
fileName: z.string().optional(),
|
|
|
|
format: z.string().optional(),
|
|
|
|
title: z.string(),
|
|
|
|
description: z.string().optional(),
|
|
|
|
});
|
|
|
|
export type Distribution = z.infer<typeof zDistribution>;
|
|
|
|
export const zDataset = z.object({
|
|
|
|
identifier: z.string(),
|
|
|
|
title: z.string(),
|
|
|
|
description: z.string(),
|
|
|
|
publisher: zPublisher,
|
|
|
|
distribution: z.array(zDistribution),
|
|
|
|
});
|
|
|
|
export const zData = z.object({
|
|
|
|
title: z.string(),
|
|
|
|
description: z.string(),
|
2023-12-07 21:39:52 +00:00
|
|
|
homepage: z.string().optional(),
|
2023-12-06 22:58:38 +00:00
|
|
|
dataset: z.array(zDataset),
|
|
|
|
});
|
|
|
|
|
|
|
|
export const zError = z.object({
|
|
|
|
url: z.string(),
|
|
|
|
datasetIdentifier: z.string(),
|
|
|
|
distributionIdentifier: z.string(),
|
|
|
|
kind: z.enum(["generic_error", "http_error", "infinite_redirect"]),
|
|
|
|
error: z.string().optional(),
|
|
|
|
});
|