UNPKG

@reliverse/rse-sdk

Version:

@reliverse/rse-sdk allows you to create new plugins for @reliverse/rse CLI, interact with reliverse.org, and even extend your own CLI functionality (you may also try @reliverse/dler-sdk for this case).

45 lines (44 loc) 2.03 kB
import { z } from "zod"; export const DatabaseSchema = z.enum(["none", "sqlite", "postgres", "mysql", "mongodb"]).describe("Database type"); export const ORMSchema = z.enum(["drizzle", "prisma", "mongoose", "none"]).describe("ORM type"); export const BackendSchema = z.enum(["hono", "express", "fastify", "next", "elysia", "convex", "none"]).describe("Backend framework"); export const RuntimeSchema = z.enum(["bun", "node", "workers", "none"]).describe( "Runtime environment (workers only available with hono backend and drizzle orm)" ); export const FrontendSchema = z.enum([ "tanstack-router", "react-router", "tanstack-start", "next", "nuxt", "native-nativewind", "native-unistyles", "svelte", "solid", "none" ]).describe("Frontend framework"); export const AddonsSchema = z.enum(["pwa", "tauri", "starlight", "biome", "husky", "turborepo", "none"]).describe("Additional addons"); export const ExamplesSchema = z.enum(["todo", "ai", "none"]).describe("Example templates to include"); export const PackageManagerSchema = z.enum(["npm", "pnpm", "bun"]).describe("Package manager"); export const DatabaseSetupSchema = z.enum([ "turso", "neon", "prisma-postgres", "mongodb-atlas", "supabase", "none" ]).describe("Database hosting setup"); export const APISchema = z.enum(["trpc", "orpc", "none"]).describe("API type"); export const ProjectNameSchema = z.string().min(1, "Project name cannot be empty").max(255, "Project name must be less than 255 characters").refine( (name) => name === "." || !name.startsWith("."), "Project name cannot start with a dot (except for '.')" ).refine( (name) => name === "." || !name.startsWith("-"), "Project name cannot start with a dash" ).refine((name) => { const invalidChars = ["<", ">", ":", '"', "|", "?", "*"]; return !invalidChars.some((char) => name.includes(char)); }, "Project name contains invalid characters").refine( (name) => name.toLowerCase() !== "node_modules", "Project name is reserved" ).describe("Project name or path");