UNPKG

@choerodon/master

Version:
77 lines (66 loc) 2.4 kB
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 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); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } // 处理开放平台嵌入iframe后storage报错问题 var BaseStorage = /*#__PURE__*/function () { function BaseStorage() { _classCallCheck(this, BaseStorage); this.valuesMap = new Map(); } _createClass(BaseStorage, [{ key: "getItem", value: function getItem(key) { var stringKey = String(key); if (this.valuesMap.has(key)) { return String(this.valuesMap.get(stringKey)); } return null; } }, { key: "setItem", value: function setItem(key, val) { this.valuesMap.set(String(key), String(val)); } }, { key: "removeItem", value: function removeItem(key) { this.valuesMap["delete"](key); } }, { key: "clear", value: function clear() { this.valuesMap.clear(); } }, { key: "key", value: function key(i) { if (arguments.length === 0) { throw new TypeError("Failed to execute 'key' on 'Storage': 1 argument required, but only 0 present."); // this is a TypeError implemented on Chrome, Firefox throws Not enough arguments to Storage.key. } var arr = Array.from(this.valuesMap.keys()); return arr[i]; } }, { key: "length", get: function get() { return this.valuesMap.size; } }]); return BaseStorage; }(); try { // eslint-disable-next-line no-unused-expressions window.localStorage; // eslint-disable-next-line no-unused-expressions window.sessionStorage; } catch (error) { Object.defineProperty(window, 'localStorage', { get: function get() { return new BaseStorage(); } }); Object.defineProperty(window, 'sessionStorage', { get: function get() { return new BaseStorage(); } }); }