UNPKG

@oberoncms/core

Version:

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

92 lines (91 loc) 2.12 kB
import { notFound, redirect } from "next/navigation"; import { isRedirectError } from "next/dist/client/components/redirect"; import { isNotFoundError } from "next/dist/client/components/not-found"; import { ResponseError } from "./dtd.js"; function getTitle(action, slug) { switch (action) { case "edit": return `Editing: ${slug}`; case "preview": return `Previewing: ${slug}`; case "images": return "Manage Images"; case "users": return "Manage Users"; case "pages": return "Manage Pages"; case "site": default: return "Oberon CMS"; } } const parseClientAction = (action) => { switch (action) { case "edit": case "images": case "login": case "pages": case "preview": case "site": case "users": return action; case void 0: return redirect("/cms/pages"); default: return notFound(); } }; const resolveSlug = (path = []) => `/${path.join("/")}`; const resolveDevEnv = (value) => { switch (value) { case "true": return true; case "false": return false; default: return process.env.NODE_ENV === "development" && !process.env.CI; } }; const USE_DEVELOPMENT_DATABASE_PLUGIN = resolveDevEnv( process.env.USE_DEVELOPMENT_DATABASE ); const USE_DEVELOPMENT_SEND_PLUGIN = resolveDevEnv( process.env.USE_DEVELOPMENT_SEND ); function notImplemented(action) { return () => { throw new ResponseError( `No oberon plugin provided for ${action} action, please check your oberon adapter configuration.` ); }; } async function wrap(promise) { try { return { status: "success", result: await promise }; } catch (error) { if (isRedirectError(error) || isNotFoundError(error)) { throw error; } if (error instanceof ResponseError) { return { status: "error", message: error.message }; } return { status: "error" }; } } export { USE_DEVELOPMENT_DATABASE_PLUGIN, USE_DEVELOPMENT_SEND_PLUGIN, getTitle, notImplemented, parseClientAction, resolveSlug, wrap };