You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							47 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							47 lines
						
					
					
						
							1.1 KiB
						
					
					
				| 'use strict'
 | |
| 
 | |
| module.exports = class Cookie {
 | |
|   constructor (cookieOpts) {
 | |
|     this.maxAge = cookieOpts.maxAge || null
 | |
|     this.path = cookieOpts.path || '/'
 | |
|     this.httpOnly = cookieOpts.httpOnly !== undefined ? cookieOpts.httpOnly : true
 | |
|     this.secure = cookieOpts.secure
 | |
|     this.expires = getExpires(cookieOpts)
 | |
|     this.sameSite = cookieOpts.sameSite || null
 | |
|     this.domain = cookieOpts.domain || null
 | |
|   }
 | |
| 
 | |
|   options (secureConnection) {
 | |
|     let secure = this.secure
 | |
|     let sameSite = this.sameSite
 | |
|     if (secure === 'auto') {
 | |
|       if (secureConnection === true) {
 | |
|         secure = true
 | |
|       } else {
 | |
|         sameSite = 'Lax'
 | |
|         secure = false
 | |
|       }
 | |
|     } else {
 | |
|       secure = this.secure
 | |
|     }
 | |
|     return {
 | |
|       path: this.path,
 | |
|       httpOnly: this.httpOnly,
 | |
|       secure,
 | |
|       expires: this.expires,
 | |
|       sameSite,
 | |
|       domain: this.domain
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| function getExpires (cookieOpts) {
 | |
|   let expires = null
 | |
|   if (cookieOpts.expires) {
 | |
|     expires = cookieOpts.expires
 | |
|   } else if (cookieOpts.maxAge) {
 | |
|     expires = new Date(Date.now() + cookieOpts.maxAge)
 | |
|   }
 | |
|   return expires
 | |
| }
 |