@@ -2,14 +2,15 @@ import urlParse from 'url-parse'
22
33import { getPublicSuffix } from '../getPublicSuffix'
44import * as validators from '../validators'
5+ import { ParameterError } from '../validators'
56import { Store } from '../store'
67import { MemoryCookieStore } from '../memstore'
78import { pathMatch } from '../pathMatch'
89import { Cookie } from './cookie'
910import {
1011 Callback ,
11- ErrorCallback ,
1212 createPromiseCallback ,
13+ ErrorCallback ,
1314 inOperator ,
1415 safeToString ,
1516} from '../utils'
@@ -68,20 +69,18 @@ type CreateCookieJarOptions = {
6869const SAME_SITE_CONTEXT_VAL_ERR =
6970 'Invalid sameSiteContext option for getCookies(); expected one of "strict", "lax", or "none"'
7071
71- function getCookieContext ( url : string | URL ) {
72- if ( url instanceof URL && 'query' in url ) {
72+ function getCookieContext ( url : unknown ) {
73+ if ( url instanceof URL ) {
7374 return url
74- }
75-
76- if ( typeof url === 'string' ) {
75+ } else if ( typeof url === 'string' ) {
7776 try {
7877 return urlParse ( decodeURI ( url ) )
7978 } catch {
8079 return urlParse ( url )
8180 }
81+ } else {
82+ throw new ParameterError ( '`url` argument is invalid' )
8283 }
83-
84- throw new Error ( '`url` argument is invalid' )
8584}
8685
8786function checkSameSiteContext ( value : string ) {
@@ -197,29 +196,29 @@ export class CookieJar {
197196 // return `undefined` when `ignoreError` is true. But would that be excessive overloading?
198197 setCookie (
199198 cookie : string | Cookie ,
200- url : string ,
199+ url : string | URL ,
201200 callback : Callback < Cookie | undefined > ,
202201 ) : void
203202 setCookie (
204203 cookie : string | Cookie ,
205- url : string ,
204+ url : string | URL ,
206205 options : SetCookieOptions ,
207206 callback : Callback < Cookie | undefined > ,
208207 ) : void
209208 setCookie (
210209 cookie : string | Cookie ,
211- url : string ,
210+ url : string | URL ,
212211 options ?: SetCookieOptions ,
213212 ) : Promise < Cookie | undefined >
214213 setCookie (
215214 cookie : string | Cookie ,
216- url : string ,
215+ url : string | URL ,
217216 options : SetCookieOptions | Callback < Cookie | undefined > ,
218217 callback ?: Callback < Cookie | undefined > ,
219218 ) : unknown
220219 setCookie (
221220 cookie : string | Cookie ,
222- url : string ,
221+ url : string | URL ,
223222 options ?: SetCookieOptions | Callback < Cookie | undefined > ,
224223 callback ?: Callback < Cookie | undefined > ,
225224 ) : unknown {
@@ -230,18 +229,22 @@ export class CookieJar {
230229 const promiseCallback = createPromiseCallback ( callback )
231230 const cb = promiseCallback . callback
232231
233- validators . validate (
234- validators . isNonEmptyString ( url ) ,
235- callback ,
236- safeToString ( options ) ,
237- )
232+ if ( typeof url === 'string' ) {
233+ validators . validate (
234+ validators . isNonEmptyString ( url ) ,
235+ callback ,
236+ safeToString ( options ) ,
237+ )
238+ }
239+
240+ const context = getCookieContext ( url )
241+
238242 let err
239243
240244 if ( typeof url === 'function' ) {
241245 return promiseCallback . reject ( new Error ( 'No URL was specified' ) )
242246 }
243247
244- const context = getCookieContext ( url )
245248 if ( typeof options === 'function' ) {
246249 options = defaultSetCookieOptions
247250 }
@@ -498,21 +501,21 @@ export class CookieJar {
498501 // RFC6365 S5.4
499502 getCookies ( url : string , callback : Callback < Cookie [ ] > ) : void
500503 getCookies (
501- url : string ,
504+ url : string | URL ,
502505 options : GetCookiesOptions | undefined ,
503506 callback : Callback < Cookie [ ] > ,
504507 ) : void
505508 getCookies (
506- url : string ,
509+ url : string | URL ,
507510 options ?: GetCookiesOptions | undefined ,
508511 ) : Promise < Cookie [ ] >
509512 getCookies (
510- url : string ,
513+ url : string | URL ,
511514 options : GetCookiesOptions | undefined | Callback < Cookie [ ] > ,
512515 callback ?: Callback < Cookie [ ] > ,
513516 ) : unknown
514517 getCookies (
515- url : string ,
518+ url : string | URL ,
516519 options ?: GetCookiesOptions | Callback < Cookie [ ] > ,
517520 callback ?: Callback < Cookie [ ] > ,
518521 ) : unknown {
@@ -525,10 +528,12 @@ export class CookieJar {
525528 const promiseCallback = createPromiseCallback ( callback )
526529 const cb = promiseCallback . callback
527530
528- validators . validate ( validators . isNonEmptyString ( url ) , cb , url )
531+ if ( typeof url === 'string' ) {
532+ validators . validate ( validators . isNonEmptyString ( url ) , cb , url )
533+ }
534+ const context = getCookieContext ( url )
529535 validators . validate ( validators . isObject ( options ) , cb , safeToString ( options ) )
530536 validators . validate ( typeof cb === 'function' , cb )
531- const context = getCookieContext ( url )
532537
533538 const host = canonicalDomain ( context . hostname )
534539 const path = context . pathname || '/'
0 commit comments