UNPKG

@cldn/web-ts

Version:
79 lines 6.04 kB
/** * A cookie that the server wants to ask the client to set. */ class Cookie { /** * ```abnf * * token = 1*<any CHAR except CTLs or separators> * separators = "(" | ")" | "<" | ">" | "@" * | "," | ";" | ":" | "\" | <"> * | "/" | "[" | "]" | "?" | "=" * | "{" | "}" | SP | HT * ``` * @see {@link https://www.rfc-editor.org/rfc/rfc2616.html#section-2.2|RFC 2616, Section 2.2} */ static TOKEN = /^[^\x00-\x1F\x7F\x20\x09\x28\x29\x3C\x3E\x40\x2C\x3B\x3A\x5C\x22\x2F\x5B\x5D\x3F\x3D\x7B\x7D]+$/; /** * ```abnf * cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E * ; US-ASCII characters excluding CTLs, * ; whitespace DQUOTE, comma, semicolon, * ; and backslash * ``` * @see {@link https://httpwg.org/specs/rfc6265.html#sane-set-cookie-syntax|RFC 6265, Section 4.1.1} */ static COOKIE_OCTET = /^[^\x00-\x1F\x7F\x20\x09\x22\x2C\x3B\x5C]+$/; domain; expires; httpOnly; maxAge; partitioned; path; sameSite; secure; /** * The name of this cookie. */ name; /** * The value of this cookie. */ value; /** * @param name The name of this cookie. * @param value The value of this cookie. * @param options Cookie options. */ constructor(name, value, options) { if (!Cookie.TOKEN.test(name)) throw new SyntaxError(`Cookie name "${name}" is not a valid "token" as per RFC 2616, Section 2.2.`); if (!Cookie.COOKIE_OCTET.test(value)) throw new SyntaxError(`In cookie "${name}", value "${value}" is not a valid "*cookie-octet" as per RFC 6265, Section 4.1.1.`); this.name = name; this.value = value; this.domain = options?.domain; this.expires = options?.expires; this.httpOnly = options?.httpOnly ?? false; this.maxAge = options?.maxAge; this.partitioned = options?.partitioned ?? false; this.path = options?.path; this.sameSite = options?.sameSite; this.secure = options?.secure ?? false; } serialise() { return [ [this.name, this.value].join("="), this.domain !== undefined ? ["Domain", this.domain].join("=") : null, this.expires !== undefined ? ["Expires", this.expires.toUTCString()].join("=") : null, this.httpOnly ? "HttpOnly" : null, this.maxAge !== undefined ? ["Max-Age", this.maxAge].join("=") : null, this.partitioned ? "Partitioned" : null, this.path !== undefined ? ["Path", this.path].join("=") : null, this.sameSite !== undefined ? ["SameSite", this.sameSite].join("=") : null, this.secure ? "Secure" : null ].filter(p => p !== null).join("; "); } } export { Cookie }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29va2llLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Nvb2tpZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sTUFBTTtJQUNSOzs7Ozs7Ozs7O09BVUc7SUFDSyxNQUFNLENBQVUsS0FBSyxHQUFHLGlHQUFpRyxDQUFDO0lBRWxJOzs7Ozs7OztPQVFHO0lBQ0ssTUFBTSxDQUFVLFlBQVksR0FBRyw2Q0FBNkMsQ0FBQztJQUVyRSxNQUFNLENBQVU7SUFDaEIsT0FBTyxDQUFRO0lBQ2YsUUFBUSxDQUFVO0lBQ2xCLE1BQU0sQ0FBVTtJQUNoQixXQUFXLENBQVU7SUFDckIsSUFBSSxDQUFVO0lBQ2QsUUFBUSxDQUFtQjtJQUMzQixNQUFNLENBQVU7SUFFaEM7O09BRUc7SUFDYSxJQUFJLENBQVM7SUFFN0I7O09BRUc7SUFDYSxLQUFLLENBQVM7SUFFOUI7Ozs7T0FJRztJQUNILFlBQW1CLElBQVksRUFBRSxLQUFhLEVBQUUsT0FBdUM7UUFDbkYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN4QixNQUFNLElBQUksV0FBVyxDQUFDLGdCQUFnQixJQUFJLHdEQUF3RCxDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNoQyxNQUFNLElBQUksV0FBVyxDQUFDLGNBQWMsSUFBSSxhQUFhLEtBQUssa0VBQWtFLENBQUMsQ0FBQztRQUNsSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLFdBQVcsSUFBSSxLQUFLLENBQUM7UUFDakQsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDO0lBQzNDLENBQUM7SUFFTSxTQUFTO1FBQ1osT0FBTztZQUNILENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNqQyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNwRSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNyRixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDakMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDckUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ3ZDLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzlELElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUNoQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQzs7QUF1RkwsT0FBTyxFQUFDLE1BQU0sRUFBQyxDQUFDIn0=