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.
		
		
		
		
		
			
		
			
				
					54 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					54 lines
				
				1.4 KiB
			| 
											3 years ago
										 | 'use strict'; | ||
|  | 
 | ||
|  | var utils = require('./../utils'); | ||
|  | 
 | ||
|  | module.exports = ( | ||
|  |   utils.isStandardBrowserEnv() ? | ||
|  | 
 | ||
|  |   // Standard browser envs support document.cookie
 | ||
|  |     (function standardBrowserEnv() { | ||
|  |       return { | ||
|  |         write: function write(name, value, expires, path, domain, secure) { | ||
|  |           var cookie = []; | ||
|  |           cookie.push(name + '=' + encodeURIComponent(value)); | ||
|  | 
 | ||
|  |           if (utils.isNumber(expires)) { | ||
|  |             cookie.push('expires=' + new Date(expires).toGMTString()); | ||
|  |           } | ||
|  | 
 | ||
|  |           if (utils.isString(path)) { | ||
|  |             cookie.push('path=' + path); | ||
|  |           } | ||
|  | 
 | ||
|  |           if (utils.isString(domain)) { | ||
|  |             cookie.push('domain=' + domain); | ||
|  |           } | ||
|  | 
 | ||
|  |           if (secure === true) { | ||
|  |             cookie.push('secure'); | ||
|  |           } | ||
|  | 
 | ||
|  |           document.cookie = cookie.join('; '); | ||
|  |         }, | ||
|  | 
 | ||
|  |         read: function read(name) { | ||
|  |           var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); | ||
|  |           return (match ? decodeURIComponent(match[3]) : null); | ||
|  |         }, | ||
|  | 
 | ||
|  |         remove: function remove(name) { | ||
|  |           this.write(name, '', Date.now() - 86400000); | ||
|  |         } | ||
|  |       }; | ||
|  |     })() : | ||
|  | 
 | ||
|  |   // Non standard browser env (web workers, react-native) lack needed support.
 | ||
|  |     (function nonStandardBrowserEnv() { | ||
|  |       return { | ||
|  |         write: function write() {}, | ||
|  |         read: function read() { return null; }, | ||
|  |         remove: function remove() {} | ||
|  |       }; | ||
|  |     })() | ||
|  | ); |