feat: init

This commit is contained in:
ccbikai
2024-05-25 08:09:30 +08:00
commit bd47e755d5
298 changed files with 21915 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
import { z } from 'zod'
import { customAlphabet } from 'nanoid'
const { slugRegex } = useAppConfig()
const slugDefaultLength = +useRuntimeConfig().public.slugDefaultLength
export const nanoid = (length: number = slugDefaultLength) => customAlphabet('0123456789abcdefghijklmnopqrstuvwxyz', length)
export const LinkSchema = z.object({
id: z.string().trim().max(26).default(nanoid(10)),
url: z.string().trim().url().max(2048),
slug: z.string().trim().max(2048).regex(new RegExp(slugRegex)).default(nanoid()),
comment: z.string().trim().max(2048).optional(),
createdAt: z.number().int().safe().default(() => Math.floor(Date.now() / 1000)),
updatedAt: z.number().int().safe().default(() => Math.floor(Date.now() / 1000)),
expiration: z.number().int().safe().refine(expiration => expiration > Math.floor(Date.now() / 1000), {
message: 'expiration must be greater than current time',
path: ['expiration'], // 这里指定错误消息关联到哪个字段
}).optional(),
title: z.string().trim().max(2048).optional(),
description: z.string().trim().max(2048).optional(),
image: z.string().trim().url().max(2048).optional(),
})
+25
View File
@@ -0,0 +1,25 @@
import { z } from 'zod'
export const QuerySchema = z.object({
id: z.string().optional(),
startAt: z.coerce.number().int().safe().optional(),
endAt: z.coerce.number().int().safe().optional(),
url: z.string().optional(),
slug: z.string().optional(),
referer: z.string().optional(),
country: z.string().optional(),
region: z.string().optional(),
city: z.string().optional(),
timezone: z.string().optional(),
language: z.string().optional(),
os: z.string().optional(),
browser: z.string().optional(),
browserType: z.string().optional(),
device: z.string().optional(),
deviceType: z.string().optional(),
limit: z.coerce.number().int().safe().default(500),
})
export const FilterSchema = QuerySchema.omit({ id: true, startAt: true, endAt: true, limit: true }).extend({
index1: z.string().optional(),
})