@shgysk8zer0/http
v1.0.5
Published
A JavaScript library that provides various utilities for working with HTTP
Maintainers
Readme
@shgysk8zer0/http
A JavaScript library that provides various utilities for working with HTTP
Key Features
- Exported constants for common HTTP status codes, such as
okfor 200. - An extended
HTTPErrorclass that inherits from Error. - Useful polyfills, including an extended
Fileobject (derived fromBlob) andURL.canParse()for URL validation. - A set of constants for commonly used Content-Types (from
@shgysk8zer0/consts). - A versatile
openLink()function compatible with various JavaScript environments. - A
Cookieclass for working with HTTP cookies, enabling easy cookie creation and management.
[!WARNING] Parsing of form data uses regex which has been reported as vulnerable to ReDoS attacks.
parseMultipartFormData()is deprecated and will be removed in an upcoming release. Instead, in node > 18 you can usenew Request(body, { headers }).formData().
Installation
NPM Installation
npm i @shgysk8zer0/httpNPM Imports
import { HTTPError } from 'shgysk8zer0/http@shgysk8zer0/http/error.js';
import { NOT_IMPLEMENTED, INTERNAL_SERVER_ERROR } from 'shgysk8zer0/http@shgysk8zer0/http/status.js';
import { JSON } from 'shgysk8zer0/http@shgysk8zer0/http/types.js';
import { Cookie } from 'shgysk8zer0/http@shgysk8zer0/http/cookie.js';Alternative imports
This package is available on unpkg.com as a collection of modules, making it easily accessible for browser-based projects. It is designed to be versatile and is not limited to a specific Node.js environment, ensuring compatibility across various platforms.
import { HTTPError } from 'https://unpkg.com/@shgysk8zer0/http/error.js';
import { NOT_IMPLEMENTED, INTERNAL_SERVER_ERROR } from 'https://unpkg.com/@shgysk8zer0/http/status.js';
import { JSON } from 'https://unpkg.com/@shgysk8zer0/http/types.js';
import { Cookie } from 'https://unpkg.com/@shgysk8zer0/http/cookie.js';Example Code
export async function handler() {
try {
const error = new HTTPError('Not implemented.', {
status: NOT_IMPLEMENTED,
cause: new Error('I have not done this yet...'),
});
throw err;
} catch (err) {
if (err instanceof HTTPError) { // Error has an HTTP status & message for use by client
return Response.json(error, {
status: error.status,
headers: new Headers({
'Content-Type': JSON,
'Set-Cookie': new Cookie('uid', crypto.randomUUID(), {
domain: 'example.com',
path: '/foo',
maxAge: 86_400_000,
sameSite: 'Strict',
httpOnly: true,
partitioned: true,
})
}),
});
} else { // It is not an HTTPError and may contain sensitive into
return Response.json({
error: {
messsage: 'Something broke :(',
status: INTERNAL_SERVER_ERROR,
}
}, { status: INTERNAL_SERVER_ERROR });
}
}
}