Enhanced HTTP Response class with convenient static methods for common scenarios. A lightweight wrapper around the native Response class for Node.js and browser environments.
- π οΈ Native Wrapper - Extends standard
Responsewith zero overhead - π― Type Safe - Full TypeScript support with native types
- π§ Convenience Methods - Static helpers for common HTTP scenarios
- π‘ Fetch API Compatible - Works seamlessly with standard Fetch API
- π Lightweight - No dependencies, minimal footprint
- π Timestamped Responses - Automatic ISO timestamps in structured responses
npm install @dephub/response
# or
pnpm add @dephub/response
# or
yarn add @dephub/responseimport { HttpResponse } from '@dephub/response';
// Success responses
HttpResponse.json({ data: user });
HttpResponse.success(user, 'User found');
HttpResponse.created(newUser, 'User created successfully');
// Error responses
HttpResponse.notFound('User not found');
HttpResponse.unauthorized('Invalid credentials');
HttpResponse.serverError('DATABASE_ERROR', 'Unable to connect');
// Special responses
HttpResponse.noContent();
HttpResponse.redirect('/login');import { HttpResponse } from '@dephub/response';
export function GET(request: Request) {
try {
const user = await getUser(request);
if (!user) {
return HttpResponse.notFound('User not found');
}
return HttpResponse.success(user);
} catch (error) {
return HttpResponse.serverError('SERVER_ERROR', 'Something went wrong');
}
}import { HttpResponse } from '@dephub/response';
// GET /users/123
function getUser(id: string) {
const user = db.users.find(id);
if (!user) {
return HttpResponse.notFound('User not found');
}
return HttpResponse.success(user);
}
// POST /users
function createUser(userData: any) {
const newUser = db.users.create(userData);
return HttpResponse.created(newUser, 'User created successfully');
}
// DELETE /users/123
function deleteUser(id: string) {
const user = db.users.find(id);
if (!user) {
return HttpResponse.notFound('User not found');
}
db.users.delete(id);
return HttpResponse.noContent();
}import { HttpResponse } from '@dephub/response';
function updateUser(id: string, updates: any) {
const user = db.users.find(id);
if (!user) {
return HttpResponse.notFound('User not found');
}
if (!hasPermission(user)) {
return HttpResponse.forbidden('Insufficient permissions');
}
try {
const updatedUser = db.users.update(id, updates);
return HttpResponse.success(updatedUser, 'User updated');
} catch (error) {
return HttpResponse.serverError('UPDATE_FAILED', 'Failed to update user');
}
}Create a JSON response with proper Content-Type header.
Parameters:
body(any) - Data to send as JSONinit(ResponseInit) - Standard response options
Returns: HttpResponse
Create a successful 200 OK response with standardized format.
Parameters:
body(any) - Response data payloadmessage(string) - Optional success messageinit(ResponseInit) - Additional response options
Returns: HttpResponse
Create a 201 Created response for new resources.
Parameters:
body(any) - The created resource datamessage(string) - Success message (default: 'Resource created')init(ResponseInit) - Additional response options
Returns: HttpResponse
Create a 204 No Content response.
Parameters:
init(ResponseInit) - Additional response options
Returns: HttpResponse
Create a redirect response.
Parameters:
url(string | URL) - URL to redirect tostatus(number) - HTTP status code (default: 302)
Returns: HttpResponse
All error methods return a HttpResponse with standardized error format and appropriate status code.
Generic error response (400 Bad Request by default).
401 Unauthorized response.
403 Forbidden response.
404 Not Found response.
500 Internal Server Error response.
{
"body": { ... },
"message": "Operation successful",
"success": true,
"timestamp": "2024-01-15T10:30:00.000Z"
}{
"error": "NOT_FOUND",
"message": "Resource not found",
"success": false,
"timestamp": "2024-01-15T10:30:00.000Z"
}MIT License β see LICENSE for details.
Author: Estarlin R (estarlincito.com)