Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yfrans/elysia-http-error
Easy http error handling in Elysia.
https://github.com/yfrans/elysia-http-error
Last synced: 26 days ago
JSON representation
Easy http error handling in Elysia.
- Host: GitHub
- URL: https://github.com/yfrans/elysia-http-error
- Owner: yfrans
- Created: 2023-09-13T14:08:14.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-01-24T12:15:47.000Z (11 months ago)
- Last Synced: 2024-04-26T18:04:18.691Z (8 months ago)
- Language: TypeScript
- Size: 16.6 KB
- Stars: 4
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-elysia - HTTP Error - Easiest way to return HTTP errors from request handlers. (Plugins)
README
# Elysia HTTP Error
Throw HTTP errors from Elysia handlers.
# Usage
Install the package:
`bun add elysia-http-error`
Then use `httpError()` in Elysia pipeline as follow:
```ts
const app = new Elysia().use(httpError());
```By default, this module will return a structured message with the error details.
If you need the message to be a simple string, use:
```ts
returnStringOnly: true;
```when initializing `httpError()`.
Another option is to write a custom error message formatter using:
```ts
customFormatter: (err: HttpError) => any;
```which allows a full control over the returned error object.
For example:
```ts
customFormatter: (err) => `Oh no... we got an error ${err.statusCode}!`;
```In order to use the HttpError class and throw an error, the `HttpError` decorator must be added to the pipeline:
```ts
const app = new Elysia().use(httpErrorDecorator).get("/", ({ HttpError }) => {
throw HttpError.BadRequest("Something went wrong...");
});
```The HttpError constructor receive the following parameters:
```ts
error: string (error message, optional)
errorData: any (more error details, optional)
```For example, when using OTP validation and the user is asking for a new OTP while the OTP is still valid, the error can contain the message and the time left for the OTP so the client can display a proper message and sync the time displayed to the user:
```ts
throw HttpError.Conflict("OTP is still valid", {
timeLeft: otpExpireTime - Date.now(),
});
```# Some important notes
The plugin initializer must be called when initializing Elysia and before any other handler that use this plugin.
When using dependecy injection and sub-modules, the decorator must be used in the sub-module definition in order to get full type support (see https://elysiajs.com/patterns/dependency-injection.html#dependency-injection)