godprotocol 1.0.797 → 1.0.798
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +3 -0
- package/Index.js +8 -21
- package/Loader_sequence/main.js +259 -358
- package/Objects/Account.js +178 -337
- package/Objects/Block.js +53 -58
- package/Objects/Blockweb.js +27 -34
- package/Objects/Chain.js +115 -118
- package/Objects/Explorer.js +30 -37
- package/Objects/Filesystem.js +95 -80
- package/Objects/Frame.js +43 -48
- package/Objects/Manager.js +68 -77
- package/Objects/Opcodes.js +32 -97
- package/Objects/Oracle.js +23 -39
- package/Objects/Virtual_machine.js +125 -261
- package/build/Account.js +162 -0
- package/build/Block.js +65 -0
- package/build/Blockweb.js +36 -0
- package/build/Chain.js +119 -0
- package/build/Explorer.js +47 -0
- package/build/Filesystem.js +127 -0
- package/build/Frame.js +52 -0
- package/build/Index.js +15 -0
- package/build/Manager.js +99 -0
- package/build/Opcodes.js +39 -0
- package/build/Oracle.js +42 -0
- package/build/Virtual_machine.js +128 -0
- package/build/add.js +41 -0
- package/build/create_server.js +119 -0
- package/build/framer.js +57 -0
- package/build/functions.js +82 -0
- package/build/hash.js +14 -0
- package/build/jmp.js +19 -0
- package/build/main.js +283 -0
- package/build/opcodes.js +42 -0
- package/build/privacy.js +27 -0
- package/build/services.js +50 -0
- package/build/std.js +11 -0
- package/framer.js +39 -31
- package/opcodes/add.js +14 -40
- package/opcodes/jmp.js +10 -14
- package/opcodes/std.js +5 -9
- package/opcodes.js +25 -29
- package/package.json +3 -3
- package/readme.md +71 -95
- package/types/Account.d.ts +73 -0
- package/types/Block.d.ts +22 -0
- package/types/Blockweb.d.ts +14 -0
- package/types/Chain.d.ts +35 -0
- package/types/Explorer.d.ts +9 -0
- package/types/Filesystem.d.ts +23 -0
- package/types/Frame.d.ts +14 -0
- package/types/Manager.d.ts +21 -0
- package/types/Opcodes.d.ts +11 -0
- package/types/Oracle.d.ts +17 -0
- package/types/Virtual_machine.d.ts +20 -0
- package/types/index.d.ts +4 -0
- package/utils/create_server.js +65 -626
- package/utils/functions.js +31 -43
- package/utils/hash.js +10 -11
- package/utils/privacy.js +10 -15
- package/utils/services.js +32 -33
package/Objects/Blockweb.js
CHANGED
|
@@ -1,36 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
16
|
-
var Blockweb = /*#__PURE__*/_createClass(function Blockweb(mgr) {
|
|
17
|
-
var _this = this;
|
|
18
|
-
_classCallCheck(this, Blockweb);
|
|
19
|
-
_defineProperty(this, "get", function (addr) {
|
|
20
|
-
var hash = _this.physical_addresses[addr];
|
|
21
|
-
var chain = _this.chains[hash];
|
|
1
|
+
import Chain from "./Chain";
|
|
2
|
+
|
|
3
|
+
class Blockweb {
|
|
4
|
+
constructor(mgr) {
|
|
5
|
+
this.mgr = mgr;
|
|
6
|
+
this.physical_addresses = new Object();
|
|
7
|
+
this.chains = new Object();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
get = (addr) => {
|
|
11
|
+
let hash = this.physical_addresses[addr];
|
|
12
|
+
|
|
13
|
+
let chain = this.chains[hash];
|
|
14
|
+
|
|
22
15
|
return chain;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
set = (parent, name) => {
|
|
19
|
+
let chain = new Chain(parent, name);
|
|
20
|
+
this.chains[chain.hash] = chain;
|
|
21
|
+
|
|
22
|
+
this.physical_addresses[chain.physical_address] = chain.hash;
|
|
23
|
+
this.chains[chain.hash] = chain;
|
|
24
|
+
|
|
29
25
|
return chain;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
});
|
|
35
|
-
var _default = Blockweb;
|
|
36
|
-
exports["default"] = _default;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export default Blockweb;
|
package/Objects/Chain.js
CHANGED
|
@@ -1,119 +1,116 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
_this = _super.call(this);
|
|
32
|
-
_defineProperty(_assertThisInitialized(_this), "append_buffer", function () {
|
|
33
|
-
_this.buffs.push({});
|
|
34
|
-
_this.cursors.push(_this.cursor);
|
|
35
|
-
_this.cursor = -1;
|
|
36
|
-
});
|
|
37
|
-
_defineProperty(_assertThisInitialized(_this), "set_cursor", function (cursor) {
|
|
38
|
-
_this.cursor = cursor;
|
|
39
|
-
_this.cursors.push(cursor);
|
|
40
|
-
});
|
|
41
|
-
_defineProperty(_assertThisInitialized(_this), "get_buffer", function () {
|
|
42
|
-
_this.cursor = _this.cursors.pop();
|
|
43
|
-
return _this.buffs.slice(-1)[0];
|
|
44
|
-
});
|
|
45
|
-
_defineProperty(_assertThisInitialized(_this), "generate_hash", function () {
|
|
46
|
-
_this.hash = (0, _hash.hash)(_this.physical_address);
|
|
47
|
-
});
|
|
48
|
-
_defineProperty(_assertThisInitialized(_this), "get_block", function (index) {
|
|
49
|
-
return _this.blocks[index];
|
|
50
|
-
});
|
|
51
|
-
_defineProperty(_assertThisInitialized(_this), "add_tx", function (instruction) {
|
|
52
|
-
if (!_this.txs.length) _this.start_time = Date.now();
|
|
53
|
-
_this.txs.push(instruction);
|
|
54
|
-
});
|
|
55
|
-
_defineProperty(_assertThisInitialized(_this), "mine", function (vm, no_curs) {
|
|
56
|
-
var block = new _Block["default"](_assertThisInitialized(_this));
|
|
57
|
-
block.generate_hash();
|
|
58
|
-
_this.add_block(block);
|
|
59
|
-
block.store(no_curs);
|
|
60
|
-
block.children = _this.pending_children;
|
|
61
|
-
_this.pending_children = new Array();
|
|
62
|
-
var prev_context = vm.get_context(-2);
|
|
63
|
-
if (prev_context) {
|
|
64
|
-
prev_context.pending_children.push(block);
|
|
65
|
-
prev_context.connections.push(block);
|
|
66
|
-
}
|
|
67
|
-
_this.txs = new Array();
|
|
68
|
-
block.timelapse = Date.now() - _this.start_time;
|
|
69
|
-
return block;
|
|
70
|
-
});
|
|
71
|
-
_defineProperty(_assertThisInitialized(_this), "add_block", function (block) {
|
|
72
|
-
_this.blocks.push(block);
|
|
73
|
-
_this.height = _this.blocks.length;
|
|
74
|
-
});
|
|
75
|
-
_defineProperty(_assertThisInitialized(_this), "get_latest_block", function () {
|
|
76
|
-
return _this.blocks.slice(-1)[0];
|
|
77
|
-
});
|
|
78
|
-
_defineProperty(_assertThisInitialized(_this), "stringify", function (str) {
|
|
79
|
-
var obj = {};
|
|
80
|
-
obj.physical_address = _this.physical_address;
|
|
81
|
-
obj.height = _this.blocks.length;
|
|
82
|
-
obj.parent = _this.parent.path;
|
|
83
|
-
obj.account = _this.parent.account.name;
|
|
84
|
-
obj.name = _this.name;
|
|
85
|
-
obj.connections = _this.connections.map(function (b) {
|
|
86
|
-
return new Object({
|
|
87
|
-
chain: b.chain.hash,
|
|
88
|
-
block: b.hash
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
obj.hash = _this.hash;
|
|
92
|
-
obj.blocks = _this.blocks.map(function (blk) {
|
|
93
|
-
return blk.hash;
|
|
94
|
-
});
|
|
95
|
-
return str ? JSON.stringify(obj) : obj;
|
|
96
|
-
});
|
|
97
|
-
_defineProperty(_assertThisInitialized(_this), "add_chain", function (name) {
|
|
98
|
-
return _this.account.add_chain(name, _assertThisInitialized(_this));
|
|
99
|
-
});
|
|
100
|
-
_this.parent = parent;
|
|
101
|
-
_this.account = _this.parent.account;
|
|
102
|
-
_this.name = _name || _this.parent.name;
|
|
103
|
-
_this.physical_address = _this.parent.manager || !_name ? _this.parent.physical_address : "".concat(_this.parent.physical_address, "/").concat(_this.name);
|
|
104
|
-
_this.pending_children = new Array();
|
|
105
|
-
_this.connections = new Array();
|
|
106
|
-
_this.blocks = new Array();
|
|
107
|
-
_this.txs = new Array();
|
|
108
|
-
_this.height = 0;
|
|
109
|
-
_this.cursor = -1;
|
|
110
|
-
_this.cursors = new Array();
|
|
111
|
-
_this.buffs = new Array();
|
|
112
|
-
_this.generate_hash();
|
|
113
|
-
_this.account.set_paths(_assertThisInitialized(_this));
|
|
114
|
-
return _this;
|
|
1
|
+
import { hash } from "../utils/hash";
|
|
2
|
+
import Block from "./Block";
|
|
3
|
+
import Explorer from "./Explorer";
|
|
4
|
+
|
|
5
|
+
class Chain extends Explorer {
|
|
6
|
+
constructor(parent, name) {
|
|
7
|
+
super();
|
|
8
|
+
|
|
9
|
+
this.parent = parent;
|
|
10
|
+
this.account = this.parent.account;
|
|
11
|
+
this.name = name || this.parent.name;
|
|
12
|
+
this.physical_address =
|
|
13
|
+
this.parent.manager || !name
|
|
14
|
+
? this.parent.physical_address
|
|
15
|
+
: `${this.parent.physical_address}/${this.name}`;
|
|
16
|
+
|
|
17
|
+
this.pending_children = new Array();
|
|
18
|
+
this.connections = new Array();
|
|
19
|
+
|
|
20
|
+
this.blocks = new Array();
|
|
21
|
+
this.txs = new Array();
|
|
22
|
+
|
|
23
|
+
this.height = 0;
|
|
24
|
+
this.cursor = -1;
|
|
25
|
+
this.cursors = new Array();
|
|
26
|
+
this.buffs = new Array();
|
|
27
|
+
|
|
28
|
+
this.generate_hash();
|
|
29
|
+
|
|
30
|
+
this.account.set_paths(this);
|
|
115
31
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
32
|
+
|
|
33
|
+
append_buffer = () => {
|
|
34
|
+
this.buffs.push({});
|
|
35
|
+
this.cursors.push(this.cursor);
|
|
36
|
+
this.cursor = -1;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
set_cursor = (cursor) => {
|
|
40
|
+
this.cursor = cursor;
|
|
41
|
+
this.cursors.push(cursor);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
get_buffer = () => {
|
|
45
|
+
this.cursor = this.cursors.pop();
|
|
46
|
+
return this.buffs.slice(-1)[0];
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
generate_hash = () => {
|
|
50
|
+
this.hash = hash(this.physical_address);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
get_block = (index) => {
|
|
54
|
+
return this.blocks[index];
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
add_tx = (instruction) => {
|
|
58
|
+
if (!this.txs.length) this.start_time = Date.now();
|
|
59
|
+
|
|
60
|
+
this.txs.push(instruction);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
mine = (vm, no_curs) => {
|
|
64
|
+
let block = new Block(this);
|
|
65
|
+
|
|
66
|
+
block.generate_hash();
|
|
67
|
+
this.add_block(block);
|
|
68
|
+
|
|
69
|
+
block.store(no_curs);
|
|
70
|
+
|
|
71
|
+
block.children = this.pending_children;
|
|
72
|
+
this.pending_children = new Array();
|
|
73
|
+
|
|
74
|
+
let prev_context = vm.get_context(-2);
|
|
75
|
+
if (prev_context) {
|
|
76
|
+
prev_context.pending_children.push(block);
|
|
77
|
+
prev_context.connections.push(block);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
this.txs = new Array();
|
|
81
|
+
|
|
82
|
+
block.timelapse = Date.now() - this.start_time;
|
|
83
|
+
|
|
84
|
+
return block;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
add_block = (block) => {
|
|
88
|
+
this.blocks.push(block);
|
|
89
|
+
this.height = this.blocks.length;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
get_latest_block = () => this.blocks.slice(-1)[0];
|
|
93
|
+
|
|
94
|
+
stringify = (str) => {
|
|
95
|
+
let obj = {};
|
|
96
|
+
|
|
97
|
+
obj.physical_address = this.physical_address;
|
|
98
|
+
obj.height = this.blocks.length;
|
|
99
|
+
obj.parent = this.parent.path;
|
|
100
|
+
obj.account = this.parent.account.name;
|
|
101
|
+
obj.name = this.name;
|
|
102
|
+
obj.connections = this.connections.map(
|
|
103
|
+
(b) => new Object({ chain: b.chain.hash, block: b.hash })
|
|
104
|
+
);
|
|
105
|
+
obj.hash = this.hash;
|
|
106
|
+
obj.blocks = this.blocks.map((blk) => blk.hash);
|
|
107
|
+
|
|
108
|
+
return str ? JSON.stringify(obj) : obj;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
add_chain = (name) => {
|
|
112
|
+
return this.account.add_chain(name, this);
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export default Chain;
|
package/Objects/Explorer.js
CHANGED
|
@@ -1,47 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
8
|
-
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
9
|
-
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
10
|
-
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
11
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
12
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
13
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
14
|
-
var Explorer = /*#__PURE__*/_createClass(function Explorer() {
|
|
15
|
-
var _this = this;
|
|
16
|
-
_classCallCheck(this, Explorer);
|
|
17
|
-
_defineProperty(this, "chain_props", ["blocks"]);
|
|
18
|
-
_defineProperty(this, "explore", function (query) {
|
|
1
|
+
class Explorer {
|
|
2
|
+
constructor() {}
|
|
3
|
+
|
|
4
|
+
chain_props = ["blocks"];
|
|
5
|
+
|
|
6
|
+
explore = (query) => {
|
|
19
7
|
if (!query) return;
|
|
8
|
+
|
|
20
9
|
if (query.startsWith("{")) query = query.slice(1, -1);
|
|
21
10
|
query = query.split(":");
|
|
11
|
+
|
|
22
12
|
query[0] = query[0].split(".");
|
|
23
|
-
|
|
13
|
+
|
|
14
|
+
let q2 = Number(query[1]),
|
|
24
15
|
prop;
|
|
25
|
-
|
|
26
|
-
|
|
16
|
+
|
|
17
|
+
if (this.chain_props.includes(query[0][0])) prop = query[0][0];
|
|
18
|
+
|
|
19
|
+
let obj;
|
|
27
20
|
if (isNaN(q2)) {
|
|
28
|
-
obj =
|
|
29
|
-
return c.hash === query[1];
|
|
30
|
-
});
|
|
21
|
+
obj = this[prop || "connections"].find((c) => c.hash === query[1]);
|
|
31
22
|
} else if (q2 >= 0) {
|
|
32
|
-
obj =
|
|
33
|
-
return q.index === q2;
|
|
34
|
-
});
|
|
23
|
+
obj = this[prop || "connections"].find((q) => q.index === q2);
|
|
35
24
|
} else {
|
|
36
|
-
obj =
|
|
37
|
-
}
|
|
38
|
-
if (!prop) for (var q = 0; q < query[0].length; q++) {
|
|
39
|
-
var que = query[0][q];
|
|
40
|
-
if (!obj) break;
|
|
41
|
-
obj = obj[que];
|
|
25
|
+
obj = this[prop || "connections"].slice(q2)[0];
|
|
42
26
|
}
|
|
27
|
+
|
|
28
|
+
if (!prop)
|
|
29
|
+
for (let q = 0; q < query[0].length; q++) {
|
|
30
|
+
let que = query[0][q];
|
|
31
|
+
|
|
32
|
+
if (!obj) break;
|
|
33
|
+
obj = obj[que];
|
|
34
|
+
}
|
|
35
|
+
|
|
43
36
|
return obj;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export default Explorer;
|
package/Objects/Filesystem.js
CHANGED
|
@@ -1,56 +1,57 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var Filesystem = /*#__PURE__*/_createClass(function Filesystem() {
|
|
16
|
-
var _this = this;
|
|
17
|
-
_classCallCheck(this, Filesystem);
|
|
18
|
-
_defineProperty(this, "parse_path", function (path) {
|
|
19
|
-
if (!path || path && !path.includes("/")) return path;
|
|
20
|
-
return _this.read(path);
|
|
21
|
-
});
|
|
22
|
-
_defineProperty(this, "read", function (datapath) {
|
|
1
|
+
import { hash } from "../utils/hash";
|
|
2
|
+
|
|
3
|
+
class Filesystem {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.base_address = process.env.BASE_ADDRESS || "Accounts";
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
parse_path = (path) => {
|
|
9
|
+
if (!path || (path && !path.includes("/"))) return path;
|
|
10
|
+
|
|
11
|
+
return this.read(path);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
read = (datapath) => {
|
|
23
15
|
if (!datapath) return null;
|
|
24
|
-
|
|
16
|
+
|
|
17
|
+
let type_folder = this.account.manager.oracle.get(datapath);
|
|
18
|
+
|
|
25
19
|
if (!type_folder) return datapath;
|
|
26
|
-
|
|
20
|
+
|
|
21
|
+
let content;
|
|
27
22
|
if (type_folder.type === "twain") {
|
|
28
23
|
content = {};
|
|
29
|
-
for (
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
for (let prop in type_folder.obj) {
|
|
25
|
+
let val = type_folder.obj[prop];
|
|
26
|
+
|
|
27
|
+
content[this.parse_path(prop)] = this.parse_path(val);
|
|
32
28
|
}
|
|
33
29
|
} else if (type_folder.type === "array") {
|
|
34
30
|
content = [];
|
|
35
|
-
type_folder.obj.map(
|
|
36
|
-
content.push(
|
|
31
|
+
type_folder.obj.map((t) => {
|
|
32
|
+
content.push(this.parse_path(t));
|
|
37
33
|
});
|
|
38
34
|
} else content = type_folder.obj;
|
|
35
|
+
|
|
39
36
|
return content;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
save = (content, chain, just_obj) => {
|
|
40
|
+
let addr, obj;
|
|
41
|
+
|
|
42
|
+
let type = this.get_type(chain);
|
|
43
|
+
|
|
44
44
|
if (type === "array" || type === "string") {
|
|
45
45
|
obj = [];
|
|
46
|
-
|
|
46
|
+
|
|
47
|
+
for (let curs in content) {
|
|
47
48
|
obj.splice(Number(curs) || -1, 0, content[curs]);
|
|
48
49
|
}
|
|
49
50
|
if (type === "string") obj = obj.join(" ");
|
|
50
51
|
} else if (type === "twain") {
|
|
51
52
|
obj = {};
|
|
52
|
-
for (
|
|
53
|
-
obj[
|
|
53
|
+
for (let curs in content) {
|
|
54
|
+
obj[curs] = content[curs];
|
|
54
55
|
}
|
|
55
56
|
} else if (type === "number") {
|
|
56
57
|
obj = Number(content["-1"]);
|
|
@@ -58,70 +59,84 @@ var Filesystem = /*#__PURE__*/_createClass(function Filesystem() {
|
|
|
58
59
|
} else {
|
|
59
60
|
obj = null;
|
|
60
61
|
}
|
|
62
|
+
|
|
61
63
|
if (just_obj) return obj;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
64
|
+
|
|
65
|
+
addr = `${chain.path}/${hash(JSON.stringify(obj))}`;
|
|
66
|
+
this;
|
|
67
|
+
if (obj != null) this.manager.oracle.write(addr, obj);
|
|
68
|
+
|
|
69
|
+
this.manager.oracle.set(addr, { obj, type });
|
|
70
|
+
|
|
69
71
|
return addr;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
data_addr = (type) => {
|
|
75
|
+
return `${this.physical_address}/Datatypes/${type}`;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
get_type = (chain) => {
|
|
75
79
|
switch (chain.physical_address) {
|
|
76
|
-
case
|
|
80
|
+
case this.data_addr(`Number`):
|
|
77
81
|
return "number";
|
|
78
|
-
case
|
|
82
|
+
case this.data_addr(`String`):
|
|
79
83
|
return "string";
|
|
80
|
-
case
|
|
84
|
+
case this.data_addr(`Twain`):
|
|
81
85
|
return "twain";
|
|
82
|
-
case
|
|
86
|
+
case this.data_addr(`Array`):
|
|
83
87
|
return "array";
|
|
84
|
-
case
|
|
88
|
+
case this.data_addr(`Boolean`):
|
|
85
89
|
return "boolean";
|
|
86
|
-
case
|
|
90
|
+
case this.data_addr(`Void`):
|
|
87
91
|
return "void";
|
|
88
92
|
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
write = (arg, context) => {
|
|
96
|
+
let content = context.get_buffer();
|
|
97
|
+
|
|
92
98
|
if (!content || !arg) return;
|
|
99
|
+
|
|
93
100
|
content[context.cursor] = arg;
|
|
94
101
|
// console.log(`Writing: ${arg}`);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
name_hash = () => {
|
|
105
|
+
this.hash = hash(this.name);
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
set_paths = (chain) => {
|
|
100
109
|
if (chain.parent && chain.parent.manager) {
|
|
101
110
|
chain.path = chain.parent.path;
|
|
102
111
|
return;
|
|
103
112
|
}
|
|
104
|
-
chain.path =
|
|
105
|
-
|
|
113
|
+
chain.path = `${chain.parent ? chain.parent.path : this.base_address}/${
|
|
114
|
+
chain.hash
|
|
115
|
+
}`;
|
|
116
|
+
|
|
117
|
+
let fs = this.manager.oracle.fs;
|
|
118
|
+
|
|
106
119
|
if (!fs.existsSync(chain.path)) {
|
|
107
|
-
fs.mkdirSync(chain.path, {
|
|
108
|
-
recursive: true
|
|
109
|
-
});
|
|
120
|
+
fs.mkdirSync(chain.path, { recursive: true });
|
|
110
121
|
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
add_chain = (name, parent) => {
|
|
125
|
+
let chain = this.manager.web.get(`${parent.physical_address}/${name}`);
|
|
126
|
+
if (!chain) chain = this.manager.web.set(parent, name);
|
|
127
|
+
|
|
115
128
|
return chain;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
account_chain = (account) => {
|
|
132
|
+
let chain = this.manager.web.get(account.physical_address);
|
|
133
|
+
|
|
119
134
|
if (!chain) {
|
|
120
|
-
chain =
|
|
135
|
+
chain = this.manager.web.set(account);
|
|
121
136
|
}
|
|
137
|
+
|
|
122
138
|
return chain;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
exports["default"] = _default;
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export default Filesystem;
|