cookie-storage.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. "use strict";
  2. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3. function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
  4. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
  5. Object.defineProperty(exports, "__esModule", {
  6. value: true
  7. });
  8. exports.CookieStorage = void 0;
  9. var format_cookie_1 = require("./format-cookie");
  10. var parse_cookies_1 = require("./parse-cookies");
  11. var CookieStorage = function () {
  12. function CookieStorage(defaultOptions) {
  13. _classCallCheck(this, CookieStorage);
  14. this._defaultOptions = Object.assign({
  15. domain: null,
  16. expires: null,
  17. path: null,
  18. secure: false
  19. }, defaultOptions);
  20. if (typeof Proxy !== "undefined") return new Proxy(this, cookieStorageHandler);
  21. }
  22. _createClass(CookieStorage, [{
  23. key: "clear",
  24. value: function clear() {
  25. var _this = this;
  26. var parsed = parse_cookies_1.parseCookies(this._getCookie());
  27. var keys = Object.keys(parsed);
  28. keys.forEach(function (key) {
  29. return _this.removeItem(key);
  30. });
  31. }
  32. }, {
  33. key: "getItem",
  34. value: function getItem(key) {
  35. var parsed = parse_cookies_1.parseCookies(this._getCookie());
  36. return Object.prototype.hasOwnProperty.call(parsed, key) ? parsed[key] : null;
  37. }
  38. }, {
  39. key: "key",
  40. value: function key(index) {
  41. var parsed = parse_cookies_1.parseCookies(this._getCookie());
  42. var sortedKeys = Object.keys(parsed).sort();
  43. return index < sortedKeys.length ? sortedKeys[index] : null;
  44. }
  45. }, {
  46. key: "removeItem",
  47. value: function removeItem(key, cookieOptions) {
  48. var data = "";
  49. var options = Object.assign(Object.assign(Object.assign({}, this._defaultOptions), cookieOptions), {
  50. expires: new Date(0)
  51. });
  52. var formatted = format_cookie_1.formatCookie(key, data, options);
  53. this._setCookie(formatted);
  54. }
  55. }, {
  56. key: "setItem",
  57. value: function setItem(key, data, options) {
  58. var opts = Object.assign(Object.assign({}, this._defaultOptions), options);
  59. var formatted = format_cookie_1.formatCookie(key, data, opts);
  60. this._setCookie(formatted);
  61. }
  62. }, {
  63. key: "_getCookie",
  64. value: function _getCookie() {
  65. return typeof document === "undefined" ? "" : typeof document.cookie === "undefined" ? "" : document.cookie;
  66. }
  67. }, {
  68. key: "_setCookie",
  69. value: function _setCookie(value) {
  70. document.cookie = value;
  71. }
  72. }, {
  73. key: "length",
  74. get: function get() {
  75. var parsed = parse_cookies_1.parseCookies(this._getCookie());
  76. var keys = Object.keys(parsed);
  77. return keys.length;
  78. }
  79. }]);
  80. return CookieStorage;
  81. }();
  82. exports.CookieStorage = CookieStorage;
  83. var cookieStorageHandler = {
  84. defineProperty: function defineProperty(target, p, attributes) {
  85. target.setItem(p.toString(), String(attributes.value));
  86. return true;
  87. },
  88. deleteProperty: function deleteProperty(target, p) {
  89. target.removeItem(p.toString());
  90. return true;
  91. },
  92. get: function get(target, p, _receiver) {
  93. if (typeof p === "string" && p in target) return target[p];
  94. var result = target.getItem(p.toString());
  95. return result !== null ? result : undefined;
  96. },
  97. getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, p) {
  98. if (p in target) return undefined;
  99. return {
  100. configurable: true,
  101. enumerable: true,
  102. value: target.getItem(p.toString()),
  103. writable: true
  104. };
  105. },
  106. has: function has(target, p) {
  107. if (typeof p === "string" && p in target) return true;
  108. return target.getItem(p.toString()) !== null;
  109. },
  110. ownKeys: function ownKeys(target) {
  111. var keys = [];
  112. for (var i = 0; i < target.length; i++) {
  113. var key = target.key(i);
  114. if (key !== null) keys.push(key);
  115. }
  116. return keys;
  117. },
  118. preventExtensions: function preventExtensions(_) {
  119. throw new TypeError("can't prevent extensions on this proxy object");
  120. },
  121. set: function set(target, p, value, _) {
  122. target.setItem(p.toString(), String(value));
  123. return true;
  124. }
  125. };