facilmap/types/src/view.ts

19 wiersze
750 B
TypeScript

import { bboxValidator, idValidator, layerValidator, padIdValidator } from "./base.js";
import { CRU, type CRUType, cruValidator, exceptCreate, onlyRead, optionalUpdate, mapValues, optionalCreate } from "./cru.js";
import * as z from "zod";
export const viewValidator = cruValidator({
id: exceptCreate(idValidator),
padId: onlyRead(padIdValidator),
name: optionalUpdate(z.string().trim().min(1).max(100)),
idx: optionalCreate(z.number().int().min(0)),
...mapValues(bboxValidator.shape, optionalUpdate),
baseLayer: optionalUpdate(layerValidator),
layers: optionalUpdate(z.array(layerValidator)),
filter: optionalCreate(z.string().or(z.null()), null)
});
export type View<Mode extends CRU = CRU.READ> = CRUType<Mode, typeof viewValidator>;