wao 0.19.4 → 0.19.7

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/cjs/hub/fs.js CHANGED
@@ -3,13 +3,16 @@
3
3
  var _chokidar = _interopRequireDefault(require("chokidar"));
4
4
  var _utils = require("./utils.js");
5
5
  var _ws = _interopRequireDefault(require("ws"));
6
+ var _yargs = _interopRequireDefault(require("yargs"));
6
7
  var _ramda = require("ramda");
7
8
  var _path = require("path");
8
9
  var _fs = require("fs");
9
10
  var _process$argv$;
10
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
12
+ var _yargs$argv$port = (0, _yargs["default"])(process.argv.slice(2)).argv.port,
13
+ port = _yargs$argv$port === void 0 ? 4006 : _yargs$argv$port;
11
14
  var ws_server = new _ws["default"].Server({
12
- port: 9090
15
+ port: port
13
16
  });
14
17
  var _dir = (_process$argv$ = process.argv[2]) !== null && _process$argv$ !== void 0 ? _process$argv$ : "./";
15
18
  var sus = {};
@@ -70,7 +73,7 @@ var sendContent = function sendContent(content, path) {
70
73
  }));
71
74
  }
72
75
  };
73
- console.log("WAO FS running on port 9090");
76
+ console.log("WAO FS running on port ".concat(port));
74
77
  var wd = (0, _path.resolve)(cwd, _dir);
75
78
  console.log("Directory:", wd);
76
79
  _chokidar["default"].watch(wd, {
package/cjs/hub/index.js CHANGED
@@ -7,10 +7,13 @@ var _ramda = require("ramda");
7
7
  var _utils = require("./utils.js");
8
8
  var _bundler = _interopRequireDefault(require("./bundler.js"));
9
9
  var _cu = _interopRequireDefault(require("./cu.js"));
10
+ var _yargs = _interopRequireDefault(require("yargs"));
10
11
  var _ws = _interopRequireDefault(require("ws"));
11
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13
+ var _yargs$argv$port = (0, _yargs["default"])(process.argv.slice(2)).argv.port,
14
+ port = _yargs$argv$port === void 0 ? 8080 : _yargs$argv$port;
12
15
  var ws_server = new _ws["default"].Server({
13
- port: 8080
16
+ port: port
14
17
  });
15
18
  var sus = {};
16
19
  var cbs = {};
@@ -18,42 +18,14 @@ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r),
18
18
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
19
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); }
20
20
  var _yargs$argv$port = (0, _yargs["default"])(process.argv.slice(2)).argv.port,
21
- port = _yargs$argv$port === void 0 ? 7000 : _yargs$argv$port;
21
+ port = _yargs$argv$port === void 0 ? 4000 : _yargs$argv$port;
22
+ var proxy_port = port + 5;
22
23
  var ws_server = new _ws["default"].Server({
23
- port: 7070
24
+ port: proxy_port
24
25
  });
25
26
  var sus = {};
26
27
  var cbs = {};
27
- var _socket = null;
28
- ws_server.on("connection", function (socket) {
29
- _socket = socket;
30
- var clientId = (0, _utils.generateId)();
31
- console.log("new ws:", clientId);
32
- sus[clientId] = {
33
- socket: socket,
34
- su: false,
35
- connections: {},
36
- address: null
37
- };
38
- socket.send(JSON.stringify({
39
- type: "registered",
40
- id: clientId
41
- }));
42
- socket.on("message", function (message) {
43
- var data = JSON.parse(message);
44
- if (data.type === "msg") {
45
- if (cbs[data.id]) {
46
- cbs[data.id](data.res);
47
- delete cbs[data.id];
48
- }
49
- }
50
- });
51
- socket.on("close", function () {
52
- console.log("ws disconnected", clientId);
53
- delete sus[clientId];
54
- });
55
- });
56
- console.log("WAO FS running on port 7070");
28
+ console.log("Starting WAO Proxy servers...");
57
29
  var Adaptor = /*#__PURE__*/function () {
58
30
  function Adaptor() {
59
31
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
@@ -135,4 +107,36 @@ var main = /*#__PURE__*/function () {
135
107
  return _ref2.apply(this, arguments);
136
108
  };
137
109
  }();
138
- main();
110
+ main();
111
+ var _socket = null;
112
+ ws_server.on("connection", function (socket) {
113
+ _socket = socket;
114
+ var clientId = (0, _utils.generateId)();
115
+ console.log("new ws:", clientId);
116
+ sus[clientId] = {
117
+ socket: socket,
118
+ su: false,
119
+ connections: {},
120
+ address: null
121
+ };
122
+ socket.send(JSON.stringify({
123
+ type: "registered",
124
+ id: clientId
125
+ }));
126
+ socket.on("message", function (message) {
127
+ var data = JSON.parse(message);
128
+ if (data.type === "msg") {
129
+ if (cbs[data.id]) {
130
+ cbs[data.id](data.res);
131
+ delete cbs[data.id];
132
+ }
133
+ }
134
+ });
135
+ socket.on("close", function () {
136
+ console.log("ws disconnected", clientId);
137
+ delete sus[clientId];
138
+ });
139
+ });
140
+ setTimeout(function () {
141
+ return console.log("WS on port ".concat(proxy_port));
142
+ }, 10);
@@ -0,0 +1,27 @@
1
+ #### 1. Create an APP
2
+
3
+ ```bash
4
+ npx wao create waoapp && cd waoapp
5
+ ```
6
+
7
+ #### 2. Run WAO Proxy
8
+
9
+ ```bash
10
+ npx wao proxy
11
+ ```
12
+
13
+ #### 3. Connect the Browser to the Proxy
14
+
15
+ Go to [the web app](https://wao-localnet.vercel.app/) and open `Networks`, then click `Proxy`.
16
+
17
+ #### 4. Run Test
18
+
19
+ ```bash
20
+ yarn test test/test.js
21
+ ```
22
+
23
+ #### 5. Deploy a Process to AO Testnet
24
+
25
+ ```bash
26
+ yarn deploy src/counter.lua --wallet PATH_TO_WALLET_JSON
27
+ ```
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "wao-workspace",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "scripts": {
6
+ "test": "node --experimental-wasm-memory64",
7
+ "test-only": "node --experimental-wasm-memory64 --test-only",
8
+ "deploy": "node scripts/deploy.js"
9
+ },
10
+ "dependencies": {
11
+ "wao": "^0.19.6"
12
+ }
13
+ }
@@ -1,61 +1,35 @@
1
- "use strict";
1
+ import { AO } from "wao"
2
+ const lua = process.argv[2]
2
3
 
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
- var _wao = require("wao");
5
- var _fs = require("fs");
6
- var _path = require("path");
7
- var _yargs = _interopRequireDefault(require("yargs"));
8
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
9
- 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; }
10
- 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); }
11
- 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); }); }; }
12
- var lua = process.argv[2];
13
- var _yargs$argv$wallet = (0, _yargs["default"])(process.argv.slice(2)).argv.wallet,
14
- wallet = _yargs$argv$wallet === void 0 ? null : _yargs$argv$wallet;
15
- var src_data = null;
4
+ import { readFileSync } from "fs"
5
+ import { resolve } from "path"
6
+ import yargs from "yargs"
7
+
8
+ let { wallet = null } = yargs(process.argv.slice(2)).argv
9
+
10
+ let src_data = null
16
11
  try {
17
- src_data = (0, _fs.readFileSync)((0, _path.resolve)(process.cwd(), lua), "utf-8");
12
+ src_data = readFileSync(resolve(process.cwd(), lua), "utf-8")
18
13
  } catch (e) {
19
- console.log("lua script not found");
20
- process.exit();
14
+ console.log("lua script not found")
15
+ process.exit()
21
16
  }
22
- var jwk = null;
17
+
18
+ let jwk = null
23
19
  try {
24
- jwk = JSON.parse((0, _fs.readFileSync)((0, _path.resolve)(process.cwd(), wallet), "utf-8"));
20
+ jwk = JSON.parse(readFileSync(resolve(process.cwd(), wallet), "utf-8"))
25
21
  } catch (e) {
26
- console.log("wallet not found");
27
- process.exit();
22
+ console.log("wallet not found")
23
+ process.exit()
24
+ }
25
+
26
+ const deploy = async () => {
27
+ const ao = await new AO().init(jwk)
28
+ const { pid, p } = await ao.deploy({ src_data })
29
+ console.log("process deployed!", pid)
30
+
31
+ //console.log(await p.m("Inc", false))
32
+ //console.log(await p.d("Get", false))
28
33
  }
29
- var deploy = /*#__PURE__*/function () {
30
- var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
31
- var ao, _yield$ao$deploy, pid, p;
32
- return _regeneratorRuntime().wrap(function _callee$(_context) {
33
- while (1) switch (_context.prev = _context.next) {
34
- case 0:
35
- _context.next = 2;
36
- return new _wao.AO().init(jwk);
37
- case 2:
38
- ao = _context.sent;
39
- _context.next = 5;
40
- return ao.deploy({
41
- src_data: src_data
42
- });
43
- case 5:
44
- _yield$ao$deploy = _context.sent;
45
- pid = _yield$ao$deploy.pid;
46
- p = _yield$ao$deploy.p;
47
- console.log("process deployed!", pid);
48
34
 
49
- //console.log(await p.m("Inc", false))
50
- //console.log(await p.d("Get", false))
51
- case 9:
52
- case "end":
53
- return _context.stop();
54
- }
55
- }, _callee);
56
- }));
57
- return function deploy() {
58
- return _ref.apply(this, arguments);
59
- };
60
- }();
61
- deploy();
35
+ deploy()
@@ -0,0 +1,10 @@
1
+ local count = 0
2
+
3
+ Handlers.add("Inc", "Inc", function (msg)
4
+ count = count + 1
5
+ msg.reply({ Data = "Incremented!" })
6
+ end)
7
+
8
+ Handlers.add("Get", "Get", function (msg)
9
+ msg.reply({ Data = tostring(count) })
10
+ end)
@@ -1,103 +1,41 @@
1
- "use strict";
1
+ import assert from "assert"
2
+ import { describe, it } from "node:test"
3
+ import { readFileSync } from "fs"
4
+ import { resolve } from "path"
2
5
 
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
- var _assert = _interopRequireDefault(require("assert"));
5
- var _nodeTest = require("node:test");
6
- var _fs = require("fs");
7
- var _path = require("path");
8
- var _test = require("wao/test");
9
- var _wao = require("wao");
10
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
- 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; }
12
- 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); }
13
- 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); }); }; } // in-memory test
14
- // browser test
6
+ import { AO, acc } from "wao/test" // in-memory test
7
+ import { AO as WAO } from "wao" // browser test
15
8
 
16
- var src_data = (0, _fs.readFileSync)((0, _path.resolve)(import.meta.dirname, "../src/counter.lua"), "utf8");
17
- (0, _nodeTest.describe)("WAO", function () {
9
+ const src_data = readFileSync(
10
+ resolve(import.meta.dirname, "../src/counter.lua"),
11
+ "utf8"
12
+ )
13
+
14
+ describe("WAO", function () {
18
15
  // lightning-fast testing in memory
19
- (0, _nodeTest.it)("should spawn a process and send messages in memory", /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
20
- var ao, _yield$ao$deploy, p, pid;
21
- return _regeneratorRuntime().wrap(function _callee$(_context) {
22
- while (1) switch (_context.prev = _context.next) {
23
- case 0:
24
- _context.next = 2;
25
- return new _test.AO().init(_test.acc[0]);
26
- case 2:
27
- ao = _context.sent;
28
- _context.next = 5;
29
- return ao.deploy({
30
- src_data: src_data,
31
- scheduler: _test.acc[0].addr
32
- });
33
- case 5:
34
- _yield$ao$deploy = _context.sent;
35
- p = _yield$ao$deploy.p;
36
- pid = _yield$ao$deploy.pid;
37
- _context.t0 = _assert["default"];
38
- _context.next = 11;
39
- return p.m("Inc", false);
40
- case 11:
41
- _context.t1 = _context.sent;
42
- _context.t0.equal.call(_context.t0, _context.t1, "Incremented!");
43
- _context.t2 = _assert["default"];
44
- _context.next = 16;
45
- return p.d("Get", false);
46
- case 16:
47
- _context.t3 = _context.sent;
48
- _context.t2.equal.call(_context.t2, _context.t3, "1");
49
- case 18:
50
- case "end":
51
- return _context.stop();
52
- }
53
- }, _callee);
54
- })));
16
+ it("should spawn a process and send messages in memory", async () => {
17
+ const ao = await new AO().init(acc[0])
18
+ const { p, pid } = await ao.deploy({ src_data, scheduler: acc[0].addr })
19
+
20
+ assert.equal(await p.m("Inc", false), "Incremented!")
21
+ assert.equal(await p.d("Get", false), "1")
22
+ })
55
23
 
56
24
  // WAO Proxy must be running on your computer => "npx wao proxy"
57
- (0, _nodeTest.it)("should spawn a process and send messages to the browser", /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
58
- var ao, _yield$ao$postSchedul, res, id, _yield$ao$deploy2, p, pid;
59
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
60
- while (1) switch (_context2.prev = _context2.next) {
61
- case 0:
62
- _context2.next = 2;
63
- return new _wao.AO(7000).init(_test.acc[0]);
64
- case 2:
65
- ao = _context2.sent;
66
- _context2.next = 5;
67
- return ao.postScheduler({
68
- url: "http://localhost:7003"
69
- });
70
- case 5:
71
- _yield$ao$postSchedul = _context2.sent;
72
- res = _yield$ao$postSchedul.res;
73
- id = _yield$ao$postSchedul.id;
74
- _context2.next = 10;
75
- return ao.deploy({
76
- src_data: src_data,
77
- scheduler: _test.acc[0].addr,
78
- // specify the scheduler locaster address
79
- module: "WASM32-D8q2OmZ4Mok00sD2Y_6SYEQ7Hjx-6VZ_jl3g" // use wasm32 module
80
- });
81
- case 10:
82
- _yield$ao$deploy2 = _context2.sent;
83
- p = _yield$ao$deploy2.p;
84
- pid = _yield$ao$deploy2.pid;
85
- _context2.t0 = _assert["default"];
86
- _context2.next = 16;
87
- return p.m("Inc", false);
88
- case 16:
89
- _context2.t1 = _context2.sent;
90
- _context2.t0.equal.call(_context2.t0, _context2.t1, "Incremented!");
91
- _context2.t2 = _assert["default"];
92
- _context2.next = 21;
93
- return p.d("Get", false);
94
- case 21:
95
- _context2.t3 = _context2.sent;
96
- _context2.t2.equal.call(_context2.t2, _context2.t3, "1");
97
- case 23:
98
- case "end":
99
- return _context2.stop();
100
- }
101
- }, _callee2);
102
- })));
103
- });
25
+ it("should spawn a process and send messages to the browser", async () => {
26
+ // connect with 4000 - 4004 ports
27
+ const ao = await new WAO(4000).init(acc[0])
28
+
29
+ // post Scheduler-Location (acc[0])
30
+ const { res, id } = await ao.postScheduler({ url: "http://localhost:4003" })
31
+
32
+ const { p, pid } = await ao.deploy({
33
+ src_data,
34
+ scheduler: acc[0].addr, // specify the scheduler locaster address
35
+ module: "WASM32-D8q2OmZ4Mok00sD2Y_6SYEQ7Hjx-6VZ_jl3g", // use wasm32 module
36
+ })
37
+
38
+ assert.equal(await p.m("Inc", false), "Incremented!")
39
+ assert.equal(await p.d("Get", false), "1")
40
+ })
41
+ })
package/esm/hub/fs.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import chokidar from "chokidar"
2
2
  import { generateId } from "./utils.js"
3
3
  import WebSocket from "ws"
4
- const ws_server = new WebSocket.Server({ port: 9090 })
4
+ import yargs from "yargs"
5
+ let { port = 4006 } = yargs(process.argv.slice(2)).argv
6
+ const ws_server = new WebSocket.Server({ port })
5
7
  import { keys, omit, isNil, mergeLeft } from "ramda"
6
8
  import { resolve } from "path"
7
9
  import { writeFileSync, readFileSync } from "fs"
@@ -70,7 +72,7 @@ const sendContent = (content, path) => {
70
72
  }
71
73
  }
72
74
 
73
- console.log("WAO FS running on port 9090")
75
+ console.log(`WAO FS running on port ${port}`)
74
76
  const wd = resolve(cwd, _dir)
75
77
  console.log("Directory:", wd)
76
78
  chokidar
package/esm/hub/index.js CHANGED
@@ -5,9 +5,10 @@ import { keys, omit, isNil, mergeLeft } from "ramda"
5
5
  import { generateId, toANS104Request, parseSignatureInput } from "./utils.js"
6
6
  import bundler from "./bundler.js"
7
7
  import cu from "./cu.js"
8
-
8
+ import yargs from "yargs"
9
+ let { port = 8080 } = yargs(process.argv.slice(2)).argv
9
10
  import WebSocket from "ws"
10
- const ws_server = new WebSocket.Server({ port: 8080 })
11
+ const ws_server = new WebSocket.Server({ port })
11
12
 
12
13
  let sus = {}
13
14
  let cbs = {}
@@ -1,44 +1,16 @@
1
1
  import yargs from "yargs"
2
- let { port = 7000 } = yargs(process.argv.slice(2)).argv
2
+ let { port = 4000 } = yargs(process.argv.slice(2)).argv
3
3
  import { Server } from "../test.js"
4
4
  import { generateId } from "./utils.js"
5
5
  import WebSocket from "ws"
6
- const ws_server = new WebSocket.Server({ port: 7070 })
6
+ const proxy_port = port + 5
7
+ const ws_server = new WebSocket.Server({ port: proxy_port })
7
8
  import { keys, omit, isNil, mergeLeft } from "ramda"
8
9
  import { resolve } from "path"
9
10
  import { writeFileSync, readFileSync } from "fs"
10
11
  let sus = {}
11
12
  let cbs = {}
12
- let _socket = null
13
-
14
- ws_server.on("connection", socket => {
15
- _socket = socket
16
- const clientId = generateId()
17
- console.log("new ws:", clientId)
18
- sus[clientId] = {
19
- socket,
20
- su: false,
21
- connections: {},
22
- address: null,
23
- }
24
- socket.send(JSON.stringify({ type: "registered", id: clientId }))
25
- socket.on("message", message => {
26
- const data = JSON.parse(message)
27
- if (data.type === "msg") {
28
- if (cbs[data.id]) {
29
- cbs[data.id](data.res)
30
- delete cbs[data.id]
31
- }
32
- }
33
- })
34
-
35
- socket.on("close", () => {
36
- console.log("ws disconnected", clientId)
37
- delete sus[clientId]
38
- })
39
- })
40
-
41
- console.log("WAO FS running on port 7070")
13
+ console.log(`Starting WAO Proxy servers...`)
42
14
  class Adaptor {
43
15
  constructor({ hb_url, aoconnect, log = false, db } = {}) {}
44
16
  async get(req, res) {
@@ -65,3 +37,31 @@ class Adaptor {
65
37
  const main = async () => new Server({ log: true, port, adaptor: new Adaptor() })
66
38
 
67
39
  main()
40
+
41
+ let _socket = null
42
+ ws_server.on("connection", socket => {
43
+ _socket = socket
44
+ const clientId = generateId()
45
+ console.log("new ws:", clientId)
46
+ sus[clientId] = {
47
+ socket,
48
+ su: false,
49
+ connections: {},
50
+ address: null,
51
+ }
52
+ socket.send(JSON.stringify({ type: "registered", id: clientId }))
53
+ socket.on("message", message => {
54
+ const data = JSON.parse(message)
55
+ if (data.type === "msg") {
56
+ if (cbs[data.id]) {
57
+ cbs[data.id](data.res)
58
+ delete cbs[data.id]
59
+ }
60
+ }
61
+ })
62
+ socket.on("close", () => {
63
+ console.log("ws disconnected", clientId)
64
+ delete sus[clientId]
65
+ })
66
+ })
67
+ setTimeout(() => console.log(`WS on port ${proxy_port}`), 10)
@@ -0,0 +1,27 @@
1
+ #### 1. Create an APP
2
+
3
+ ```bash
4
+ npx wao create waoapp && cd waoapp
5
+ ```
6
+
7
+ #### 2. Run WAO Proxy
8
+
9
+ ```bash
10
+ npx wao proxy
11
+ ```
12
+
13
+ #### 3. Connect the Browser to the Proxy
14
+
15
+ Go to [the web app](https://wao-localnet.vercel.app/) and open `Networks`, then click `Proxy`.
16
+
17
+ #### 4. Run Test
18
+
19
+ ```bash
20
+ yarn test test/test.js
21
+ ```
22
+
23
+ #### 5. Deploy a Process to AO Testnet
24
+
25
+ ```bash
26
+ yarn deploy src/counter.lua --wallet PATH_TO_WALLET_JSON
27
+ ```
@@ -8,6 +8,6 @@
8
8
  "deploy": "node scripts/deploy.js"
9
9
  },
10
10
  "dependencies": {
11
- "wao": "^0.19.2"
11
+ "wao": "^0.19.6"
12
12
  }
13
13
  }
@@ -23,11 +23,11 @@ describe("WAO", function () {
23
23
 
24
24
  // WAO Proxy must be running on your computer => "npx wao proxy"
25
25
  it("should spawn a process and send messages to the browser", async () => {
26
- // connect with 7000 - 7004 ports
27
- const ao = await new WAO(7000).init(acc[0])
26
+ // connect with 4000 - 4004 ports
27
+ const ao = await new WAO(4000).init(acc[0])
28
28
 
29
29
  // post Scheduler-Location (acc[0])
30
- const { res, id } = await ao.postScheduler({ url: "http://localhost:7003" })
30
+ const { res, id } = await ao.postScheduler({ url: "http://localhost:4003" })
31
31
 
32
32
  const { p, pid } = await ao.deploy({
33
33
  src_data,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wao",
3
- "version": "0.19.4",
3
+ "version": "0.19.7",
4
4
  "bin": {
5
5
  "wao": "./cjs/cli.js",
6
6
  "wao-esm": "./esm/cli.js"