39 lines
654 B
TypeScript
39 lines
654 B
TypeScript
import { Elysia, t } from 'elysia'
|
|
|
|
class CustomError extends Error {
|
|
constructor(public name: string) {
|
|
super(name)
|
|
}
|
|
}
|
|
|
|
new Elysia()
|
|
.error({
|
|
CUSTOM_ERROR: CustomError
|
|
})
|
|
// global handler
|
|
.onError(({ code, error, status }) => {
|
|
switch (code) {
|
|
case "CUSTOM_ERROR":
|
|
return status(401, { message: error.message })
|
|
|
|
case "NOT_FOUND":
|
|
return "Not found :("
|
|
}
|
|
})
|
|
.post('/', ({ body }) => body, {
|
|
body: t.Object({
|
|
username: t.String(),
|
|
password: t.String(),
|
|
nested: t.Optional(
|
|
t.Object({
|
|
hi: t.String()
|
|
})
|
|
)
|
|
}),
|
|
// local handler
|
|
error({ error }) {
|
|
console.log(error)
|
|
}
|
|
})
|
|
.listen(3000)
|