
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
@engblock/cookies-extra
Advanced tools
A TypeScript library for parsing and managing HTTP cookies, converted from C++ implementations used in Bun runtime.
npm install cookies-extra
import { parseCookieHeader, parseSetCookieHeader } from 'cookies-extra';
// Parse a Cookie header into a dictionary
const cookies = parseCookieHeader('sessionId=abc123; theme=dark; lang=en');
console.log(cookies);
// { sessionId: 'abc123', theme: 'dark', lang: 'en' }
// Parse a Set-Cookie header into a Cookie object
const cookie = parseSetCookieHeader('sessionId=abc123; Domain=example.com; Secure; HttpOnly');
console.log(cookie.name); // 'sessionId'
console.log(cookie.value); // 'abc123'
console.log(cookie.domain); // 'example.com'
console.log(cookie.secure); // true
import { Cookie, CookieSameSite } from 'cookies-extra';
// Create a new cookie
const cookie = Cookie.create({
name: 'user',
value: 'john_doe',
domain: 'example.com',
path: '/app',
secure: true,
httpOnly: true,
sameSite: CookieSameSite.Strict,
maxAge: 3600
});
// Serialize to Set-Cookie header format
console.log(cookie.toString());
// "user=john_doe; Domain=example.com; Path=/app; Max-Age=3600; Secure; HttpOnly; SameSite=Strict"
// Parse from Set-Cookie header
const parsed = Cookie.parse('user=john_doe; Domain=example.com; Secure');
import { CookieMap } from 'cookies-extra';
// Create from various input types
const cookieMap1 = new CookieMap('session=abc; theme=dark');
const cookieMap2 = new CookieMap({ session: 'abc', theme: 'dark' });
const cookieMap3 = new CookieMap([['session', 'abc'], ['theme', 'dark']]);
// Get and set cookies
cookieMap1.set('newCookie', 'value');
console.log(cookieMap1.get('session')); // 'abc'
console.log(cookieMap1.has('theme')); // true
// Convert to plain object
const plain = cookieMap1.toJSON();
console.log(plain); // { session: 'abc', theme: 'dark', newCookie: 'value' }
// Iterate over cookies
for (const [name, value] of cookieMap1) {
console.log(\`\${name}=\${value}\`);
}
import { createCookieMapFromHeaders, writeSetCookieHeaders } from 'cookies-extra';
// Parse cookies from Headers object
const headers = new Headers({ 'cookie': 'session=abc; theme=dark' });
const cookieMap = createCookieMapFromHeaders(headers);
// Write Set-Cookie headers
const responseHeaders = new Headers();
cookieMap.set(Cookie.create({ name: 'newSession', value: 'xyz789' }));
writeSetCookieHeaders(cookieMap, responseHeaders);
Cookie.create(options) - Create a new cookieCookie.parse(cookieString) - Parse a Set-Cookie header stringCookie.serialize(cookies) - Serialize an array of cookies to Cookie header formatcookie.toString() - Convert to Set-Cookie header formatcookie.toJSON() - Convert to plain objectcookie.isExpired() - Check if cookie is expiredCookie.isValidCookieName(name) - Validate cookie nameCookie.isValidCookiePath(path) - Validate cookie pathCookie.isValidCookieDomain(domain) - Validate cookie domainnew CookieMap(input?) - Create from string, object, or arrayget(name) - Get cookie valueset(name, value) or set(cookie) - Set cookiehas(name) - Check if cookie existsdelete(name) - Delete cookieclone() - Create a copysize() - Get number of cookiestoJSON() - Convert to plain objectentries(), keys(), values() - IteratorsparseCookieHeader(header) - Parse Cookie header to objectparseSetCookieHeader(header) - Parse Set-Cookie header to CookieparseSetCookieHeaders(headers) - Parse multiple Set-Cookie headerscreateCookieMapFromHeaders(headers) - Create CookieMap from HeaderswriteSetCookieHeaders(cookieMap, headers) - Write to Headers objectMIT
FAQs
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.