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;
 |