set-cookie-parser: add CookieMap support (#36160)

Allow the parser result to return a CookieMap type.
This commit is contained in:
Herman J. Radtke III 2019-06-16 19:52:53 -07:00 committed by Ron Buckton
parent b639fa5445
commit 997bd7259f
2 changed files with 12 additions and 4 deletions

View File

@ -9,10 +9,14 @@
declare module "set-cookie-parser" {
import http = require("http");
function SetCookieParser(input: string | ReadonlyArray<string> | http.IncomingMessage, options?: SetCookieParser.Options): SetCookieParser.Cookie[];
function SetCookieParser(input: string | ReadonlyArray<string> | http.IncomingMessage, options: SetCookieParser.Options & { map: true }): SetCookieParser.CookieMap;
function SetCookieParser(input: string | ReadonlyArray<string> | http.IncomingMessage, options?: SetCookieParser.Options & { map?: false }): SetCookieParser.Cookie[];
function SetCookieParser(input: string | ReadonlyArray<string> | http.IncomingMessage, options?: SetCookieParser.Options): SetCookieParser.Cookie[] | SetCookieParser.CookieMap;
namespace SetCookieParser {
function parse(input: string | ReadonlyArray<string> | http.IncomingMessage, options?: Options): Cookie[];
function parse(input: string | ReadonlyArray<string> | http.IncomingMessage, options: Options & { map: true }): CookieMap;
function parse(input: string | ReadonlyArray<string> | http.IncomingMessage, options?: Options & { map?: false }): Cookie[];
function parse(input: string | ReadonlyArray<string> | http.IncomingMessage, options?: Options): Cookie[] | CookieMap;
function splitCookiesString(input: string | ReadonlyArray<string> | void): string[];
@ -27,6 +31,10 @@ declare module "set-cookie-parser" {
httpOnly?: boolean;
}
interface CookieMap {
[name: string]: Cookie;
}
type Options = {
decodeValues?: boolean;
map?: boolean;

View File

@ -97,7 +97,7 @@ var decodedValueCookies = setCookie.parse('user=%D0%98%D0%BB%D1%8C%D1%8F%20%D0%9
assert.equal(decodedValueCookies[0].value, 'Илья Зайцев');
// Use map=true option
var expectedCookiesMap = {
var expectedCookiesMap: setCookie.CookieMap = {
foo: {
name: 'foo',
value: 'bar',
@ -106,4 +106,4 @@ var expectedCookiesMap = {
}
};
var cookiesMap = setCookie.parse('foo=bar; Max-Age=1000; Domain=.example.com;', { map: true });
assert.deepStrictEqual(cookiesMap, expectedCookiesMap);
assert.deepStrictEqual(cookiesMap, expectedCookiesMap);