create-cf-planetscale-app
Version:
Create a Cloudflare workers app for building production ready RESTful APIs using Hono
64 lines (50 loc) • 1.51 kB
text/typescript
import { z } from 'zod'
import { password } from './custom.refine.validation'
import { hashPassword } from './custom.transform.validation'
export const register = z.strictObject({
email: z.string().email(),
password: z.string().superRefine(password).transform(hashPassword),
name: z.string()
})
export type Register = z.infer<typeof register>
export const login = z.strictObject({
email: z.string(),
password: z.string()
})
export const refreshTokens = z.strictObject({
refresh_token: z.string()
})
export const forgotPassword = z.strictObject({
email: z.string().email()
})
export const resetPassword = z.strictObject({
query: z.object({
token: z.string()
}),
body: z.object({
password: z.string().superRefine(password).transform(hashPassword)
})
})
export const verifyEmail = z.strictObject({
token: z.string()
})
export const changePassword = z.strictObject({
oldPassword: z.string().superRefine(password).transform(hashPassword),
newPassword: z.string().superRefine(password).transform(hashPassword)
})
export const oauthCallback = z.object({
code: z.string(),
platform: z.union([z.literal('web'), z.literal('ios'), z.literal('android')])
})
export const linkApple = z.object({
code: z.string()
})
export const oauthRedirect = z.object({
state: z.string()
})
export const validateOneTimeCode = z.object({
code: z.string()
})
export const stateValidation = z.object({
platform: z.union([z.literal('web'), z.literal('ios'), z.literal('android')])
})