86 lines
1.6 KiB
TypeScript
86 lines
1.6 KiB
TypeScript
import { getParamsFromFilePath } from '../utils/get-params-from-file-path'
|
|
import { transformToUrl } from '../utils/transform-to-url'
|
|
|
|
type Stats = {
|
|
isFile(): boolean
|
|
isDirectory(): boolean
|
|
isBlockDevice(): boolean
|
|
isCharacterDevice(): boolean
|
|
isSymbolicLink(): boolean
|
|
isFIFO(): boolean
|
|
isSocket(): boolean
|
|
dev: number
|
|
ino: number
|
|
mode: number
|
|
nlink: number
|
|
uid: number
|
|
gid: number
|
|
rdev: number
|
|
size: number
|
|
blksize: number
|
|
blocks: number
|
|
atimeMs: number
|
|
mtimeMs: number
|
|
ctimeMs: number
|
|
birthtimeMs: number
|
|
atime: Date
|
|
mtime: Date
|
|
ctime: Date
|
|
birthtime: Date
|
|
}
|
|
|
|
const generateTemplate = ({ params }: { params?: string }) => {
|
|
let config = ''
|
|
if (params) {
|
|
config += `{ params: ${params} }`
|
|
}
|
|
|
|
if (config.length > 0) {
|
|
config = ',' + config
|
|
}
|
|
|
|
return `import Elysia from 'elysia'
|
|
import { betterAuth } from '$lib/plugin/better-auth'
|
|
|
|
export const route = new Elysia()
|
|
.use(betterAuth)
|
|
.get('/', async () => {
|
|
return 'hello'
|
|
}${config})
|
|
`
|
|
}
|
|
|
|
export const onFileCreate = async (path: string, stats?: Stats) => {
|
|
const file = Bun.file(path)
|
|
|
|
const params = getParamsFromFilePath(path)
|
|
|
|
const paramsTemplate = getParamsTemplate(params)
|
|
|
|
let template: string
|
|
|
|
template = generateTemplate({ params: paramsTemplate })
|
|
|
|
if ((await file.text()) === '') {
|
|
await file.write(template)
|
|
|
|
console.log(await Bun.$`bunx prettier --write ${path}`)
|
|
}
|
|
}
|
|
|
|
const getParamsTemplate = (params: string[]) => {
|
|
let result = ''
|
|
|
|
if (params.length > 0) {
|
|
result += `t.Object({`
|
|
|
|
params.map((param) => {
|
|
result += `"${param}": t.String(),`
|
|
})
|
|
|
|
result += `})`
|
|
}
|
|
|
|
return result
|
|
}
|