UNPKG

@oberoncms/core

Version:

OberonCMS is a cloud deployable CMS written in typescript based on the Puck visual editor

93 lines (92 loc) 2.28 kB
import { z } from "zod"; class OberonError extends Error { } class ResponseError extends Error { } class NotImplementedError extends ResponseError { } function defineOberonComponent(config) { return config; } const clientActions = [ "edit", "preview", "users", "images", "pages", "site", "login" ]; const actionPaths = clientActions.map((action) => ({ path: [action] })); const INITIAL_DATA = { content: [], root: { props: { title: "" } } }; const JsonValueSchema = z.json(); const PageSchema = z.object({ key: z.string().regex(/^[0-9a-zA-Z_.-/]+$/, "Valid characters: 0-9 a-z A-Z -_./").regex(/^(\/|\/[^/]+(\/[^/]+)*)$/, "Route segments cannot be empty"), data: z.object({}).passthrough(), updatedAt: z.date(), updatedBy: z.string() }); const AddPageSchema = PageSchema.pick({ key: true }); const DeletePageSchema = PageSchema.pick({ key: true }); const PublishPageSchema = PageSchema.pick({ key: true, data: true }); const PageMetaSchema = PageSchema.pick({ key: true, updatedAt: true, updatedBy: true }); const ImageSchema = z.object({ key: z.string(), url: z.string(), size: z.number(), width: z.number().gt(0), height: z.number().gt(0), alt: z.string(), updatedAt: z.date(), updatedBy: z.string() }); const AddImageSchema = ImageSchema; const DeleteImageSchema = ImageSchema.pick({ key: true }); const UserSchema = z.object({ id: z.string(), email: z.string().email(), role: z.union([z.literal("user"), z.literal("admin"), z.string()]) }); const AddUserSchema = UserSchema.pick({ email: true, role: true }); const ChangeRoleSchema = UserSchema.pick({ id: true, role: true }); const DeleteUserSchema = UserSchema.pick({ id: true }); const roles = ["user", "admin"]; const SiteSchema = z.object({ version: z.number(), components: z.record(z.string(), z.number()), updatedAt: z.date(), updatedBy: z.string() }); export { AddImageSchema, AddPageSchema, AddUserSchema, ChangeRoleSchema, DeleteImageSchema, DeletePageSchema, DeleteUserSchema, INITIAL_DATA, ImageSchema, JsonValueSchema, NotImplementedError, OberonError, PageMetaSchema, PageSchema, PublishPageSchema, ResponseError, SiteSchema, UserSchema, actionPaths, clientActions, defineOberonComponent, roles };