cookie.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. var defaults = require('./defaults');
  2. var isNum = require('./isNum');
  3. var isUndef = require('./isUndef');
  4. var decodeUriComponent = require('./decodeUriComponent');
  5. var defOpts = {
  6. path: '/'
  7. };
  8. function setCookie(key, val, options) {
  9. if (!isUndef(val)) {
  10. options = options || {};
  11. options = defaults(options, defOpts);
  12. if (isNum(options.expires)) {
  13. var expires = new Date();
  14. expires.setMilliseconds(
  15. expires.getMilliseconds() + options.expires * 864e5
  16. );
  17. options.expires = expires;
  18. }
  19. val = encodeURIComponent(val);
  20. key = encodeURIComponent(key);
  21. document.cookie = [
  22. key,
  23. '=',
  24. val,
  25. options.expires && '; expires=' + options.expires.toUTCString(),
  26. options.path && '; path=' + options.path,
  27. options.domain && '; domain=' + options.domain,
  28. options.secure ? '; secure' : ''
  29. ].join('');
  30. return exports;
  31. }
  32. var cookies = document.cookie ? document.cookie.split('; ') : [];
  33. var result = key ? undefined : {};
  34. for (var i = 0, len = cookies.length; i < len; i++) {
  35. var c = cookies[i];
  36. var parts = c.split('=');
  37. var name = decodeUriComponent(parts.shift());
  38. c = parts.join('=');
  39. c = decodeUriComponent(c);
  40. if (key === name) {
  41. result = c;
  42. break;
  43. }
  44. if (!key) result[name] = c;
  45. }
  46. return result;
  47. }
  48. exports = {
  49. get: setCookie,
  50. set: setCookie,
  51. remove: function(key, options) {
  52. options = options || {};
  53. options.expires = -1;
  54. return setCookie(key, '', options);
  55. }
  56. };
  57. module.exports = exports;