wao 0.8.3 → 0.8.5
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/ao.js +274 -329
- package/cjs/aoconnect.js +601 -438
- package/cjs/cli.js +0 -0
- package/cjs/lua/aos1_x.wasm +0 -0
- package/cjs/tao.js +0 -1
- package/cjs/utils.js +136 -19
- package/esm/.db/766288/data/ppl/bob.json +1 -0
- package/esm/ao.js +82 -140
- package/esm/aoconnect.js +19 -19
- package/esm/cli.js +0 -0
- package/esm/lua/aos1_x.wasm +0 -0
- package/esm/tao.js +1 -2
- package/esm/utils.js +109 -17
- package/package.json +1 -1
package/cjs/cli.js
CHANGED
|
File without changes
|
|
Binary file
|
package/cjs/tao.js
CHANGED
|
@@ -87,7 +87,6 @@ var AO = /*#__PURE__*/function (_MAO) {
|
|
|
87
87
|
monitor = _connect.monitor,
|
|
88
88
|
unmonitor = _connect.unmonitor,
|
|
89
89
|
mem = _connect.mem;
|
|
90
|
-
_this.module = mem.modules.aos2_0_1;
|
|
91
90
|
_this.assign = assign;
|
|
92
91
|
_this.result = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
93
92
|
var res,
|
package/cjs/utils.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.isData = exports.isCheckComplete = exports.getTagVal = exports.getTag = exports.dirname = exports.checkTag = exports.buildTags = exports.action = void 0;
|
|
6
|
+
exports.isData = exports.isCheckComplete = exports.getTagVal = exports.getTag = exports.dirname = exports.checkTag = exports.buildTags = exports.allChecked = exports.action = void 0;
|
|
7
7
|
exports.isJSON = isJSON;
|
|
8
8
|
exports.wait = exports.validAddress = exports.udl = exports.toGraphObj = exports.tags = exports.tagEq = exports.tag = exports.srcs = exports.searchTag = exports.optServer = exports.optAO = exports.mergeOut = exports.mergeChecks = exports.ltags = exports.jsonToStr = exports.isRegExp = exports.isOutComplete = exports.isLocalhost = void 0;
|
|
9
9
|
var _graphql = require("graphql");
|
|
@@ -200,6 +200,8 @@ var isData = exports.isData = function isData(data, res) {
|
|
|
200
200
|
try {
|
|
201
201
|
if (data.test(v.Data)) return true;
|
|
202
202
|
} catch (e) {}
|
|
203
|
+
} else if (typeof data === "function") {
|
|
204
|
+
return data(v.Data);
|
|
203
205
|
} else {
|
|
204
206
|
if (data === true || v.Data === data) return true;
|
|
205
207
|
}
|
|
@@ -274,21 +276,21 @@ var modGet = function modGet(get) {
|
|
|
274
276
|
} finally {
|
|
275
277
|
_iterator4.f();
|
|
276
278
|
}
|
|
277
|
-
} else if ((0, _ramda.is)(Object, get) && (0, _ramda.isNil)(get.data) && (0, _ramda.isNil)(get.json) && (0, _ramda.isNil)(get.name) && (0, _ramda.isNil)(get.obj)) {
|
|
279
|
+
} else if ((0, _ramda.is)(Object, get) && (0, _ramda.isNil)(get.data) && (0, _ramda.isNil)(get.from) && (0, _ramda.isNil)(get.json) && (0, _ramda.isNil)(get.name) && (0, _ramda.isNil)(get.obj)) {
|
|
278
280
|
_get = {
|
|
279
281
|
obj: get
|
|
280
282
|
};
|
|
281
283
|
}
|
|
282
284
|
return _get;
|
|
283
285
|
};
|
|
284
|
-
var _getTagVal2 = function _getTagVal(get, res) {
|
|
286
|
+
var _getTagVal2 = function _getTagVal(get, res, from) {
|
|
285
287
|
var out = null;
|
|
286
288
|
var _get = modGet(get);
|
|
287
289
|
if (_typeof(_get) === "object" && _get.obj) {
|
|
288
290
|
out = {};
|
|
289
291
|
for (var k in (_get$obj = _get.obj) !== null && _get$obj !== void 0 ? _get$obj : {}) {
|
|
290
292
|
var _get$obj;
|
|
291
|
-
out[k] = _getTagVal2(_get.obj[k], res);
|
|
293
|
+
out[k] = _getTagVal2(_get.obj[k], res, from);
|
|
292
294
|
}
|
|
293
295
|
} else {
|
|
294
296
|
var _res$Messages2;
|
|
@@ -298,13 +300,22 @@ var _getTagVal2 = function _getTagVal(get, res) {
|
|
|
298
300
|
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
299
301
|
var _v$Tags2;
|
|
300
302
|
var v = _step5.value;
|
|
303
|
+
if (_typeof(_get) === "object" && (0, _ramda.isNil)(_get.name) && (0, _ramda.isNil)(_get.data)) {
|
|
304
|
+
_get.data = true;
|
|
305
|
+
}
|
|
301
306
|
if (_typeof(_get) === "object" && _get.data || typeof _get === "boolean") {
|
|
307
|
+
var _from = null;
|
|
308
|
+
if ((0, _ramda.is)(Object, _get) && _get.from) _from = _get.from;
|
|
309
|
+
if (_from && _from !== from) break;
|
|
302
310
|
if (v.Data) out = v.Data;
|
|
303
311
|
try {
|
|
304
312
|
if (_get.json || _get === true) out = JSON.parse(out);
|
|
305
313
|
} catch (e) {}
|
|
306
314
|
} else if (_typeof(_get) === "object" && typeof _get.name === "string") {
|
|
307
315
|
var _v$Tags;
|
|
316
|
+
var _from2 = null;
|
|
317
|
+
if ((0, _ramda.is)(Object, _get) && _get.from) _from2 = _get.from;
|
|
318
|
+
if (_from2 && _from2 !== from) break;
|
|
308
319
|
out = getTag((_v$Tags = v.Tags) !== null && _v$Tags !== void 0 ? _v$Tags : [], _get.name);
|
|
309
320
|
try {
|
|
310
321
|
if (_get.json) out = JSON.parse(out);
|
|
@@ -320,16 +331,19 @@ var _getTagVal2 = function _getTagVal(get, res) {
|
|
|
320
331
|
}
|
|
321
332
|
return out;
|
|
322
333
|
};
|
|
323
|
-
var getTagVal = exports.getTagVal = function getTagVal(get, res) {
|
|
334
|
+
var getTagVal = exports.getTagVal = function getTagVal(get, res, from) {
|
|
324
335
|
var _get = modGet(get);
|
|
325
|
-
return _getTagVal2(_get, res);
|
|
336
|
+
return _getTagVal2(_get, res, from);
|
|
326
337
|
};
|
|
327
338
|
var srcs = exports.srcs = {
|
|
328
339
|
module: "cNlipBptaF9JeFAf4wUmpi43EojNanIBos3EfNrEOWo",
|
|
329
340
|
module_sqlite: "ghSkge2sIUD_F00ym5sEimC63BDBuBrq4b5OcwxOjiw",
|
|
330
341
|
module_aos2: "Do_Uc2Sju_ffp6Ev0AnLVdPtot15rvMjP-a9VVaA5fM",
|
|
331
342
|
scheduler: "_GQ33BkPtZrqxA84vM8Zk-N2aO0toNNu_C-l-rawrBA",
|
|
332
|
-
authority: "fcoN_xJeisVsPXA-trzVAuIiqO3ydLQxM-L4XbrQKzY"
|
|
343
|
+
authority: "fcoN_xJeisVsPXA-trzVAuIiqO3ydLQxM-L4XbrQKzY",
|
|
344
|
+
module_wao: "Do_Uc2Sju_ffp6Ev0AnLVdPtot15rvMjP-a9VVaA5fM",
|
|
345
|
+
scheduler_wao: "_GQ33BkPtZrqxA84vM8Zk-N2aO0toNNu_C-l-rawrBA",
|
|
346
|
+
authority_wao: "eNaLJLsMiWCSWvQKNbk_YT-9ydeWl9lrWwXxLVp9kcg"
|
|
333
347
|
};
|
|
334
348
|
var buildTags = exports.buildTags = function buildTags(act, tags) {
|
|
335
349
|
var _tags = [];
|
|
@@ -358,7 +372,7 @@ var buildTags = exports.buildTags = function buildTags(act, tags) {
|
|
|
358
372
|
};
|
|
359
373
|
var mergeOut = exports.mergeOut = function mergeOut(out, out2, get) {
|
|
360
374
|
var _get = modGet(get);
|
|
361
|
-
if (_get.obj) {
|
|
375
|
+
if (_get !== null && _get !== void 0 && _get.obj) {
|
|
362
376
|
for (var k in out2 !== null && out2 !== void 0 ? out2 : {}) {
|
|
363
377
|
var _out;
|
|
364
378
|
if ((0, _ramda.isNil)((_out = out) === null || _out === void 0 ? void 0 : _out[k])) {
|
|
@@ -382,27 +396,20 @@ var isOutComplete = exports.isOutComplete = function isOutComplete(out, get) {
|
|
|
382
396
|
if ((0, _ramda.isNil)(get)) return true;
|
|
383
397
|
if ((0, _ramda.isNil)(out)) return false;
|
|
384
398
|
var _get = modGet(get);
|
|
385
|
-
if (_get.obj) {
|
|
386
|
-
for (var k in out !== null && out !== void 0 ? out : {}) {
|
|
387
|
-
if ((0, _ramda.isNil)(out[k])) return false;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
399
|
+
if (_get.obj) for (var k in out !== null && out !== void 0 ? out : {}) if ((0, _ramda.isNil)(out[k])) return false;
|
|
390
400
|
return true;
|
|
391
401
|
};
|
|
392
402
|
var isCheckComplete = exports.isCheckComplete = function isCheckComplete(checks, check) {
|
|
393
403
|
var i = 0;
|
|
394
|
-
var _iterator7 = _createForOfIteratorHelper(checks),
|
|
404
|
+
var _iterator7 = _createForOfIteratorHelper(checks || []),
|
|
395
405
|
_step7;
|
|
396
406
|
try {
|
|
397
407
|
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
398
408
|
var v = _step7.value;
|
|
409
|
+
if (!v) return false;
|
|
399
410
|
if (isRegExp(check[i]) || (0, _ramda.includes)(_typeof(check[i]))(["string", "boolean"])) {
|
|
400
411
|
if (!v) return false;
|
|
401
|
-
} else
|
|
402
|
-
for (var k in v) {
|
|
403
|
-
if (!v[k]) return false;
|
|
404
|
-
}
|
|
405
|
-
}
|
|
412
|
+
} else for (var k in v) if (!v[k]) return false;
|
|
406
413
|
i++;
|
|
407
414
|
}
|
|
408
415
|
} catch (err) {
|
|
@@ -611,4 +618,114 @@ var optServer = exports.optServer = function optServer(port) {
|
|
|
611
618
|
su: port + 3,
|
|
612
619
|
cu: port + 4
|
|
613
620
|
};
|
|
621
|
+
};
|
|
622
|
+
var allChecked = exports.allChecked = function allChecked(check, res, from) {
|
|
623
|
+
var checks = [];
|
|
624
|
+
var i = 0;
|
|
625
|
+
var _iterator11 = _createForOfIteratorHelper(check || []),
|
|
626
|
+
_step11;
|
|
627
|
+
try {
|
|
628
|
+
var _loop = function _loop() {
|
|
629
|
+
var _checks$i;
|
|
630
|
+
var v = _step11.value;
|
|
631
|
+
var _checks = (_checks$i = checks[i]) !== null && _checks$i !== void 0 ? _checks$i : null;
|
|
632
|
+
if (isRegExp(v) || (0, _ramda.includes)(_typeof(v))(["string", "boolean", "function"])) {
|
|
633
|
+
_checks = isData(v, res);
|
|
634
|
+
} else {
|
|
635
|
+
var _checkVal2 = function _checkVal(val, data) {
|
|
636
|
+
if (isRegExp(val)) {
|
|
637
|
+
try {
|
|
638
|
+
if (val.test(data)) return true;
|
|
639
|
+
} catch (e) {}
|
|
640
|
+
} else if (typeof val === "function") {
|
|
641
|
+
return val(data);
|
|
642
|
+
} else if (_typeof(val) === "object" && !(0, _ramda.isNil)(val.json)) {
|
|
643
|
+
try {
|
|
644
|
+
data = JSON.parse(data);
|
|
645
|
+
if (typeof val.json === "function") {
|
|
646
|
+
return val.json(data);
|
|
647
|
+
} else if (_typeof(val.json) === "object") {
|
|
648
|
+
if (val.eq) return (0, _ramda.equals)(data, val.json);
|
|
649
|
+
var ok = true;
|
|
650
|
+
for (var k in val.json) {
|
|
651
|
+
if (!_checkVal2(val.json[k], data[k])) {
|
|
652
|
+
ok = false;
|
|
653
|
+
break;
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
return ok;
|
|
657
|
+
} else if (val.json === true) {
|
|
658
|
+
return true;
|
|
659
|
+
}
|
|
660
|
+
} catch (e) {
|
|
661
|
+
return false;
|
|
662
|
+
}
|
|
663
|
+
} else {
|
|
664
|
+
if (val === true || data === val) return true;
|
|
665
|
+
}
|
|
666
|
+
return false;
|
|
667
|
+
};
|
|
668
|
+
var checkVal = function checkVal(res, val, name) {
|
|
669
|
+
var _iterator12 = _createForOfIteratorHelper(res.Messages || []),
|
|
670
|
+
_step12;
|
|
671
|
+
try {
|
|
672
|
+
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
|
673
|
+
var _v2 = _step12.value;
|
|
674
|
+
var data = _v2.Data;
|
|
675
|
+
if (!(0, _ramda.isNil)(name)) {
|
|
676
|
+
var t = tags(_v2.Tags || []);
|
|
677
|
+
data = t[name];
|
|
678
|
+
}
|
|
679
|
+
if ((0, _ramda.isNil)(data)) return false;
|
|
680
|
+
return _checkVal2(val, data);
|
|
681
|
+
}
|
|
682
|
+
} catch (err) {
|
|
683
|
+
_iterator12.e(err);
|
|
684
|
+
} finally {
|
|
685
|
+
_iterator12.f();
|
|
686
|
+
}
|
|
687
|
+
return false;
|
|
688
|
+
};
|
|
689
|
+
if (_typeof(v) === "object") {
|
|
690
|
+
var _v$from;
|
|
691
|
+
if (!(0, _ramda.isNil)(v.json)) {
|
|
692
|
+
var _from3 = v.from;
|
|
693
|
+
v = {
|
|
694
|
+
data: v,
|
|
695
|
+
from: _from3
|
|
696
|
+
};
|
|
697
|
+
} else if ((0, _ramda.isNil)(v.tags) && (0, _ramda.isNil)(v.data) && (0, _ramda.isNil)(v.from)) {
|
|
698
|
+
v = {
|
|
699
|
+
tags: v
|
|
700
|
+
};
|
|
701
|
+
}
|
|
702
|
+
var _from = (_v$from = v.from) !== null && _v$from !== void 0 ? _v$from : null;
|
|
703
|
+
var checks2 = {};
|
|
704
|
+
if (!(0, _ramda.isNil)(v.from) && v.from !== from) {
|
|
705
|
+
_checks = false;
|
|
706
|
+
} else {
|
|
707
|
+
var ok = true;
|
|
708
|
+
if (!(0, _ramda.isNil)(v.data)) {
|
|
709
|
+
if (!checkVal(res, v.data)) ok = false;
|
|
710
|
+
}
|
|
711
|
+
for (var k in (_v$tags = v.tags) !== null && _v$tags !== void 0 ? _v$tags : {}) {
|
|
712
|
+
var _v$tags;
|
|
713
|
+
if (!checkVal(res, v.tags[k], k)) ok = false;
|
|
714
|
+
}
|
|
715
|
+
_checks = ok;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
checks[i] = _checks;
|
|
720
|
+
i++;
|
|
721
|
+
};
|
|
722
|
+
for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
|
|
723
|
+
_loop();
|
|
724
|
+
}
|
|
725
|
+
} catch (err) {
|
|
726
|
+
_iterator11.e(err);
|
|
727
|
+
} finally {
|
|
728
|
+
_iterator11.f();
|
|
729
|
+
}
|
|
730
|
+
return isCheckComplete(checks, check);
|
|
614
731
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"Bob","age":40}
|
package/esm/ao.js
CHANGED
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
} from "@permaweb/aoconnect"
|
|
18
18
|
|
|
19
19
|
import {
|
|
20
|
+
equals,
|
|
20
21
|
concat,
|
|
21
22
|
is,
|
|
22
23
|
mergeLeft,
|
|
@@ -29,6 +30,7 @@ import {
|
|
|
29
30
|
} from "ramda"
|
|
30
31
|
|
|
31
32
|
import {
|
|
33
|
+
allChecked,
|
|
32
34
|
searchTag,
|
|
33
35
|
checkTag,
|
|
34
36
|
wait,
|
|
@@ -78,10 +80,11 @@ class AO {
|
|
|
78
80
|
in_memory = false,
|
|
79
81
|
port,
|
|
80
82
|
} = opt
|
|
81
|
-
|
|
82
83
|
if (!_port && port) _port = port
|
|
83
84
|
if (!aoconnect && _port) aoconnect = optAO(_port)
|
|
84
85
|
if (!ar && _port) ar = { port: _port }
|
|
86
|
+
this.wao = opt.wao
|
|
87
|
+
if (isNil(this.wao)) this.wao = in_memory || !isNil(ar?.port)
|
|
85
88
|
if (!module) {
|
|
86
89
|
switch (module_type) {
|
|
87
90
|
case "sqlite":
|
|
@@ -130,9 +133,15 @@ class AO {
|
|
|
130
133
|
this.monitor = monitor
|
|
131
134
|
this.unmonitor = unmonitor
|
|
132
135
|
}
|
|
133
|
-
this.
|
|
134
|
-
|
|
135
|
-
|
|
136
|
+
if (this.wao) {
|
|
137
|
+
this.module = srcs.module_wao
|
|
138
|
+
this.scheduler = srcs.scheduler_wao
|
|
139
|
+
this.authority = srcs.authority_wao
|
|
140
|
+
} else {
|
|
141
|
+
this.module = module
|
|
142
|
+
this.scheduler = scheduler
|
|
143
|
+
this.authority = authority
|
|
144
|
+
}
|
|
136
145
|
}
|
|
137
146
|
|
|
138
147
|
async init(jwk) {
|
|
@@ -372,11 +381,42 @@ class AO {
|
|
|
372
381
|
tags = {},
|
|
373
382
|
check = [],
|
|
374
383
|
get,
|
|
375
|
-
timeout =
|
|
384
|
+
timeout = 0,
|
|
376
385
|
}) {
|
|
377
386
|
let err = null
|
|
378
387
|
;({ jwk, err } = await this.ar.checkWallet({ jwk }))
|
|
379
388
|
if (err) return { err }
|
|
389
|
+
const getNewTxs = async (pid, _txs, _txmap) => {
|
|
390
|
+
const txs = await this.ar.gql.txs({
|
|
391
|
+
recipient: pid,
|
|
392
|
+
fields: ["id", "recipient", "tags", { owner: ["address"] }],
|
|
393
|
+
})
|
|
394
|
+
for (const v of txs) {
|
|
395
|
+
if (isNil(_txmap[v.id])) {
|
|
396
|
+
const t = ltags(v.tags)
|
|
397
|
+
if (t.type === "Message") {
|
|
398
|
+
v.from = t["from-process"] ?? v.owner?.address
|
|
399
|
+
_txs.unshift(v)
|
|
400
|
+
_txmap[v.id] = { checked: false, ref: t["x-reference"] }
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
const checkOut = async (get, _txs, _txmap) => {
|
|
406
|
+
let out = null
|
|
407
|
+
for (let v of _txs) {
|
|
408
|
+
if (isNil(_txmap[v.id].res)) {
|
|
409
|
+
const res = await this.result({ process: pid, message: v.id })
|
|
410
|
+
_txmap[v.id].res = res
|
|
411
|
+
}
|
|
412
|
+
if (!isNil(_txmap[v.id].res) && _txmap[v.id].out !== true) {
|
|
413
|
+
_txmap[v.id].out = true
|
|
414
|
+
out = getTagVal(get, _txmap[v.id].res, v.from)
|
|
415
|
+
if (out) break
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
return out
|
|
419
|
+
}
|
|
380
420
|
let [res, out, mid, results] = [null, null, null, []]
|
|
381
421
|
let _tags = buildTags(act, tags)
|
|
382
422
|
let start = Date.now()
|
|
@@ -387,108 +427,51 @@ class AO {
|
|
|
387
427
|
tags: _tags,
|
|
388
428
|
data: jsonToStr(data),
|
|
389
429
|
})
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
fields: ["id", "recipient", "tags", { owner: ["address"] }],
|
|
406
|
-
})
|
|
407
|
-
ex = exRef(ref, txs)
|
|
408
|
-
}
|
|
409
|
-
if (ex) return txs
|
|
410
|
-
if (this.in_memory) await wait(1)
|
|
411
|
-
return Date.now() - start < timeout ? await getRef(ref) : []
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
let [cache, checks, isOK] = [[], [], false]
|
|
415
|
-
const getResult = async mid => {
|
|
416
|
-
const res = await this.result({ process: pid, message: mid })
|
|
417
|
-
results.push({ mid, res })
|
|
418
|
-
let err = null
|
|
419
|
-
if (res.Error) err = res.Error
|
|
420
|
-
else {
|
|
421
|
-
if (!is(Array, check)) check = [check]
|
|
422
|
-
let i = 0
|
|
423
|
-
for (const v of check) {
|
|
424
|
-
let _checks = checks[i] ?? null
|
|
425
|
-
if (isRegExp(v) || includes(typeof v)(["string", "boolean"])) {
|
|
426
|
-
_checks = mergeChecks(_checks, isData(v, res), v)
|
|
427
|
-
} else {
|
|
428
|
-
const checks2 = {}
|
|
429
|
-
for (const k in v ?? {}) {
|
|
430
|
-
checks2[k] = checkTag(res, k, v[k])
|
|
431
|
-
}
|
|
432
|
-
_checks = mergeChecks(_checks, checks2, v)
|
|
430
|
+
if (!is(Array, check)) check = [check]
|
|
431
|
+
let _txs = [{ id: mid, from: await this.ar.toAddr(jwk) }]
|
|
432
|
+
let _txmap = {}
|
|
433
|
+
const t = ltags(_tags)
|
|
434
|
+
let checked = false
|
|
435
|
+
_txmap[mid] = { checked: false, ref: t["x-reference"] }
|
|
436
|
+
do {
|
|
437
|
+
for (let v of _txs) {
|
|
438
|
+
if (!_txmap[v.id].checked) {
|
|
439
|
+
_txmap[v.id].checked = true
|
|
440
|
+
const _res = await this.result({ process: pid, message: v.id })
|
|
441
|
+
if (isNil(res)) {
|
|
442
|
+
res = _res
|
|
443
|
+
mid = v.id
|
|
444
|
+
results.push({ mid, res })
|
|
433
445
|
}
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
if (isCheckComplete(checks, check)) isOK = true
|
|
438
|
-
if (!isNil(get) && !isOutComplete(out, get)) {
|
|
439
|
-
out = mergeOut(out, getTagVal(get, res), get)
|
|
446
|
+
_txmap[v.id].res = _res
|
|
447
|
+
checked = allChecked(check, _res, v.from)
|
|
448
|
+
if (checked) break
|
|
440
449
|
}
|
|
441
450
|
}
|
|
442
|
-
if (
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
for (const v2 of txs) {
|
|
457
|
-
const _ltags2 = ltags(v2.tags)
|
|
458
|
-
if (
|
|
459
|
-
_ltags2.type === "Message" &&
|
|
460
|
-
_ltags2["x-reference"] === _ltags.reference
|
|
461
|
-
) {
|
|
462
|
-
const {
|
|
463
|
-
res: _res,
|
|
464
|
-
out: _out,
|
|
465
|
-
err: _err,
|
|
466
|
-
ok: _ok,
|
|
467
|
-
} = await getResult(v2.id)
|
|
468
|
-
if (_err) {
|
|
469
|
-
err = _err
|
|
470
|
-
break
|
|
471
|
-
}
|
|
472
|
-
if (!isOutComplete(out, get) && _out)
|
|
473
|
-
out = mergeOut(out, _out, get)
|
|
474
|
-
if (isOutComplete(out, get) && isOK) break
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
if (isOutComplete(out, get) && isOK) break
|
|
478
|
-
}
|
|
451
|
+
if (checked) break
|
|
452
|
+
await wait(1000)
|
|
453
|
+
await getNewTxs(pid, _txs, _txmap)
|
|
454
|
+
} while (Date.now() - start < timeout)
|
|
455
|
+
if (!checked) {
|
|
456
|
+
err = "something went wrong!"
|
|
457
|
+
} else {
|
|
458
|
+
out = mergeOut(out, await checkOut(get, _txs, _txmap), get)
|
|
459
|
+
if (!isOutComplete(out, get) && !isNil(get)) {
|
|
460
|
+
while (Date.now() - start < timeout) {
|
|
461
|
+
await getNewTxs(pid, _txs, _txmap)
|
|
462
|
+
out = mergeOut(out, await checkOut(get, _txs, _txmap), get)
|
|
463
|
+
if (isOutComplete(out, get)) break
|
|
464
|
+
await wait(1000)
|
|
479
465
|
}
|
|
480
466
|
}
|
|
481
|
-
return { res, err }
|
|
482
467
|
}
|
|
483
|
-
;({ res, err } = await getResult(mid))
|
|
484
|
-
if (!isOK && !err) err = "something went wrong!"
|
|
485
468
|
} catch (e) {
|
|
486
469
|
err = e
|
|
487
470
|
}
|
|
488
471
|
return { mid, res, err, out, results }
|
|
489
472
|
}
|
|
490
473
|
|
|
491
|
-
async asgn({ pid, mid, jwk, check, get }) {
|
|
474
|
+
async asgn({ pid, mid, jwk, check = [], get }) {
|
|
492
475
|
let err = null
|
|
493
476
|
;({ jwk, err } = await this.ar.checkWallet({ jwk }))
|
|
494
477
|
if (err) return { err }
|
|
@@ -502,28 +485,11 @@ class AO {
|
|
|
502
485
|
})
|
|
503
486
|
res = await this.result({ process: pid, message: mid })
|
|
504
487
|
if (!res) err = "something went wrong"
|
|
505
|
-
|
|
506
488
|
if (res.Error) err = res.Error
|
|
507
489
|
else {
|
|
508
|
-
let checks = []
|
|
509
490
|
if (!is(Array, check)) check = [check]
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
let _checks = checks[i] ?? null
|
|
513
|
-
if (isRegExp(v) || includes(typeof v)(["string", "boolean"])) {
|
|
514
|
-
_checks = mergeChecks(_checks, isData(v, res), v)
|
|
515
|
-
} else {
|
|
516
|
-
const checks2 = {}
|
|
517
|
-
for (const k in v ?? {}) {
|
|
518
|
-
checks2[k] = checkTag(res, k, v[k])
|
|
519
|
-
}
|
|
520
|
-
_checks = mergeChecks(_checks, checks2, v)
|
|
521
|
-
}
|
|
522
|
-
checks[i] = _checks
|
|
523
|
-
i++
|
|
524
|
-
}
|
|
525
|
-
if (!isCheckComplete(checks, check)) err = "something went wrong"
|
|
526
|
-
if (!err && !isNil(get)) out = getTagVal(get, res)
|
|
491
|
+
if (!allChecked(check, res)) err = "something went wrong"
|
|
492
|
+
if (!err && !isNil(get)) out = getTagVal(get, res) // todo: from
|
|
527
493
|
}
|
|
528
494
|
} catch (e) {
|
|
529
495
|
err = e
|
|
@@ -531,16 +497,7 @@ class AO {
|
|
|
531
497
|
return { mid, res, err, out }
|
|
532
498
|
}
|
|
533
499
|
|
|
534
|
-
async dry({
|
|
535
|
-
pid,
|
|
536
|
-
jwk,
|
|
537
|
-
data,
|
|
538
|
-
act = "Eval",
|
|
539
|
-
tags = {},
|
|
540
|
-
check,
|
|
541
|
-
get,
|
|
542
|
-
timeout = 10000,
|
|
543
|
-
}) {
|
|
500
|
+
async dry({ pid, jwk, data, act = "Eval", tags = {}, check = [], get }) {
|
|
544
501
|
let err = null
|
|
545
502
|
;({ jwk, err } = await this.ar.checkWallet({ jwk }))
|
|
546
503
|
if (err) return { err }
|
|
@@ -556,22 +513,7 @@ class AO {
|
|
|
556
513
|
res = _res
|
|
557
514
|
let checks = []
|
|
558
515
|
if (!is(Array, check)) check = [check]
|
|
559
|
-
|
|
560
|
-
for (const v of check) {
|
|
561
|
-
let _checks = checks[i] ?? null
|
|
562
|
-
if (isRegExp(v) || includes(typeof v)(["string", "boolean"])) {
|
|
563
|
-
_checks = mergeChecks(_checks, isData(v, res), v)
|
|
564
|
-
} else {
|
|
565
|
-
const checks2 = {}
|
|
566
|
-
for (const k in v ?? {}) {
|
|
567
|
-
checks2[k] = checkTag(res, k, v[k])
|
|
568
|
-
}
|
|
569
|
-
_checks = mergeChecks(_checks, checks2, v)
|
|
570
|
-
}
|
|
571
|
-
checks[i] = _checks
|
|
572
|
-
i++
|
|
573
|
-
}
|
|
574
|
-
if (!isCheckComplete(checks, check)) err = "something went wrong"
|
|
516
|
+
if (!allChecked(check, res)) err = "something went wrong"
|
|
575
517
|
if (!err && !isNil(get)) out = getTagVal(get, res)
|
|
576
518
|
} catch (e) {
|
|
577
519
|
err = e
|
package/esm/aoconnect.js
CHANGED
|
@@ -72,25 +72,16 @@ export const connect = (mem, { cache, log = false, extensions = {} } = {}) => {
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
const genEnv = ({ pid, owner = "", module = ""
|
|
75
|
+
const genEnv = async ({ pid, owner = "", module = "" }) => {
|
|
76
76
|
return {
|
|
77
77
|
Process: {
|
|
78
78
|
Id: pid,
|
|
79
|
-
Tags: [
|
|
80
|
-
{ name: "Data-Protocol", value: "ao" },
|
|
81
|
-
{ name: "Variant", value: "ao.TN.1" },
|
|
82
|
-
{ name: "Type", value: "Process" },
|
|
83
|
-
{ name: "Authority", value: auth },
|
|
84
|
-
],
|
|
79
|
+
Tags: (await mem.get("txs", pid))?.tags ?? [],
|
|
85
80
|
Owner: owner,
|
|
86
81
|
},
|
|
87
82
|
Module: {
|
|
88
83
|
Id: module,
|
|
89
|
-
Tags: [
|
|
90
|
-
{ name: "Data-Protocol", value: "ao" },
|
|
91
|
-
{ name: "Variant", value: "ao.TN.1" },
|
|
92
|
-
{ name: "Type", value: "Module" },
|
|
93
|
-
],
|
|
84
|
+
Tags: (await mem.get("txs", module))?.tags ?? [],
|
|
94
85
|
},
|
|
95
86
|
}
|
|
96
87
|
}
|
|
@@ -108,11 +99,13 @@ export const connect = (mem, { cache, log = false, extensions = {} } = {}) => {
|
|
|
108
99
|
Module: mod,
|
|
109
100
|
Scheduler: opt.scheduler,
|
|
110
101
|
"Content-Type": "text/plain",
|
|
102
|
+
Authority: mu.addr,
|
|
111
103
|
}),
|
|
112
104
|
)
|
|
113
105
|
let ex = false
|
|
114
106
|
for (let v of opt.tags) if (v.name === "Type") ex = true
|
|
115
107
|
if (!ex) opt.tags.push({ name: "Type", value: "Process" })
|
|
108
|
+
if (opt.for) opt.tags.push({ name: "Pushed-For", value: opt.for })
|
|
116
109
|
const {
|
|
117
110
|
id,
|
|
118
111
|
owner,
|
|
@@ -171,11 +164,10 @@ export const connect = (mem, { cache, log = false, extensions = {} } = {}) => {
|
|
|
171
164
|
if (_tags["On-Boot"] === "Data") data = opt.data ?? ""
|
|
172
165
|
else data = (await mem.get("msgs", _tags["On-Boot"]))?.data ?? ""
|
|
173
166
|
let msg = await genMsg(id, p, data, opt.tags, owner, mu.addr, true)
|
|
174
|
-
const _env = genEnv({
|
|
167
|
+
const _env = await genEnv({
|
|
175
168
|
pid: p.id,
|
|
176
169
|
owner: p.owner,
|
|
177
170
|
module: p.module,
|
|
178
|
-
auth: mu.addr,
|
|
179
171
|
})
|
|
180
172
|
res = await _module.handle(null, msg, _env)
|
|
181
173
|
p.memory = res.Memory
|
|
@@ -288,11 +280,10 @@ export const connect = (mem, { cache, log = false, extensions = {} } = {}) => {
|
|
|
288
280
|
}
|
|
289
281
|
// check: is owner=mu.addr right?
|
|
290
282
|
const msg = await genMsg(opt.message, p, data, _tags, from, mu.addr)
|
|
291
|
-
const _env = genEnv({
|
|
283
|
+
const _env = await genEnv({
|
|
292
284
|
pid: p.id,
|
|
293
285
|
owner: p.owner,
|
|
294
286
|
module: p.module,
|
|
295
|
-
auth: mu.addr,
|
|
296
287
|
})
|
|
297
288
|
if (!p.handle) {
|
|
298
289
|
const { format, mod, wasm } = await mem.getWasm(p.modulea)
|
|
@@ -316,6 +307,7 @@ export const connect = (mem, { cache, log = false, extensions = {} } = {}) => {
|
|
|
316
307
|
for (const v of res.Messages ?? []) {
|
|
317
308
|
if (await mem.get("env", v.Target)) {
|
|
318
309
|
await message({
|
|
310
|
+
for: opt.message,
|
|
319
311
|
process: v.Target,
|
|
320
312
|
tags: v.Tags,
|
|
321
313
|
data: v.Data,
|
|
@@ -327,6 +319,7 @@ export const connect = (mem, { cache, log = false, extensions = {} } = {}) => {
|
|
|
327
319
|
for (const v of res.Spawns ?? []) {
|
|
328
320
|
const __tags = tags(v.Tags)
|
|
329
321
|
await spawn({
|
|
322
|
+
for: opt.message,
|
|
330
323
|
module: __tags.Module,
|
|
331
324
|
scheduler,
|
|
332
325
|
tags: v.Tags,
|
|
@@ -371,6 +364,14 @@ export const connect = (mem, { cache, log = false, extensions = {} } = {}) => {
|
|
|
371
364
|
SDK: "aoconnect",
|
|
372
365
|
}),
|
|
373
366
|
)
|
|
367
|
+
if (opt.for) {
|
|
368
|
+
opt.tags.push({ name: "Pushed-For", value: opt.for })
|
|
369
|
+
opt.tags.push({ name: "From-Process", value: opt.from })
|
|
370
|
+
const pr = (await mem.get("txs", opt.from))?.tags ?? []
|
|
371
|
+
const module = tags(pr).Module
|
|
372
|
+
if (module) opt.tags.push({ name: "From-Module", value: module })
|
|
373
|
+
}
|
|
374
|
+
|
|
374
375
|
;({ item, id, owner } = await ar.dataitem({
|
|
375
376
|
data: opt.data,
|
|
376
377
|
signer: opt.signer,
|
|
@@ -414,7 +415,7 @@ export const connect = (mem, { cache, log = false, extensions = {} } = {}) => {
|
|
|
414
415
|
spawn,
|
|
415
416
|
assign,
|
|
416
417
|
ar,
|
|
417
|
-
result: async opt => (await mem.get("env", opt.process))
|
|
418
|
+
result: async opt => (await mem.get("env", opt.process))?.res[opt.message],
|
|
418
419
|
results: async opt => {
|
|
419
420
|
const p = await mem.get("env", opt.process)
|
|
420
421
|
let results = []
|
|
@@ -450,11 +451,10 @@ export const connect = (mem, { cache, log = false, extensions = {} } = {}) => {
|
|
|
450
451
|
mu.addr,
|
|
451
452
|
true,
|
|
452
453
|
)
|
|
453
|
-
const _env = genEnv({
|
|
454
|
+
const _env = await genEnv({
|
|
454
455
|
pid: p.id,
|
|
455
456
|
owner: p.owner,
|
|
456
457
|
module: p.module,
|
|
457
|
-
auth: mu.addr,
|
|
458
458
|
})
|
|
459
459
|
function cloneMemory(memory) {
|
|
460
460
|
const buffer = memory.buffer.slice(0)
|
package/esm/cli.js
CHANGED
|
File without changes
|
|
Binary file
|