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 +5 -2
- package/cjs/hub/index.js +4 -1
- package/cjs/hub/ws-proxy.js +37 -33
- package/cjs/workspace/README.md +27 -0
- package/cjs/workspace/package.json +13 -0
- package/cjs/workspace/scripts/deploy.js +27 -53
- package/cjs/workspace/src/counter.lua +10 -0
- package/cjs/workspace/test/test.js +36 -98
- package/esm/hub/fs.js +4 -2
- package/esm/hub/index.js +3 -2
- package/esm/hub/ws-proxy.js +32 -32
- package/esm/workspace/README.md +27 -0
- package/esm/workspace/package.json +1 -1
- package/esm/workspace/test/test.js +3 -3
- package/package.json +1 -1
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:
|
|
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
|
|
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:
|
|
16
|
+
port: port
|
|
14
17
|
});
|
|
15
18
|
var sus = {};
|
|
16
19
|
var cbs = {};
|
package/cjs/hub/ws-proxy.js
CHANGED
|
@@ -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 ?
|
|
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:
|
|
24
|
+
port: proxy_port
|
|
24
25
|
});
|
|
25
26
|
var sus = {};
|
|
26
27
|
var cbs = {};
|
|
27
|
-
|
|
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
|
-
|
|
1
|
+
import { AO } from "wao"
|
|
2
|
+
const lua = process.argv[2]
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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 =
|
|
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
|
-
|
|
17
|
+
|
|
18
|
+
let jwk = null
|
|
23
19
|
try {
|
|
24
|
-
jwk = JSON.parse(
|
|
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
|
-
|
|
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()
|
|
@@ -1,103 +1,41 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
4
|
-
|
|
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
|
-
|
|
17
|
-
(
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
|
11
|
+
const ws_server = new WebSocket.Server({ port })
|
|
11
12
|
|
|
12
13
|
let sus = {}
|
|
13
14
|
let cbs = {}
|
package/esm/hub/ws-proxy.js
CHANGED
|
@@ -1,44 +1,16 @@
|
|
|
1
1
|
import yargs from "yargs"
|
|
2
|
-
let { port =
|
|
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
|
|
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
|
-
|
|
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
|
+
```
|
|
@@ -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
|
|
27
|
-
const ao = await new WAO(
|
|
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:
|
|
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,
|