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() {}
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    })()
							 | 
						||
| 
								 | 
							
								);
							 |