1 | "use strict";
|
2 | var __extends = (this && this.__extends) || (function () {
|
3 | var extendStatics = function (d, b) {
|
4 | extendStatics = Object.setPrototypeOf ||
|
5 | ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
6 | function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
7 | return extendStatics(d, b);
|
8 | };
|
9 | return function (d, b) {
|
10 | if (typeof b !== "function" && b !== null)
|
11 | throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
12 | extendStatics(d, b);
|
13 | function __() { this.constructor = d; }
|
14 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
15 | };
|
16 | })();
|
17 | Object.defineProperty(exports, "__esModule", { value: true });
|
18 | exports.createVolume = exports.ObjectStore = void 0;
|
19 | var volume_1 = require("./volume");
|
20 | var node_1 = require("./node");
|
21 | var ObjectStore = (function () {
|
22 | function ObjectStore(obj) {
|
23 | this.obj = obj;
|
24 | }
|
25 | ObjectStore.prototype.setItem = function (key, json) {
|
26 | this.obj[key] = JSON.stringify(json);
|
27 | };
|
28 | ObjectStore.prototype.getItem = function (key) {
|
29 | var data = this.obj[key];
|
30 | if (typeof data === void 0)
|
31 | return void 0;
|
32 | return JSON.parse(data);
|
33 | };
|
34 | ObjectStore.prototype.removeItem = function (key) {
|
35 | delete this.obj[key];
|
36 | };
|
37 | return ObjectStore;
|
38 | }());
|
39 | exports.ObjectStore = ObjectStore;
|
40 | function createVolume(namespace, LS) {
|
41 | if (LS === void 0) { LS = localStorage; }
|
42 | var store = new ObjectStore(LS);
|
43 | var key = function (type, id) { return "memfs." + namespace + "." + type + "." + id; };
|
44 | var NodeLocalStorage = (function (_super) {
|
45 | __extends(NodeLocalStorage, _super);
|
46 | function NodeLocalStorage() {
|
47 | return _super !== null && _super.apply(this, arguments) || this;
|
48 | }
|
49 | Object.defineProperty(NodeLocalStorage.prototype, "Key", {
|
50 | get: function () {
|
51 | if (!this._key)
|
52 | this._key = key('ino', this.ino);
|
53 | return this._key;
|
54 | },
|
55 | enumerable: false,
|
56 | configurable: true
|
57 | });
|
58 | NodeLocalStorage.prototype.sync = function () {
|
59 | store.setItem(this.Key, this.toJSON());
|
60 | };
|
61 | NodeLocalStorage.prototype.touch = function () {
|
62 | _super.prototype.touch.call(this);
|
63 | this.sync();
|
64 | };
|
65 | NodeLocalStorage.prototype.del = function () {
|
66 | _super.prototype.del.call(this);
|
67 | store.removeItem(this.Key);
|
68 | };
|
69 | return NodeLocalStorage;
|
70 | }(node_1.Node));
|
71 | var LinkLocalStorage = (function (_super) {
|
72 | __extends(LinkLocalStorage, _super);
|
73 | function LinkLocalStorage() {
|
74 | return _super !== null && _super.apply(this, arguments) || this;
|
75 | }
|
76 | Object.defineProperty(LinkLocalStorage.prototype, "Key", {
|
77 | get: function () {
|
78 | if (!this._key)
|
79 | this._key = key('link', this.getPath());
|
80 | return this._key;
|
81 | },
|
82 | enumerable: false,
|
83 | configurable: true
|
84 | });
|
85 | LinkLocalStorage.prototype.sync = function () {
|
86 | store.setItem(this.Key, this.toJSON());
|
87 | };
|
88 | return LinkLocalStorage;
|
89 | }(node_1.Link));
|
90 | return (function (_super) {
|
91 | __extends(VolumeLocalStorage, _super);
|
92 | function VolumeLocalStorage() {
|
93 | return _super.call(this, {
|
94 | Node: NodeLocalStorage,
|
95 | Link: LinkLocalStorage,
|
96 | }) || this;
|
97 | }
|
98 | VolumeLocalStorage.prototype.createLink = function (parent, name, isDirectory, perm) {
|
99 | var link = _super.prototype.createLink.call(this, parent, name, isDirectory, perm);
|
100 | store.setItem(key('link', link.getPath()), link.toJSON());
|
101 | return link;
|
102 | };
|
103 | VolumeLocalStorage.prototype.deleteLink = function (link) {
|
104 | store.removeItem(key('link', link.getPath()));
|
105 | return _super.prototype.deleteLink.call(this, link);
|
106 | };
|
107 | return VolumeLocalStorage;
|
108 | }(volume_1.Volume));
|
109 | }
|
110 | exports.createVolume = createVolume;
|