UNPKG

mock-webstorage

Version:

A mock WebStorage class for mocking localStorage and sessionStorage objects in tests.

81 lines (67 loc) 5.09 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var MockStorage = /*#__PURE__*/ function () { function MockStorage() { (0, _classCallCheck2.default)(this, MockStorage); (0, _defineProperty2.default)(this, "_keys", []); (0, _defineProperty2.default)(this, "_data", Object.create(null)); } (0, _createClass2.default)(MockStorage, [{ key: "key", value: function key(i) { i = Math.floor(Number(i)); return i >= 0 && i < this._keys.length ? this._keys[i] : null; } }, { key: "getItem", value: function getItem(k) { k = String(k); return k in this._data ? this._data[k] : null; } }, { key: "setItem", value: function setItem(k, v) { k = String(k); if (!(k in this._data)) { this._keys.push(k); } this._data[k] = String(v); } }, { key: "removeItem", value: function removeItem(k) { k = String(k); if (k in this._data) { var i = this._keys.indexOf(k); if (i < 0) throw new Error('Should not happen'); this._keys.splice(i, 1); delete this._data[k]; } } }, { key: "clear", value: function clear() { this._keys = []; this._data = Object.create(null); } }, { key: "length", get: function get() { return this._keys.length; } }]); return MockStorage; }(); exports.default = MockStorage; module.exports = exports.default; module.exports.default = exports.default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJNb2NrU3RvcmFnZSIsIk9iamVjdCIsImNyZWF0ZSIsImkiLCJNYXRoIiwiZmxvb3IiLCJOdW1iZXIiLCJfa2V5cyIsImxlbmd0aCIsImsiLCJTdHJpbmciLCJfZGF0YSIsInYiLCJwdXNoIiwiaW5kZXhPZiIsIkVycm9yIiwic3BsaWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7SUFFcUJBLFc7Ozs7O2lEQUNJLEU7aURBQ1NDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLElBQWQsQzs7Ozs7d0JBTTVCQyxDLEVBQTBCO0FBQzVCQSxNQUFBQSxDQUFDLEdBQUdDLElBQUksQ0FBQ0MsS0FBTCxDQUFXQyxNQUFNLENBQUNILENBQUQsQ0FBakIsQ0FBSjtBQUNBLGFBQVFBLENBQUMsSUFBSSxDQUFMLElBQVVBLENBQUMsR0FBRyxLQUFLSSxLQUFMLENBQVdDLE1BQTFCLEdBQW9DLEtBQUtELEtBQUwsQ0FBV0osQ0FBWCxDQUFwQyxHQUFvRCxJQUEzRDtBQUNEOzs7NEJBRU9NLEMsRUFBMEI7QUFDaENBLE1BQUFBLENBQUMsR0FBR0MsTUFBTSxDQUFDRCxDQUFELENBQVY7QUFDQSxhQUFRQSxDQUFDLElBQUksS0FBS0UsS0FBWCxHQUFvQixLQUFLQSxLQUFMLENBQVdGLENBQVgsQ0FBcEIsR0FBb0MsSUFBM0M7QUFDRDs7OzRCQUVPQSxDLEVBQVdHLEMsRUFBaUI7QUFDbENILE1BQUFBLENBQUMsR0FBR0MsTUFBTSxDQUFDRCxDQUFELENBQVY7O0FBQ0EsVUFBSSxFQUFFQSxDQUFDLElBQUksS0FBS0UsS0FBWixDQUFKLEVBQXdCO0FBQ3RCLGFBQUtKLEtBQUwsQ0FBV00sSUFBWCxDQUFnQkosQ0FBaEI7QUFDRDs7QUFDRCxXQUFLRSxLQUFMLENBQVdGLENBQVgsSUFBZ0JDLE1BQU0sQ0FBQ0UsQ0FBRCxDQUF0QjtBQUNEOzs7K0JBRVVILEMsRUFBaUI7QUFDMUJBLE1BQUFBLENBQUMsR0FBR0MsTUFBTSxDQUFDRCxDQUFELENBQVY7O0FBQ0EsVUFBSUEsQ0FBQyxJQUFJLEtBQUtFLEtBQWQsRUFBcUI7QUFDbkIsWUFBTVIsQ0FBQyxHQUFHLEtBQUtJLEtBQUwsQ0FBV08sT0FBWCxDQUFtQkwsQ0FBbkIsQ0FBVjs7QUFDQSxZQUFJTixDQUFDLEdBQUcsQ0FBUixFQUFXLE1BQU0sSUFBSVksS0FBSixDQUFVLG1CQUFWLENBQU47O0FBQ1gsYUFBS1IsS0FBTCxDQUFXUyxNQUFYLENBQWtCYixDQUFsQixFQUFxQixDQUFyQjs7QUFDQSxlQUFPLEtBQUtRLEtBQUwsQ0FBV0YsQ0FBWCxDQUFQO0FBQ0Q7QUFDRjs7OzRCQUVhO0FBQ1osV0FBS0YsS0FBTCxHQUFhLEVBQWI7QUFDQSxXQUFLSSxLQUFMLEdBQWNWLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLElBQWQsQ0FBZDtBQUNEOzs7d0JBbkNvQjtBQUNuQixhQUFPLEtBQUtLLEtBQUwsQ0FBV0MsTUFBbEI7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qIEBmbG93ICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vY2tTdG9yYWdlIHtcbiAgX2tleXM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgX2RhdGE6IHtbazogc3RyaW5nXTogc3RyaW5nfSA9IChPYmplY3QuY3JlYXRlKG51bGwpOiBhbnkpO1xuXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fa2V5cy5sZW5ndGg7XG4gIH1cblxuICBrZXkoaTogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaSA9IE1hdGguZmxvb3IoTnVtYmVyKGkpKTtcbiAgICByZXR1cm4gKGkgPj0gMCAmJiBpIDwgdGhpcy5fa2V5cy5sZW5ndGgpID8gdGhpcy5fa2V5c1tpXSA6IG51bGw7XG4gIH1cblxuICBnZXRJdGVtKGs6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGsgPSBTdHJpbmcoayk7XG4gICAgcmV0dXJuIChrIGluIHRoaXMuX2RhdGEpID8gdGhpcy5fZGF0YVtrXSA6IG51bGw7XG4gIH1cblxuICBzZXRJdGVtKGs6IHN0cmluZywgdjogc3RyaW5nKTogdm9pZCB7XG4gICAgayA9IFN0cmluZyhrKTtcbiAgICBpZiAoIShrIGluIHRoaXMuX2RhdGEpKSB7XG4gICAgICB0aGlzLl9rZXlzLnB1c2goayk7XG4gICAgfVxuICAgIHRoaXMuX2RhdGFba10gPSBTdHJpbmcodik7XG4gIH1cblxuICByZW1vdmVJdGVtKGs6IHN0cmluZyk6IHZvaWQge1xuICAgIGsgPSBTdHJpbmcoayk7XG4gICAgaWYgKGsgaW4gdGhpcy5fZGF0YSkge1xuICAgICAgY29uc3QgaSA9IHRoaXMuX2tleXMuaW5kZXhPZihrKTtcbiAgICAgIGlmIChpIDwgMCkgdGhyb3cgbmV3IEVycm9yKCdTaG91bGQgbm90IGhhcHBlbicpO1xuICAgICAgdGhpcy5fa2V5cy5zcGxpY2UoaSwgMSk7XG4gICAgICBkZWxldGUgdGhpcy5fZGF0YVtrXTtcbiAgICB9XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLl9rZXlzID0gW107XG4gICAgdGhpcy5fZGF0YSA9IChPYmplY3QuY3JlYXRlKG51bGwpOiBhbnkpO1xuICB9XG59XG4iXX0=