diff --git a/types/set-cookie-parser/index.d.ts b/types/set-cookie-parser/index.d.ts index 3da321ddb0..23d9b41b7b 100644 --- a/types/set-cookie-parser/index.d.ts +++ b/types/set-cookie-parser/index.d.ts @@ -9,10 +9,14 @@ declare module "set-cookie-parser" { import http = require("http"); - function SetCookieParser(input: string | ReadonlyArray | http.IncomingMessage, options?: SetCookieParser.Options): SetCookieParser.Cookie[]; + function SetCookieParser(input: string | ReadonlyArray | http.IncomingMessage, options: SetCookieParser.Options & { map: true }): SetCookieParser.CookieMap; + function SetCookieParser(input: string | ReadonlyArray | http.IncomingMessage, options?: SetCookieParser.Options & { map?: false }): SetCookieParser.Cookie[]; + function SetCookieParser(input: string | ReadonlyArray | http.IncomingMessage, options?: SetCookieParser.Options): SetCookieParser.Cookie[] | SetCookieParser.CookieMap; namespace SetCookieParser { - function parse(input: string | ReadonlyArray | http.IncomingMessage, options?: Options): Cookie[]; + function parse(input: string | ReadonlyArray | http.IncomingMessage, options: Options & { map: true }): CookieMap; + function parse(input: string | ReadonlyArray | http.IncomingMessage, options?: Options & { map?: false }): Cookie[]; + function parse(input: string | ReadonlyArray | http.IncomingMessage, options?: Options): Cookie[] | CookieMap; function splitCookiesString(input: string | ReadonlyArray | void): string[]; @@ -27,6 +31,10 @@ declare module "set-cookie-parser" { httpOnly?: boolean; } + interface CookieMap { + [name: string]: Cookie; + } + type Options = { decodeValues?: boolean; map?: boolean; diff --git a/types/set-cookie-parser/set-cookie-parser-tests.ts b/types/set-cookie-parser/set-cookie-parser-tests.ts index 578e257f0c..fdc0602b89 100644 --- a/types/set-cookie-parser/set-cookie-parser-tests.ts +++ b/types/set-cookie-parser/set-cookie-parser-tests.ts @@ -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); \ No newline at end of file +assert.deepStrictEqual(cookiesMap, expectedCookiesMap);