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.
53 lines
1.4 KiB
53 lines
1.4 KiB
'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() {} |
|
}; |
|
})() |
|
);
|
|
|