HTTP Cache-Control Header Parser and Formatter (ESM)
cache-control-esm is a JavaScript library specifically designed for parsing and formatting HTTP Cache-Control headers in strict adherence to RFC 7234. Currently at version 1.0.0, this package is a specialized fork of the `@tusbar/cache-control` library. Its primary differentiator is its explicit use of ECMAScript modules (`export default` and named exports), making it well-suited for modern bundlers and environments, especially within projects like `axios-cache-adapter`. Unlike other solutions that may bundle Express/Connect-like middleware or extensive interpretation logic, `cache-control-esm` maintains a narrow focus solely on the low-level parsing of header strings into a `CacheControl` object and formatting such objects back into valid HTTP header values. This focused approach ensures a lightweight and reliable tool for precise Cache-Control header manipulation without unnecessary overhead. Its release cadence is typically reactive to the needs of its consuming projects.
Common errors
-
TypeError: require is not a function
cause Attempting to import the ESM-only package using CommonJS `require()` syntax in a Node.js environment that expects ESM or where `package.json` does not specify `"type": "commonjs"`.fixChange `const { parse } = require('@rascarlito/cache-control')` to `import { parse } from '@rascarlito/cache-control'` and ensure your Node.js environment is configured for ESM. -
SyntaxError: Named export 'parse' not found. The requested module '@rascarlito/cache-control' does not provide an export named 'parse'
cause Attempting to use a default import `import parse from '@rascarlito/cache-control'` when `parse` is a named export.fixCorrect the import statement to use named imports: `import { parse } from '@rascarlito/cache-control'`.
Warnings
- gotcha This package is a direct fork of the original `@tusbar/cache-control`. Ensure you are installing `@rascarlito/cache-control` if you intend to use the ESM-only version, as the original package might have different module export conventions.
- breaking This package is ESM-only and utilizes `export` statements. It is incompatible with CommonJS `require()` syntax directly in Node.js environments unless transpiled or run with `--experimental-modules` (prior to Node.js 12.0.0, or in contexts where ESM is not the default).
- gotcha The library focuses exclusively on parsing and formatting HTTP `Cache-Control` headers. It does not provide any higher-level logic for interpreting or acting upon the parsed directives (e.g., determining cache hit/miss, freshness, etc.).
Install
-
npm install cache-control-esm -
yarn add cache-control-esm -
pnpm add cache-control-esm
Imports
- parse
const { parse } = require('@rascarlito/cache-control')import { parse } from '@rascarlito/cache-control' - format
import format from '@rascarlito/cache-control'
import { format } from '@rascarlito/cache-control' - CacheControl
const { CacheControl } = require('@rascarlito/cache-control')import { CacheControl } from '@rascarlito/cache-control'
Quickstart
import { format, parse } from '@rascarlito/cache-control';
// Simulate a response object
const res = {
_headers: {},
setHeader(name, value) {
this._headers[name] = value;
},
getHeader(name) {
return this._headers[name];
}
};
// Set a Cache-Control header using the format function
res.setHeader('Cache-Control', format({
public: true,
immutable: true,
maxAge: 31536000
}));
console.log('Set Cache-Control header:', res.getHeader('Cache-Control'));
// Parse a Cache-Control header from a string
const parsedHeader = parse('max-age=604800, public, no-transform');
console.log('Parsed Cache-Control object:', parsedHeader);