{"id":16214,"library":"set-cookie-parser-es","title":"ESM Set-Cookie Header Parser","description":"set-cookie-parser-es is an actively maintained, ESM-first JavaScript library, currently at version 1.0.5, designed for parsing `Set-Cookie` HTTP headers. It serves as an ECMAScript Module (ESM) port of the popular `set-cookie-parser` package, offering bundled TypeScript types for an enhanced developer experience. Unlike its predecessor, this library distinguishes itself by being entirely framework and runtime agnostic; it specifically does *not* accept Node.js response objects, focusing purely on string-based header parsing. Its `splitCookiesString` utility also strictly operates on a single `set-cookie` header string, deviating from the original's broader input acceptance. While primarily an ESM package, it also provides CommonJS compatibility for wider ecosystem integration. The project appears to follow a release cadence driven by feature parity with the original library, bug fixes, and minor enhancements.","status":"active","version":"1.0.5","language":"javascript","source_language":"en","source_url":"https://github.com/enkot/set-cookie-parser-es","tags":["javascript","cookie","set-cookie","parser","es","typescript"],"install":[{"cmd":"npm install set-cookie-parser-es","lang":"bash","label":"npm"},{"cmd":"yarn add set-cookie-parser-es","lang":"bash","label":"yarn"},{"cmd":"pnpm add set-cookie-parser-es","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"The `parse` function is a named export, used for parsing an array of `Set-Cookie` header strings. Ensure named imports are used for ESM or destructuring for CommonJS.","wrong":"import parse from 'set-cookie-parser-es'","symbol":"parse","correct":"import { parse } from 'set-cookie-parser-es'"},{"note":"While the library supports CommonJS `require`, directly accessing `require('pkg').symbol` without destructuring is less idiomatic. `parseString` is for parsing a single `Set-Cookie` header string.","wrong":"const parseString = require('set-cookie-parser-es').parseString","symbol":"parseString","correct":"import { parseString } from 'set-cookie-parser-es'"},{"note":"The `splitCookiesString` function is a named export. While aliasing is not inherently wrong, it can lead to confusion if not consistently applied. This function splits a single string containing multiple concatenated `Set-Cookie` headers.","wrong":"import { splitCookiesString as split } from 'set-cookie-parser-es'","symbol":"splitCookiesString","correct":"import { splitCookiesString } from 'set-cookie-parser-es'"}],"quickstart":{"code":"import { parse, parseString, splitCookiesString } from 'set-cookie-parser-es';\n\n// Example 1: Parse a single Set-Cookie header string\nconst singleSetCookieHeader = 'session_id=abc; Path=/; Expires=Wed, 21 Oct 2026 07:28:00 GMT; HttpOnly; Secure';\nconst parsedCookie = parseString(singleSetCookieHeader);\nconsole.log('Parsed single cookie:', parsedCookie);\n\n// Example 2: Parse an array of Set-Cookie header strings\nconst multipleSetCookieHeaders = [\n  'user_token=xyz; Max-Age=3600; HttpOnly',\n  'preferences=theme=dark; Path=/',\n];\nconst parsedCookiesArray = parse(multipleSetCookieHeaders);\nconsole.log('Parsed array of cookies:', parsedCookiesArray);\n\n// Example 3: Split a single string containing multiple Set-Cookie values\n// This is useful if a server concatenates multiple Set-Cookie headers into one string.\nconst concatenatedSetCookies = 'my_app_session=value1; Path=/; Secure, my_app_prefs=value2; Path=/';\nconst splitCookies = splitCookiesString(concatenatedSetCookies);\nconsole.log('Split cookies string:', splitCookies);\n\n// You can then parse the split strings:\nconst parsedSplitCookies = parse(splitCookies);\nconsole.log('Parsed split cookies:', parsedSplitCookies);","lang":"typescript","description":"Demonstrates how to parse single `Set-Cookie` headers, arrays of headers, and split concatenated `Set-Cookie` strings using the library's core functions."},"warnings":[{"fix":"Manually extract `Set-Cookie` headers from the response object (e.g., `response.headers['set-cookie']` or `res.getHeader('set-cookie')`) before passing to `parse` or `parseString`.","message":"The library explicitly does not accept Node.js response objects, unlike the original `set-cookie-parser` package. Users migrating from the original package in Node.js environments will need to manually extract `Set-Cookie` headers into a string or array of strings.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Ensure only valid `Set-Cookie` header strings are passed to `splitCookiesString`. For parsing `Cookie` request headers, use a dedicated parser for that specific format.","message":"The `splitCookiesString` function strictly expects a `Set-Cookie` header string as input, which can contain multiple comma-separated `Set-Cookie` values. It is not designed to parse generic comma-separated cookie strings (e.g., from a `Cookie` request header), and also does not accept Node.js response objects.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-21T00:00:00.000Z","next_check":"2026-07-20T00:00:00.000Z","problems":[{"fix":"Use named imports for ESM (`import { parse } from 'set-cookie-parser-es'`) or destructuring for CommonJS (`const { parse } = require('set-cookie-parser-es')`).","cause":"Attempting to import `parse` as a default export in an ESM context, or incorrect CommonJS `require` syntax when the module primarily provides named exports.","error":"TypeError: parse is not a function"},{"fix":"Extract the `set-cookie` header values from the Node.js response object first. For example, `parse(response.headers['set-cookie'])` for an array of headers or `parseString(response.headers['set-cookie'][0])` for a single header.","cause":"Passing a Node.js `http.IncomingMessage` or `http.ServerResponse` object directly to the `parse` or `parseString` functions, which expect string(s).","error":"Argument of type 'IncomingMessage' is not assignable to parameter of type 'string | string[]'."}],"ecosystem":"npm"}