🔧 Utility that extends the standard cookie module with additional conversion capabilities.
npm install cookie-moreimport cookie from 'cookie-more'The module works with 4 cookie formats:
-
CookieHeader- Cookie header string (request)
"session=abc123; id=42" -
SetCookieHeader- Set-Cookie header string (response, serialized)
"session=abc123; Path=/; HttpOnly; Secure" -
CookieRecord- Parsed cookies object (deserialized)
{ session: "abc123", id: "42" } -
CookieObject- Cookie object with metadata (deserialized, Puppeteer-compatible)
{ name: "session", value: "abc123", path: "/", httpOnly: true }
Values follow a single invariant, matching the standard cookie module:
CookieRecordholds decoded values (convenient for application use) — e.g.id||jwtCookieHeader,CookieObjectandSetCookieHeaderhold encoded values (the real wire form sent to browser/server, Puppeteer/CDP compatible) — e.g.id%7C%7Cjwt
Conversions apply this automatically: to CookieRecord they decodeURIComponent, from CookieRecord they encodeURIComponent, and direct Header↔Object↔SetCookie conversions leave the encoding untouched. Round-trips are therefore lossless.
cookieHeaderToCookieRecord(string)- Parse Cookie headersetCookieHeadersToCookieRecord(array)- Parse Set-Cookie headers arraycookieObjectsToCookieRecord(array)- Convert cookie objects arrayanyToCookieRecord(data)- Universal converter
cookieRecordToCookieHeader(object)- Serialize to Cookie headeranyToCookieHeader(data)- Universal converter
cookieRecordToCookieObjects(object, attributes?)- Add metadatasetCookieHeadersToCookieObjects(array, attributes?)- Parse with metadata (Puppeteer-compatible)anyToCookieObjects(data, attributes?)- Universal converter
cookieObjectsToSetCookieHeaders(array, attributes?)- Serialize with metadataanyToSetCookieHeaders(data, attributes?)- Universal converter
// Parse from request
cookie.anyToCookieRecord('session=abc; id=42')
// { session: 'abc', id: '42' }
// Set response cookies
cookie.anyToSetCookieHeaders({ session: 'abc', user: 'john' }, { path: '/', httpOnly: true, secure: true })
// Puppeteer to headers
cookie.anyToSetCookieHeaders(await page.cookies())
// Override attributes (priority)
cookie.anyToSetCookieHeaders([{ name: 'session', value: 'abc', path: '/' }], { path: '/api', secure: true })
// ['session=abc; Path=/api; Secure']- Convert cookies between all formats (CookieHeader ↔ SetCookieHeader[] ↔ CookieRecord ↔ CookieObject[])
- Bidirectional parsing and serialization
- Attribute override support (priority for passed attributes)
- Simplified parsing and serialization
- Puppeteer-compatible cookie object format (
httpOnly,sameSite, etc.) - TypeScript support
🚀 Just import and use it like the regular cookie module with extended API!