http-directives
Version:
A TypeScript-friendly package that provides strongly-typed HTTP constants
111 lines (78 loc) • 3.86 kB
Markdown
# http-directives
A TypeScript-friendly package that provides strongly-typed constants for common HTTP headers, directives, status codes,
MIME types, caching policies, CSP rules, and more. <br/>
Say goodbye to string typos and make your HTTP code safer, cleaner, and more maintainable.
### Installation
```sh
npm i http-directives
```
### What’s included
The following categories of constants are included in this package:
| Category | Constants examples |
|-----------------------|--------------------------------------------------------------------------------------------------|
| **HTTP Status Codes** | `OK`, `NOT_FOUND`, `INTERNAL_SERVER_ERROR`, etc. |
| **HTTP Methods** | `GET`, `POST`, `PUT`, `DELETE`, etc. |
| **HTTP Headers** | `CONTENT_TYPE`, `CACHE_CONTROL`, `STRICT_TRANSPORT_SECURITY`, `CONTENT_SECURITY_POLICY`, etc. |
| **MIME Types** | `APPLICATION_JSON`, `APPLICATION_JAVASCRIPT`, `APPLICATION_ZIP`, `TEXT_PLAIN`, `TEXT_HTML`, etc. |
| **Content Encodings** | `GZIP`, `BR`, etc. |
| **Cache Control** | `MAX_AGE`, `NO_CACHE`, `PRIVATE`, etc. |
| **Charsets** | `UTF-8`, `UTF-16`, `ISO-8859-1`, etc. |
| **CSP Directives** | `SCRIPT_SRC`, `STYLE_SRC`, etc. |
| **CSP Sources** | `SELF`, `UNSAFE_INLINE`, `nonce()`, `sha256()`, etc. |
| **DNT** | `!`, `?`, `N`, `T`, etc. |
| **Protocols** | `HTTP`, `HTTPS`, `SSH`, `WSS`, `MQTT`, etc. |
### Usage example
```tsx
import {
Headers,
MimeTypes,
ContentEncodings,
Charsets,
StatusCodes,
CacheControl,
CSPDirectives,
CSPSources,
Methods,
DNT,
Protocols
} from 'http-directives';
Headers.STRICT_TRANSPORT_SECURITY // "Strict-Transport-Security"
MimeTypes.APPLICATION_JAVASCRIPT // "application/javascript"
ContentEncodings.GZIP // "gzip"
Charsets.UTF_8 // "UTF-8"
StatusCodes.OK // 200
CacheControl.MAX_AGE // "max-age"
CSPDirectives.BASE_URI // "base-uri"
CSPSources.SELF // "self"
Methods.POST // "POST"
DNT.NOT_TRACKING // "N"
Protocols.HTTPS // "https:"
```
Additionally, exported CSP utility functions:
```ts
import {CSPSources} from 'http-directives';
CSPSources.nonce('abc123') // "'nonce-abc123'"
CSPSources.sha256('hash') // "'sha256-hash'"
CSPSources.sha384('hash') // "'sha384-hash'"
CSPSources.sha512('hash') // "'sha512-hash'"
```
### Extensible
Define and reuse your own constants with full autocompletion and type safety:
```ts
import {Headers} from 'http-directives';
class CustomHeaders extends Headers {
public static readonly CUSTOM_HEADER = 'custom-header';
}
CustomHeaders.CUSTOM_HEADER // "custom-header"
```
### Benefits
* **Type-safe**: Avoid typos in strings and headers
* **Autocompletion**: Full IDE support with TypeScript
* **Up-to-date**: Includes modern headers, directives, and encodings
* **Zero dependencies**: Lightweight and fast
* **Compatible**: Supports both ESM and CJS
* **Extensible**: Easily add custom directives and headers
### Contributing
Please motivate yourself to submit a PR.
### License
MIT