UNPKG

studiocms

Version:

Astro Native CMS for AstroDB. Built from the ground up by the Astro community.

53 lines (52 loc) 1.69 kB
import { AstroError } from "astro/errors"; import { z } from "astro/zod"; import { createJsonResponse, Effect, genLogger, parseFormDataEntryToString, readAPIContextFormData, readAPIContextJson, Schema } from "../../../effect.js"; class FormDataEntryFields extends Schema.Class("FormDataEntryFields")({ title: Schema.String, description: Schema.String }) { } class AuthAPIUtils extends Effect.Service()( "studiocms/routes/api/auth/shared/AuthAPIUtils", { effect: genLogger("studiocms/routes/api/auth/shared/AuthAPIUtils.effect")(function* () { return { parseFormDataEntryToString, // biome-ignore lint/suspicious/noExplicitAny: This is a generic utility function readJson: (context) => readAPIContextJson(context), readFormData: (context) => readAPIContextFormData(context), badFormDataEntry: (title, description) => genLogger("studiocms/routes/api/auth/shared/AuthAPIUtils.badFormDataEntry")(function* () { const error = yield* Schema.decode(FormDataEntryFields)({ title, description }); return createJsonResponse( { error }, { status: 400, statusText: "Bad Request" } ); }), validateEmail: (email) => Effect.try({ try: () => { const emailSchema = z.coerce.string().email({ message: "Email address is invalid" }); return emailSchema.safeParse(email); }, catch: () => new AstroError("Failed to parse email with zod.") }) }; }) } ) { static Provide = Effect.provide(this.Default); } export { AuthAPIUtils, FormDataEntryFields };