godprotocol 1.0.79 → 1.0.81

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.
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true,
5
+ });
6
+ exports.setter = exports.getter = void 0;
7
+ var getter = function getter(args) {
8
+ var base = args.op0;
9
+ if (typeof base === "number") return base;
10
+ if (typeof base === "string") return base[args.op1];
11
+ if (Array.isArray(base)) return base.slice(args.op1)[0];
12
+ return base[args.op1];
13
+ };
14
+ exports.getter = getter;
15
+ var setter = function setter(args) {
16
+ var base = args.op0;
17
+ if (typeof base === "number") return base;
18
+ if (typeof base === "string") {
19
+ base = ""
20
+ .concat(base.slice(0, args.op2))
21
+ .concat(args.op1)
22
+ .concat(base.slice(args.op2 + 1));
23
+ } else {
24
+ if (Array.isArray(base)) {
25
+ if (args.op2 == null || args.op2 >= base.length) base.push(args.op1);
26
+ else base[args.op2] = args.op1;
27
+ } else base[args.op2] = args.op1;
28
+ }
29
+ return base;
30
+ };
31
+ exports.setter = setter;
package/opcodes/jmp.js CHANGED
@@ -3,17 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.jmp_if = exports.jmp = exports.hold = void 0;
7
- var jmp = function jmp(args, vm) {
8
- vm.account.manager.tracker[vm.mgr_index].pointer += args.index;
6
+ exports.jmp = void 0;
7
+ var jmp = function jmp(args, vm, meta) {
8
+ meta = meta || {};
9
+ var _meta = meta,
10
+ flag = _meta.flag,
11
+ inverse = _meta.inverse;
12
+ var condition;
13
+ if (flag) condition = vm.flags[flag];
14
+ if (inverse) condition = !!!condition;
15
+ if ((condition || !flag) && typeof args.op0 === "number") {
16
+ vm.track.pointer = args.op0;
17
+ }
9
18
  };
10
- exports.jmp = jmp;
11
- var jmp_if = function jmp_if(args, vm) {
12
- if (args.passed) vm.account.manager.tracker[vm.mgr_index].pointer += args.index;
13
- };
14
- exports.jmp_if = jmp_if;
15
- var hold = function hold(args, vm) {
16
- var track = vm.account.manager.tracker[vm.mgr_index];
17
- track.hold = args.hold;
18
- };
19
- exports.hold = hold;
19
+ exports.jmp = jmp;
package/opcodes/std.js CHANGED
@@ -4,8 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.stdout = void 0;
7
- var stdout = function stdout(args) {
7
+ var stdout = function stdout(args, vm) {
8
8
  if (!args) return;
9
+ vm.account.stdout.push({
10
+ data: args,
11
+ pid: vm.track.pid
12
+ });
9
13
  for (var v in args) console.log(args[v]);
10
14
  };
11
15
  exports.stdout = stdout;
package/opcodes.js CHANGED
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
  var _add = require("./opcodes/add");
8
+ var _indices = require("./opcodes/indices");
8
9
  var _jmp = require("./opcodes/jmp");
9
10
  var _std = require("./opcodes/std");
10
11
  var _services = require("./utils/services");
@@ -17,15 +18,32 @@ var opcodes = function opcodes(account) {
17
18
  if (!args) return;
18
19
  try {
19
20
  var result = eval("".concat(args.op0, " ").concat(op.sign, " ").concat(args.op1));
21
+ if (op.sign === "==") {
22
+ account.vm.flags.equal = !!result;
23
+ return;
24
+ }
20
25
  return result;
21
26
  } catch (e) {
22
27
  console.log(e.message);
23
28
  }
24
29
  });
25
30
  });
26
- set("hold", _jmp.hold);
31
+ Object.keys(account.vm.flags).map(function (flag) {
32
+ set("jmp_".concat(flag), function (args, vm) {
33
+ return (0, _jmp.jmp)(args, vm, {
34
+ flag: flag
35
+ });
36
+ });
37
+ set("jmp_not_".concat(flag), function (args, vm) {
38
+ return (0, _jmp.jmp)(args, vm, {
39
+ flag: flag,
40
+ inverse: true
41
+ });
42
+ });
43
+ });
27
44
  set("jmp", _jmp.jmp);
28
- set("jmp_if", _jmp.jmp_if);
45
+ set("setter", _indices.setter);
46
+ set("getter", _indices.getter);
29
47
  set("send", function (data) {
30
48
  return (0, _services.post_request)(data, account.vm.stdin);
31
49
  });
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "godprotocol",
3
- "version": "1.0.79",
3
+ "version": "1.0.81",
4
4
  "description": "A data mediator.",
5
5
  "main": "Index.js",
6
- "types": "index.d.ts",
6
+ "types": "types/index.d.ts",
7
7
  "scripts": {
8
8
  "test": "echo \"Error: no test specified\" && exit 1",
9
9
  "start": "nodemon -r esm Index.js",
@@ -45,7 +45,8 @@
45
45
  "dependencies": {
46
46
  "crypto": "^1.0.1",
47
47
  "elliptic": "^6.5.5",
48
- "fs": "^0.0.1-security"
48
+ "fs": "^0.0.1-security",
49
+ "generalised-datastore": "^1.7.85"
49
50
  },
50
51
  "publishConfig": {
51
52
  "ignore": [
package/readme.md CHANGED
@@ -20,10 +20,10 @@ You can get overall comprehension in just 4 method calls.
20
20
  Accounts comes with their own VM, thereby providing concurrency on processes being executed.
21
21
 
22
22
  ```js
23
- import start from "godprotocol";
23
+ import manager from "godprotocol";
24
24
 
25
25
  // Create an initial account
26
- let initiator = start(`name`, { private: true || false });
26
+ let initiator = manager.add_account(`name`, { private: true || false });
27
27
  // if private is set to `true`, communication to the account instance must be validated by sigining with the private key.
28
28
  // N.B your keypairs are generated offline.
29
29
  ```
@@ -70,7 +70,7 @@ The run is technically the second in the pipeline.
70
70
  initiator.run(
71
71
  {
72
72
  physical_address: "Account/initiator/Datatypes/Number", // This points to a chain
73
- query: { blocks: 0 }, // Basically saying, index 0 block in physical_address chain, run again its instructions.
73
+ query: "blocks:0", // Basically saying, index 0 block in physical_address chain, run again its instructions.
74
74
  account: `public_key`,
75
75
  },
76
76
  cb
@@ -99,7 +99,7 @@ It is used to retrieve blocks and chains, and also extract their properties.
99
99
  initiator.parse(
100
100
  {
101
101
  physical_address: "Account/initiator/Datatypes/Number", // This points to a chain
102
- query: { blocks: 0 }, // Basically saying, index 0 block in physical_address chain, retrieve it.
102
+ query: "blocks:0", // Basically saying, index 0 block in physical_address chain, retrieve it.
103
103
  account: `public_key`,
104
104
  },
105
105
  cb
package/tsconfig.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "compilerOptions": {
3
+ "baseUrl": ".",
4
+ "paths": {
5
+ "@types/*": ["types/*"]
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,73 @@
1
+ import Loader_sequence from "../Loader_sequence/main";
2
+ import Filesystem from "./Filesystem";
3
+ import Virtual_machine from "./Virtual_machine";
4
+
5
+ interface Meta {
6
+ private?: boolean;
7
+ manager?: any;
8
+ }
9
+
10
+ interface Program {
11
+ instructions: string[];
12
+ account: string;
13
+ }
14
+
15
+ interface LoadPayload {
16
+ program: Program;
17
+ signature: string;
18
+ callback?: (data: any) => void;
19
+ }
20
+
21
+ interface ParsePayload {
22
+ payload: any;
23
+ signature: string;
24
+ callback?: (data: any) => void;
25
+ }
26
+
27
+ interface RunRequest {
28
+ payload: any;
29
+ signature: string;
30
+ callback?: (data: any) => void;
31
+ }
32
+
33
+ interface AccountPayload {
34
+ name: string;
35
+ meta?: Meta;
36
+ }
37
+
38
+ interface EndpointPayload {
39
+ [key: string]: any;
40
+ }
41
+
42
+ declare class Account extends Filesystem {
43
+ name: string;
44
+ private: boolean;
45
+ manager: any;
46
+ account: Account;
47
+ physical_address: string;
48
+ compiler: Loader_sequence;
49
+ chain: any;
50
+ vm: Virtual_machine;
51
+ mine_buffer: Record<string, any>;
52
+
53
+ constructor(name: string, meta?: Meta);
54
+
55
+ get_account(name: string): Account;
56
+ manage_buffer(callback?: (data: any) => void): string;
57
+ buff(block: any, pid: string): void;
58
+ flush_buffer(pid: string): void;
59
+ load(payload: LoadPayload): void;
60
+ parse(payload: ParsePayload): void;
61
+ run(request: RunRequest): void;
62
+ run_callback(callback: any, payload: any): void;
63
+ validate(
64
+ payload: any,
65
+ signature: string,
66
+ callback?: (data: any) => void
67
+ ): boolean;
68
+ stringify(str?: boolean): string | object;
69
+ create_account(payload: AccountPayload): Account;
70
+ endpoint(endpoint: string, payload: EndpointPayload): void;
71
+ }
72
+
73
+ export default Account;
@@ -0,0 +1,22 @@
1
+ import Chain from "./Chain"; // Adjust the import according to your project structure
2
+
3
+ declare class Block {
4
+ chain: Chain;
5
+ data: any;
6
+ metadata: Record<string, any>;
7
+ children: Block[];
8
+ index: number;
9
+ previous_hash?: string;
10
+ hash?: string;
11
+ cursor?: any;
12
+ datapath?: string;
13
+ timelapse?: any;
14
+
15
+ constructor(chain: Chain);
16
+
17
+ generate_hash(): void;
18
+ store(no_curs?: boolean): void;
19
+ stringify(str?: boolean): string | object;
20
+ }
21
+
22
+ export default Block;
@@ -0,0 +1,14 @@
1
+ import Chain from "./Chain";
2
+
3
+ declare class Blockweb {
4
+ mgr: any;
5
+ physical_addresses: Record<string, string>;
6
+ chains: Record<string, Chain>;
7
+
8
+ constructor(mgr: any);
9
+
10
+ get(addr: string): Chain | undefined;
11
+ set(parent: any, name: string): Chain;
12
+ }
13
+
14
+ export default Blockweb;
@@ -0,0 +1,35 @@
1
+ import Block from "./Block";
2
+ import Explorer from "./Explorer";
3
+
4
+ declare class Chain extends Explorer {
5
+ parent: any;
6
+ account: any;
7
+ name: string;
8
+ physical_address: string;
9
+ pending_children: Block[];
10
+ connections: Block[];
11
+ blocks: Block[];
12
+ txs: any[];
13
+ height: number;
14
+ cursor: number;
15
+ cursors: number[];
16
+ buffs: any[];
17
+ start_time?: number;
18
+ hash: string;
19
+
20
+ constructor(parent: any, name?: string);
21
+
22
+ append_buffer(): void;
23
+ set_cursor(cursor: number): void;
24
+ get_buffer(): any;
25
+ generate_hash(): void;
26
+ get_block(index: number): Block | undefined;
27
+ add_tx(instruction: any): void;
28
+ mine(vm: any, no_curs?: boolean): Block;
29
+ add_block(block: Block): void;
30
+ get_latest_block(): Block | undefined;
31
+ stringify(str?: boolean): string | Record<string, any>;
32
+ add_chain(name: string): Chain;
33
+ }
34
+
35
+ export default Chain;
@@ -0,0 +1,9 @@
1
+ declare class Explorer {
2
+ constructor();
3
+
4
+ chain_props: string[];
5
+
6
+ explore(query: string): any;
7
+ }
8
+
9
+ export default Explorer;
@@ -0,0 +1,23 @@
1
+ declare class Filesystem {
2
+ base_address: string;
3
+ physical_address: string;
4
+ name: string;
5
+ hash: string;
6
+ account: any;
7
+ manager: any;
8
+
9
+ constructor();
10
+
11
+ parse_path(path: string): any;
12
+ read(datapath: string): any;
13
+ save(content: any, chain: any, just_obj?: boolean): string | object;
14
+ data_addr(type: string): string;
15
+ get_type(chain: any): string;
16
+ write(arg: any, context: any): void;
17
+ name_hash(): void;
18
+ set_paths(chain: any): void;
19
+ add_chain(name: string, parent: any): any;
20
+ account_chain(account: any): any;
21
+ }
22
+
23
+ export default Filesystem;
@@ -0,0 +1,14 @@
1
+ declare class Frame {
2
+ parent: Frame | null;
3
+ object: any;
4
+ children: Frame[];
5
+ instructions: (string | Frame)[];
6
+
7
+ constructor(object: any, parent?: Frame | null);
8
+
9
+ frame(object: any): Frame;
10
+ to_instruction(): void;
11
+ flatten_instructions(): string[];
12
+ }
13
+
14
+ export default Frame;
@@ -0,0 +1,21 @@
1
+ import Account from "./Account";
2
+ import Blockweb from "./Blockweb";
3
+ import Oracle from "./Oracle";
4
+
5
+ declare class Manager {
6
+ accounts: { [key: string]: Account };
7
+ running: number;
8
+ tracks: { [key: string]: any };
9
+ web: Blockweb;
10
+ oracle: Oracle;
11
+ clock: NodeJS.Timeout | null;
12
+
13
+ constructor();
14
+
15
+ start_clock(): void;
16
+ get_account(name: string): Account | undefined;
17
+ add_account(name: string, meta?: { private?: boolean }): Account;
18
+ push(program: { sequence: string[]; account: Account; pid: string }): void;
19
+ }
20
+
21
+ export default Manager;
@@ -0,0 +1,11 @@
1
+ declare class Opcodes {
2
+ opcodes: { [key: string]: (args?: any) => any };
3
+
4
+ constructor();
5
+
6
+ set(opcode: string, circuit: (args?: any) => any): void;
7
+ prepare_operation(opcode: string, context: any): void;
8
+ stdin(object: any, cb?: () => void): void;
9
+ }
10
+
11
+ export default Opcodes;
@@ -0,0 +1,17 @@
1
+ // import fs from "fs";
2
+
3
+ declare class Oracle {
4
+ // fs: typeof fs;
5
+ mgr: any;
6
+ datapaths: { [key: string]: { type: string; obj: any } };
7
+
8
+ constructor(mgr: any);
9
+
10
+ set(path: string, data: { type: string; obj: any }): void;
11
+
12
+ get(path: string): { type: string; obj: any } | undefined;
13
+
14
+ write(addr: string, data: any, meta?: { encoding: string }): void;
15
+ }
16
+
17
+ export default Oracle;
@@ -0,0 +1,20 @@
1
+ import Opcodes from "./Opcodes";
2
+
3
+ declare class Virtual_machine extends Opcodes {
4
+ account: any;
5
+ contexts: any[];
6
+ stack: any[];
7
+ track: any;
8
+
9
+ constructor(context: any);
10
+
11
+ get_context(index?: number): any;
12
+
13
+ parse_arg(arg: string, is_cursor: boolean): any;
14
+
15
+ split_instruction(instruction: string): { opcode: string; args: string };
16
+
17
+ execute(instruction: string, track: any): void;
18
+ }
19
+
20
+ export default Virtual_machine;
@@ -0,0 +1,4 @@
1
+ export { default as Account } from "./Account";
2
+ export { default as Virtual_machine } from "./Virtual_machine";
3
+ export { default as Filesystem } from "./Filesystem";
4
+ export { default as Loader_sequence } from "../Loader_sequence/main";
@@ -1,22 +1,22 @@
1
1
  "use strict";
2
2
 
3
- 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); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.extension = exports["default"] = exports.PORT = void 0;
8
7
  var _http = _interopRequireDefault(require("http"));
9
8
  var _functions = require("./functions");
10
- var _PORT;
9
+ var _Index = require("../Index");
11
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ 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); }
12
12
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
13
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
14
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
13
15
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
16
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
17
  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; }
16
18
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
17
19
  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); }
18
- function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
19
- function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
20
20
  var PORT = Number(process.env.PORT) || 1408;
21
21
  exports.PORT = PORT;
22
22
  var cb = function cb(res, data) {
@@ -33,85 +33,98 @@ var extension = function extension(route, handler) {
33
33
  handlers.push(handler);
34
34
  };
35
35
  exports.extension = extension;
36
+ var handle_routes = function handle_routes(req, res, app) {
37
+ var data = "";
38
+ var is_in_default_routes = ["run", "load", "parse", "create_account"].includes(req.url.slice(1));
39
+ if (is_in_default_routes || !is_in_default_routes && !app) {
40
+ req.on("data", function (chunk) {
41
+ data += chunk;
42
+ });
43
+ req.on("end", function () {
44
+ try {
45
+ data = JSON.parse(data);
46
+ } catch (e) {
47
+ return cb(res.end, {
48
+ error_message: "Invalid data",
49
+ error: true
50
+ });
51
+ }
52
+ if (req.url === "/create_account") {
53
+ var account = _Index.initiator.create_account(data);
54
+ res.end(account.stringify(true));
55
+ } else if (["run", "load", "parse"].includes(req.url.slice(1))) {
56
+ var payload = _objectSpread(_objectSpread({}, data), {}, {
57
+ callback: function callback(datagram) {
58
+ return cb(res.end, datagram);
59
+ }
60
+ });
61
+ _Index.initiator.endpoint(req.url.slice(1), payload);
62
+ } else {
63
+ var _extension = extensions[req.url.slice(1)];
64
+ _extension && _extension.map(function (ex) {
65
+ typeof ex === "function" && ex(data, {
66
+ req: req,
67
+ res: res
68
+ });
69
+ });
70
+ }
71
+ });
72
+ req.on("error", function (e) {
73
+ res.writeHead(500, {
74
+ "Content-Type": "application/json"
75
+ });
76
+ res.end(JSON.stringify({
77
+ status: "error",
78
+ message: e.message
79
+ }));
80
+ });
81
+ } else {
82
+ app && app(req, res);
83
+ }
84
+ };
36
85
  var create_server = /*#__PURE__*/function () {
37
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(initiator) {
38
- var av, server;
86
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(app, settings) {
87
+ var port, port_search, av, server;
39
88
  return _regeneratorRuntime().wrap(function _callee$(_context) {
40
89
  while (1) switch (_context.prev = _context.next) {
41
90
  case 0:
42
- _context.next = 2;
43
- return (0, _functions.is_port_available)(PORT);
44
- case 2:
91
+ settings = settings || {};
92
+ port = settings.port || PORT, port_search = settings.port_search;
93
+ if (!port_search) {
94
+ _context.next = 13;
95
+ break;
96
+ }
97
+ _context.next = 5;
98
+ return (0, _functions.is_port_available)(port);
99
+ case 5:
45
100
  av = _context.sent;
46
- case 3:
101
+ case 6:
47
102
  if (av) {
48
- _context.next = 10;
103
+ _context.next = 13;
49
104
  break;
50
105
  }
51
- _PORT = PORT++, exports.PORT = PORT, _PORT;
52
- _context.next = 7;
53
- return (0, _functions.is_port_available)(PORT);
54
- case 7:
106
+ port++;
107
+ _context.next = 10;
108
+ return (0, _functions.is_port_available)(port);
109
+ case 10:
55
110
  av = _context.sent;
56
- _context.next = 3;
111
+ _context.next = 6;
57
112
  break;
58
- case 10:
113
+ case 13:
114
+ exports.PORT = PORT = port;
59
115
  server = _http["default"].createServer(function (req, res) {
60
- var data = "";
61
- req.on("data", function (chunk) {
62
- data += chunk;
63
- });
64
- req.on("end", function () {
65
- try {
66
- data = JSON.parse(data);
67
- } catch (e) {
68
- return res.end(JSON.stringify({
69
- error_message: "Invalid data",
70
- error: true
71
- }));
72
- }
73
- if (req.url === "/create_account") {
74
- var account = initiator.create_account(data);
75
- res.end(account.stringify(true));
76
- } else if (["run", "load", "parse"].includes(req.url.slice(1))) {
77
- var payload = _objectSpread(_objectSpread({}, data), {}, {
78
- callback: function callback(datagram) {
79
- return cb(res.end, datagram);
80
- }
81
- });
82
- initiator.endpoint(req.url.slice(1), payload);
83
- } else {
84
- var _extension = extensions[req.url.slice(1)];
85
- if (_extension) {
86
- _extension.map(function (ex) {
87
- typeof ex === "function" && ex(data, {
88
- req: req,
89
- res: res
90
- });
91
- });
92
- }
93
- }
94
- });
95
- req.on("error", function (e) {
96
- res.writeHead(500, {
97
- "Content-Type": "application/json"
98
- });
99
- res.end(JSON.stringify({
100
- status: "error",
101
- message: e.message
102
- }));
103
- });
116
+ return handle_routes(req, res, app);
104
117
  });
105
- server.listen(PORT, function () {
106
- console.log("\n...GOD PROTOCOL RUNNING :".concat(PORT));
118
+ server.listen(port, function () {
119
+ console.log("\n...GOD PROTOCOL RUNNING :".concat(port));
107
120
  });
108
- case 12:
121
+ case 16:
109
122
  case "end":
110
123
  return _context.stop();
111
124
  }
112
125
  }, _callee);
113
126
  }));
114
- return function create_server(_x) {
127
+ return function create_server(_x, _x2) {
115
128
  return _ref.apply(this, arguments);
116
129
  };
117
130
  }();