111 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| var __extends = (this && this.__extends) || (function () {
 | |
|     var extendStatics = function (d, b) {
 | |
|         extendStatics = Object.setPrototypeOf ||
 | |
|             ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
 | |
|             function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
 | |
|         return extendStatics(d, b);
 | |
|     };
 | |
|     return function (d, b) {
 | |
|         if (typeof b !== "function" && b !== null)
 | |
|             throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
 | |
|         extendStatics(d, b);
 | |
|         function __() { this.constructor = d; }
 | |
|         d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
 | |
|     };
 | |
| })();
 | |
| Object.defineProperty(exports, "__esModule", { value: true });
 | |
| exports.createVolume = exports.ObjectStore = void 0;
 | |
| var volume_1 = require("./volume");
 | |
| var node_1 = require("./node");
 | |
| var ObjectStore = /** @class */ (function () {
 | |
|     function ObjectStore(obj) {
 | |
|         this.obj = obj;
 | |
|     }
 | |
|     ObjectStore.prototype.setItem = function (key, json) {
 | |
|         this.obj[key] = JSON.stringify(json);
 | |
|     };
 | |
|     ObjectStore.prototype.getItem = function (key) {
 | |
|         var data = this.obj[key];
 | |
|         if (typeof data === void 0)
 | |
|             return void 0;
 | |
|         return JSON.parse(data);
 | |
|     };
 | |
|     ObjectStore.prototype.removeItem = function (key) {
 | |
|         delete this.obj[key];
 | |
|     };
 | |
|     return ObjectStore;
 | |
| }());
 | |
| exports.ObjectStore = ObjectStore;
 | |
| function createVolume(namespace, LS) {
 | |
|     if (LS === void 0) { LS = localStorage; }
 | |
|     var store = new ObjectStore(LS);
 | |
|     var key = function (type, id) { return "memfs.".concat(namespace, ".").concat(type, ".").concat(id); };
 | |
|     var NodeLocalStorage = /** @class */ (function (_super) {
 | |
|         __extends(NodeLocalStorage, _super);
 | |
|         function NodeLocalStorage() {
 | |
|             return _super !== null && _super.apply(this, arguments) || this;
 | |
|         }
 | |
|         Object.defineProperty(NodeLocalStorage.prototype, "Key", {
 | |
|             get: function () {
 | |
|                 if (!this._key)
 | |
|                     this._key = key('ino', this.ino);
 | |
|                 return this._key;
 | |
|             },
 | |
|             enumerable: false,
 | |
|             configurable: true
 | |
|         });
 | |
|         NodeLocalStorage.prototype.sync = function () {
 | |
|             store.setItem(this.Key, this.toJSON());
 | |
|         };
 | |
|         NodeLocalStorage.prototype.touch = function () {
 | |
|             _super.prototype.touch.call(this);
 | |
|             this.sync();
 | |
|         };
 | |
|         NodeLocalStorage.prototype.del = function () {
 | |
|             _super.prototype.del.call(this);
 | |
|             store.removeItem(this.Key);
 | |
|         };
 | |
|         return NodeLocalStorage;
 | |
|     }(node_1.Node));
 | |
|     var LinkLocalStorage = /** @class */ (function (_super) {
 | |
|         __extends(LinkLocalStorage, _super);
 | |
|         function LinkLocalStorage() {
 | |
|             return _super !== null && _super.apply(this, arguments) || this;
 | |
|         }
 | |
|         Object.defineProperty(LinkLocalStorage.prototype, "Key", {
 | |
|             get: function () {
 | |
|                 if (!this._key)
 | |
|                     this._key = key('link', this.getPath());
 | |
|                 return this._key;
 | |
|             },
 | |
|             enumerable: false,
 | |
|             configurable: true
 | |
|         });
 | |
|         LinkLocalStorage.prototype.sync = function () {
 | |
|             store.setItem(this.Key, this.toJSON());
 | |
|         };
 | |
|         return LinkLocalStorage;
 | |
|     }(node_1.Link));
 | |
|     return /** @class */ (function (_super) {
 | |
|         __extends(VolumeLocalStorage, _super);
 | |
|         function VolumeLocalStorage() {
 | |
|             return _super.call(this, {
 | |
|                 Node: NodeLocalStorage,
 | |
|                 Link: LinkLocalStorage,
 | |
|             }) || this;
 | |
|         }
 | |
|         VolumeLocalStorage.prototype.createLink = function (parent, name, isDirectory, perm) {
 | |
|             var link = _super.prototype.createLink.call(this, parent, name, isDirectory, perm);
 | |
|             store.setItem(key('link', link.getPath()), link.toJSON());
 | |
|             return link;
 | |
|         };
 | |
|         VolumeLocalStorage.prototype.deleteLink = function (link) {
 | |
|             store.removeItem(key('link', link.getPath()));
 | |
|             return _super.prototype.deleteLink.call(this, link);
 | |
|         };
 | |
|         return VolumeLocalStorage;
 | |
|     }(volume_1.Volume));
 | |
| }
 | |
| exports.createVolume = createVolume;
 |