wao 0.4.11 → 0.5.0

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/tar.js CHANGED
@@ -61,35 +61,53 @@ var AR = /*#__PURE__*/function (_MAR) {
61
61
  key: "dataitem",
62
62
  value: function () {
63
63
  var _dataitem = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
64
- var _ref$target, target, _ref$data, data, _ref$tags, tags, signer, _tags, item, di, raw_owner, hashBuffer, owner;
64
+ var _ref$target, target, _ref$data, data, _ref$tags, tags, signer, item, di, _tags, _item, raw_owner, hashBuffer, owner;
65
65
  return _regeneratorRuntime().wrap(function _callee$(_context) {
66
66
  while (1) switch (_context.prev = _context.next) {
67
67
  case 0:
68
- _ref$target = _ref.target, target = _ref$target === void 0 ? "" : _ref$target, _ref$data = _ref.data, data = _ref$data === void 0 ? "1984" : _ref$data, _ref$tags = _ref.tags, tags = _ref$tags === void 0 ? {} : _ref$tags, signer = _ref.signer;
68
+ _ref$target = _ref.target, target = _ref$target === void 0 ? "" : _ref$target, _ref$data = _ref.data, data = _ref$data === void 0 ? "1984" : _ref$data, _ref$tags = _ref.tags, tags = _ref$tags === void 0 ? {} : _ref$tags, signer = _ref.signer, item = _ref.item;
69
+ di = item;
70
+ if (di) {
71
+ _context.next = 10;
72
+ break;
73
+ }
69
74
  _tags = (0, _utils.buildTags)(tags);
70
- _context.next = 4;
75
+ _context.next = 6;
71
76
  return signer({
72
77
  data: data,
73
78
  tags: _tags,
74
79
  target: target
75
80
  });
76
- case 4:
77
- item = _context.sent;
78
- di = new DataItem(item.raw);
81
+ case 6:
82
+ _item = _context.sent;
83
+ di = new DataItem(_item.raw);
84
+ _context.next = 11;
85
+ break;
86
+ case 10:
87
+ tags = (0, _utils.tags)(di.tags);
88
+ case 11:
79
89
  raw_owner = di.rawOwner;
80
90
  _context.t0 = Buffer;
81
- _context.next = 10;
91
+ _context.next = 15;
82
92
  return crypto.subtle.digest("SHA-256", raw_owner);
83
- case 10:
93
+ case 15:
84
94
  _context.t1 = _context.sent;
85
95
  hashBuffer = _context.t0.from.call(_context.t0, _context.t1);
86
96
  owner = _base64url["default"].encode(hashBuffer);
97
+ _context.next = 20;
98
+ return di.id;
99
+ case 20:
100
+ _context.t2 = _context.sent;
101
+ _context.t3 = owner;
102
+ _context.t4 = di;
103
+ _context.t5 = tags;
87
104
  return _context.abrupt("return", {
88
- id: item.id,
89
- owner: owner,
90
- item: item
105
+ id: _context.t2,
106
+ owner: _context.t3,
107
+ item: _context.t4,
108
+ tags: _context.t5
91
109
  });
92
- case 14:
110
+ case 25:
93
111
  case "end":
94
112
  return _context.stop();
95
113
  }
@@ -155,27 +173,26 @@ var AR = /*#__PURE__*/function (_MAR) {
155
173
  }, {
156
174
  key: "postItem",
157
175
  value: function () {
158
- var _postItem = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(item, jwk) {
159
- var tx, di, data_size, data_type, _iterator2, _step2, t, rowner, hashBuffer, owner, data, _item;
176
+ var _postItem = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(di, jwk) {
177
+ var tx, data_size, data_type, _iterator2, _step2, _t, rowner, hashBuffer, owner, data, _item;
160
178
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
161
179
  while (1) switch (_context3.prev = _context3.next) {
162
180
  case 0:
163
181
  _context3.next = 2;
164
182
  return this.mem.arweave.createTransaction({
165
- data: item.raw
183
+ data: di.binary
166
184
  }, jwk);
167
185
  case 2:
168
186
  tx = _context3.sent;
169
187
  tx.addTag("Bundle-Format", "binary");
170
188
  tx.addTag("Bundle-Version", "2.0.0");
171
- di = new DataItem(item.raw);
172
189
  data_size = Buffer.byteLength(di.rawData).toString();
173
190
  data_type = "";
174
191
  _iterator2 = _createForOfIteratorHelper(di.tags);
175
192
  try {
176
193
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
177
- t = _step2.value;
178
- if (t.name === "Content-Type") data_type = t.value;
194
+ _t = _step2.value;
195
+ if (_t.name === "Content-Type") data_type = _t.value;
179
196
  }
180
197
  } catch (err) {
181
198
  _iterator2.e(err);
@@ -184,9 +201,9 @@ var AR = /*#__PURE__*/function (_MAR) {
184
201
  }
185
202
  rowner = di.rawOwner;
186
203
  _context3.t0 = Buffer;
187
- _context3.next = 14;
204
+ _context3.next = 13;
188
205
  return crypto.subtle.digest("SHA-256", rowner);
189
- case 14:
206
+ case 13:
190
207
  _context3.t1 = _context3.sent;
191
208
  hashBuffer = _context3.t0.from.call(_context3.t0, _context3.t1);
192
209
  owner = _base64url["default"].encode(hashBuffer);
@@ -195,26 +212,42 @@ var AR = /*#__PURE__*/function (_MAR) {
195
212
  try {
196
213
  data = _base64url["default"].decode(di.data);
197
214
  } catch (e) {}
215
+ _context3.t2 = {
216
+ size: data_size,
217
+ type: data_type
218
+ };
219
+ _context3.t3 = di.anchor;
220
+ _context3.t4 = di.signature;
221
+ _context3.t5 = di.target;
222
+ _context3.next = 25;
223
+ return di.id;
224
+ case 25:
225
+ _context3.t6 = _context3.sent;
226
+ _context3.t7 = di;
227
+ _context3.t8 = owner;
228
+ _context3.t9 = di.tags;
229
+ _context3.t10 = data;
198
230
  _item = {
199
- _data: {
200
- size: data_size,
201
- type: data_type
202
- },
203
- anchor: di.anchor,
204
- signature: di.signature,
205
- recipient: di.target,
206
- id: item.id,
207
- item: di,
208
- owner: owner,
209
- tags: di.tags,
210
- data: data
231
+ _data: _context3.t2,
232
+ anchor: _context3.t3,
233
+ signature: _context3.t4,
234
+ recipient: _context3.t5,
235
+ id: _context3.t6,
236
+ item: _context3.t7,
237
+ owner: _context3.t8,
238
+ tags: _context3.t9,
239
+ data: _context3.t10
211
240
  };
212
- this.mem.txs[item.id] = _item;
213
- _context3.next = 24;
241
+ _context3.next = 33;
242
+ return di.id;
243
+ case 33:
244
+ _context3.t11 = _context3.sent;
245
+ this.mem.txs[_context3.t11] = _item;
246
+ _context3.next = 37;
214
247
  return this.postTx(tx, jwk, _item);
215
- case 24:
248
+ case 37:
216
249
  return _context3.abrupt("return", _context3.sent);
217
- case 25:
250
+ case 38:
218
251
  case "end":
219
252
  return _context3.stop();
220
253
  }
@@ -229,28 +262,33 @@ var AR = /*#__PURE__*/function (_MAR) {
229
262
  key: "postTx",
230
263
  value: function () {
231
264
  var _postTx = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(tx, jwk, item) {
232
- var res, err, _last, block, data_type, _iterator3, _step3, v, owner;
265
+ var _last;
266
+ var res, err, block, data_type, _iterator3, _step3, v, _tags, _iterator4, _step4, _v, owner;
233
267
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
234
268
  while (1) switch (_context4.prev = _context4.next) {
235
269
  case 0:
236
270
  res = null, err = null;
237
- _context4.next = 3;
271
+ if (tx.id) {
272
+ _context4.next = 4;
273
+ break;
274
+ }
275
+ _context4.next = 4;
238
276
  return this.mem.arweave.transactions.sign(tx, jwk);
239
- case 3:
277
+ case 4:
278
+ this.mem.height += 1;
279
+ block = {
280
+ id: tx.id,
281
+ timestamp: Date.now(),
282
+ height: this.mem.height,
283
+ previous: (_last = (0, _ramda.last)(this.mem.blocks)) !== null && _last !== void 0 ? _last : ""
284
+ };
240
285
  if (item) {
241
- this.mem.height += 1;
242
- block = {
243
- id: tx.id,
244
- timestamp: Date.now(),
245
- height: this.mem.height,
246
- previous: (_last = (0, _ramda.last)(this.mem.blocks)) !== null && _last !== void 0 ? _last : ""
247
- };
248
286
  if (!item.id) {
249
287
  item.id = tx.id;
250
- this.mem.txs[item.id] = item;
251
- this.mem.txs[item.id].parent = null;
252
- this.mem.txs[item.id].signature = tx.signature;
253
- this.mem.txs[item.id].anchor = tx.last_tx;
288
+ this.mem.txs[tx.id] = item;
289
+ this.mem.txs[tx.id].parent = null;
290
+ this.mem.txs[tx.id].signature = tx.signature;
291
+ this.mem.txs[tx.id].anchor = tx.last_tx;
254
292
  data_type = "";
255
293
  _iterator3 = _createForOfIteratorHelper(tx.tags);
256
294
  try {
@@ -271,7 +309,7 @@ var AR = /*#__PURE__*/function (_MAR) {
271
309
  } finally {
272
310
  _iterator3.f();
273
311
  }
274
- this.mem.txs[item.id]._data = {
312
+ this.mem.txs[tx.id]._data = {
275
313
  size: tx.data_size,
276
314
  type: data_type
277
315
  };
@@ -282,25 +320,50 @@ var AR = /*#__PURE__*/function (_MAR) {
282
320
  }
283
321
  block.txs = [item.id];
284
322
  this.mem.txs[item.id].block = block.id;
285
- this.mem.blocks.push(block.id);
286
- this.mem.blockmap[block.id] = block;
323
+ } else {
324
+ _tags = [];
325
+ _iterator4 = _createForOfIteratorHelper(tx.tags);
326
+ try {
327
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
328
+ _v = _step4.value;
329
+ _tags.push({
330
+ name: _base64url["default"].decode(_v.name),
331
+ value: _base64url["default"].decode(_v.value)
332
+ });
333
+ }
334
+ } catch (err) {
335
+ _iterator4.e(err);
336
+ } finally {
337
+ _iterator4.f();
338
+ }
339
+ tx.tags = _tags;
340
+ this.mem.txs[tx.id] = tx;
341
+ block.txs = [tx.id];
342
+ this.mem.txs[tx.id].block = block.id;
343
+ }
344
+ this.mem.blocks.push(block.id);
345
+ this.mem.blockmap[block.id] = block;
346
+ if (!jwk) {
347
+ _context4.next = 14;
348
+ break;
287
349
  }
350
+ _context4.next = 12;
351
+ return this.arweave.wallets.jwkToAddress(jwk);
352
+ case 12:
353
+ owner = _context4.sent;
354
+ this.mem.addrmap[owner] = jwk.n;
355
+ case 14:
288
356
  res = {
289
357
  id: tx.id,
290
358
  status: 200,
291
359
  statusText: "200"
292
360
  };
293
- _context4.next = 7;
294
- return this.arweave.wallets.jwkToAddress(jwk);
295
- case 7:
296
- owner = _context4.sent;
297
- this.mem.addrmap[owner] = jwk.n;
298
361
  return _context4.abrupt("return", {
299
362
  res: res,
300
363
  err: err,
301
364
  id: tx.id
302
365
  });
303
- case 10:
366
+ case 16:
304
367
  case "end":
305
368
  return _context4.stop();
306
369
  }
@@ -313,14 +376,47 @@ var AR = /*#__PURE__*/function (_MAR) {
313
376
  }()
314
377
  }, {
315
378
  key: "tx",
316
- value: function tx(id) {
317
- return this.mem.txs[id];
318
- }
379
+ value: function () {
380
+ var _tx = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(id) {
381
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
382
+ while (1) switch (_context5.prev = _context5.next) {
383
+ case 0:
384
+ return _context5.abrupt("return", this.mem.txs[id]);
385
+ case 1:
386
+ case "end":
387
+ return _context5.stop();
388
+ }
389
+ }, _callee5, this);
390
+ }));
391
+ function tx(_x8) {
392
+ return _tx.apply(this, arguments);
393
+ }
394
+ return tx;
395
+ }()
319
396
  }, {
320
397
  key: "data",
321
- value: function data(id) {
322
- return this.mem.txs[id].data;
323
- }
398
+ value: function () {
399
+ var _data2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(id, string) {
400
+ var _this$mem$txs$id$data, _this$mem$txs$id;
401
+ var tx, _data;
402
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
403
+ while (1) switch (_context6.prev = _context6.next) {
404
+ case 0:
405
+ tx = this.mem.txs[id];
406
+ _data = (_this$mem$txs$id$data = (_this$mem$txs$id = this.mem.txs[id]) === null || _this$mem$txs$id === void 0 ? void 0 : _this$mem$txs$id.data) !== null && _this$mem$txs$id$data !== void 0 ? _this$mem$txs$id$data : null;
407
+ if (tx.format === 2 && _data && string) _data = _base64url["default"].decode(_data);
408
+ return _context6.abrupt("return", _data);
409
+ case 4:
410
+ case "end":
411
+ return _context6.stop();
412
+ }
413
+ }, _callee6, this);
414
+ }));
415
+ function data(_x9, _x10) {
416
+ return _data2.apply(this, arguments);
417
+ }
418
+ return data;
419
+ }()
324
420
  }]);
325
421
  }(_ar["default"]);
326
422
  var _default = exports["default"] = AR;
package/cjs/test.js CHANGED
@@ -28,6 +28,12 @@ Object.defineProperty(exports, "GQL", {
28
28
  return _tgql["default"];
29
29
  }
30
30
  });
31
+ Object.defineProperty(exports, "Server", {
32
+ enumerable: true,
33
+ get: function get() {
34
+ return _server["default"];
35
+ }
36
+ });
31
37
  Object.defineProperty(exports, "Src", {
32
38
  enumerable: true,
33
39
  get: function get() {
@@ -94,6 +100,7 @@ var _tgql = _interopRequireDefault(require("./tgql.js"));
94
100
  var _armem = _interopRequireDefault(require("./armem.js"));
95
101
  var _utils = require("./utils.js");
96
102
  var _helpers = require("./helpers.js");
103
+ var _server = _interopRequireDefault(require("./server.js"));
97
104
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
98
105
  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; }
99
106
  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); }
@@ -122,4 +129,4 @@ var blueprint = exports.blueprint = /*#__PURE__*/function () {
122
129
  return _ref.apply(this, arguments);
123
130
  };
124
131
  }();
125
- var scheduler = exports.scheduler = "GQ33BkPtZrqxA84vM8Zk-N2aO0toNNu_C-l-rawrBA";
132
+ var scheduler = exports.scheduler = "_GQ33BkPtZrqxA84vM8Zk-N2aO0toNNu_C-l-rawrBA";
package/esm/ao.js CHANGED
@@ -343,6 +343,7 @@ class AO {
343
343
  data: jsonToStr(data),
344
344
  })
345
345
  } catch (e) {
346
+ console.log(e)
346
347
  err = e
347
348
  }
348
349
  return { err, pid }
@@ -540,7 +541,6 @@ class AO {
540
541
  data: jsonToStr(data),
541
542
  })
542
543
  res = _res
543
-
544
544
  let checks = []
545
545
  if (!is(Array, check)) check = [check]
546
546
  let i = 0
package/esm/aoconnect.js CHANGED
@@ -24,7 +24,15 @@ import { is, clone, fromPairs, map, mergeLeft, isNil } from "ramda"
24
24
  import AR from "./tar.js"
25
25
 
26
26
  export const connect = mem => {
27
- mem ??= new ArMem()
27
+ const isMem = mem?.__type__ === "mem"
28
+ if (!isMem) {
29
+ let args = {}
30
+ if (mem?.SU_URL) {
31
+ args = mem
32
+ args.scheduler = scheduler
33
+ }
34
+ mem = new ArMem(args)
35
+ }
28
36
  const ar = new AR({ mem })
29
37
  const WeaveDrive = new weavedrive(ar).drive
30
38
 
@@ -92,11 +100,24 @@ export const connect = mem => {
92
100
  let mod = opt.module ?? mem.modules["aos2_0_1"]
93
101
  let _module = null
94
102
  const __dirname = await dirname()
95
- const wasm =
96
- mem.wasms[mod].data ??
97
- readFileSync(resolve(__dirname, `lua/${mem.wasms[mod].file}.wasm`))
103
+ let format = null
104
+ let wasm = mem.wasms[mod]?.data
105
+ if (!wasm) {
106
+ if (mem.wasms[mod]?.file) {
107
+ wasm = readFileSync(
108
+ resolve(__dirname, `lua/${mem.wasms[mod].file}.wasm`),
109
+ )
110
+ format = mem.wasms[mod].format
111
+ } else if (mem.txs[mod]) {
112
+ wasm = Buffer.from(mem.txs[mod].data, "base64")
113
+ format = tags(mem.txs[mod].tags)["Module-Format"]
114
+ }
115
+ } else {
116
+ format = mem.wasms[mod].format
117
+ }
118
+ format ??= "wasm64-unknown-emscripten-draft_2024_02_15"
98
119
  const handle = await AoLoader(wasm, {
99
- format: mem.wasms[mod].format,
120
+ format,
100
121
  mode: "test",
101
122
  WeaveDrive,
102
123
  })
@@ -118,11 +139,19 @@ export const connect = mem => {
118
139
  opt.tags ??= []
119
140
  for (let v of opt.tags) if (v.name === "Type") ex = true
120
141
  if (!ex) opt.tags.push({ name: "Type", value: "Process" })
121
- const { id, owner, item } = await ar.dataitem({
142
+ const {
143
+ id,
144
+ owner,
145
+ item,
146
+ tags: __tags,
147
+ } = await ar.dataitem({
148
+ item: opt.item,
122
149
  data: opt.data,
123
150
  signer: opt.signer,
124
151
  tags: tags(opt.tags),
125
152
  })
153
+ opt.tags = buildTags(null, __tags)
154
+ if (opt.item) opt.data = base64url.decode(item.data)
126
155
  await ar.postItem(item, su.jwk)
127
156
  const _tags = tags(opt.tags)
128
157
  let res = null
@@ -141,7 +170,7 @@ export const connect = mem => {
141
170
  txs: [],
142
171
  opt,
143
172
  }
144
- if (_tags["On-Boot"]) {
173
+ if (_tags["On-Boot"] || true) {
145
174
  let data = ""
146
175
  if (_tags["On-Boot"] === "Data") data = opt.data ?? ""
147
176
  else data = mem.msgs[_tags["On-Boot"]]?.data ?? ""
@@ -240,14 +269,26 @@ export const connect = mem => {
240
269
  })
241
270
  await ar.postItem(item, su.jwk)
242
271
  try {
243
- const msg = genMsg(
244
- opt.message,
245
- p,
246
- _opt.data ?? "",
247
- _opt.tags,
248
- _opt.from ?? opt.from ?? owner,
249
- mu.addr,
250
- )
272
+ let data = _opt.data ?? ""
273
+ let _tags = _opt.tags
274
+ let from = _opt.from ?? opt.from ?? owner
275
+ if (_opt.item) {
276
+ try {
277
+ data = base64url.decode(_opt.item.data)
278
+ _tags = _opt.item.tags
279
+ if (!from) {
280
+ const raw_owner = _opt.item.rawOwner
281
+ const hashBuffer = Buffer.from(
282
+ await crypto.subtle.digest("SHA-256", raw_owner),
283
+ )
284
+ from = base64url.encode(hashBuffer)
285
+ }
286
+ } catch (e) {
287
+ console.log(e)
288
+ }
289
+ }
290
+ // check: is owner=mu.addr right?
291
+ const msg = genMsg(opt.message, p, data, _tags, from, mu.addr)
251
292
  const _env = genEnv({
252
293
  pid: p.id,
253
294
  owner: p.owner,
@@ -273,13 +314,13 @@ export const connect = mem => {
273
314
  }
274
315
  }
275
316
  for (const v of res.Spawns ?? []) {
276
- const _tags = tags(v.Tags)
317
+ const __tags = tags(v.Tags)
277
318
  await spawn({
278
- module: _tags.Module,
319
+ module: __tags.Module,
279
320
  scheduler,
280
321
  tags: v.Tags,
281
322
  data: v.Data,
282
- from: _tags["From-Process"],
323
+ from: __tags["From-Process"],
283
324
  signer: mu.signer,
284
325
  })
285
326
  }
@@ -304,22 +345,27 @@ export const connect = mem => {
304
345
  const message = async opt => {
305
346
  const p = mem.env[opt.process]
306
347
  let ex = false
307
- for (let v of opt.tags) if (v.name === "Type") ex = true
308
- opt.tags = buildTags(
309
- null,
310
- mergeLeft(tags(opt.tags ?? []), {
311
- "Data-Protocol": "ao",
312
- Variant: "ao.TN.1",
313
- Type: "Message",
314
- SDK: "aoconnect",
315
- }),
316
- )
317
- const { item, id, owner } = await ar.dataitem({
318
- data: opt.data,
319
- signer: opt.signer,
320
- tags: tags(opt.tags),
321
- target: opt.process,
322
- })
348
+ let id = opt?.item?.id ?? ""
349
+ let owner = opt.owner ?? ""
350
+ let item = opt.item
351
+ if (!opt.item && opt.signer) {
352
+ for (let v of opt.tags) if (v.name === "Type") ex = true
353
+ opt.tags = buildTags(
354
+ null,
355
+ mergeLeft(tags(opt.tags ?? []), {
356
+ "Data-Protocol": "ao",
357
+ Variant: "ao.TN.1",
358
+ Type: "Message",
359
+ SDK: "aoconnect",
360
+ }),
361
+ )
362
+ ;({ item, id, owner } = await ar.dataitem({
363
+ data: opt.data,
364
+ signer: opt.signer,
365
+ tags: tags(opt.tags),
366
+ target: opt.process,
367
+ }))
368
+ }
323
369
  await ar.postItem(item, su.jwk)
324
370
  mem.msgs[id] = opt
325
371
  await assign({
@@ -355,6 +401,7 @@ export const connect = mem => {
355
401
  },
356
402
  spawn,
357
403
  assign,
404
+ ar,
358
405
  result: async opt => mem.env[opt.process].res[opt.message],
359
406
  results: async opt => {
360
407
  const p = mem.env[opt.process]
@@ -375,7 +422,11 @@ export const connect = mem => {
375
422
  },
376
423
  dryrun: async opt => {
377
424
  const p = mem.env[opt.process]
378
- const { id, owner } = await ar.dataitem({ ...opt, target: opt.process })
425
+ let id = opt.id ?? ""
426
+ let owner = opt.owner ?? ""
427
+ if (!opt.id && opt.signer) {
428
+ ;({ id, owner } = await ar.dataitem({ ...opt, target: opt.process }))
429
+ }
379
430
  try {
380
431
  const msg = genMsg(
381
432
  id,
@@ -392,6 +443,14 @@ export const connect = mem => {
392
443
  module: p.module,
393
444
  auth: mu.addr,
394
445
  })
446
+ function cloneMemory(memory) {
447
+ const buffer = memory.buffer.slice(0) // Clone the ArrayBuffer
448
+ return new WebAssembly.Memory({
449
+ initial: memory.buffer.byteLength / 65536, // Memory size in pages (64KB per page)
450
+ maximum: memory.maximum || undefined,
451
+ shared: memory.shared || false, // Retain sharing if applicable
452
+ })
453
+ }
395
454
  const res = await p.handle(p.memory, msg, _env)
396
455
  return res
397
456
  } catch (e) {
package/esm/ar.js CHANGED
@@ -18,6 +18,45 @@ class AR {
18
18
  this.host = _arweave.host
19
19
  this.protocol = _arweave.protocol
20
20
  this.arweave = Arweave.init(_arweave)
21
+ const ArweaveUtils = this.arweave.utils
22
+
23
+ this.arweave.transactions.getData = async function (id, options) {
24
+ let data = undefined
25
+ try {
26
+ data = await this.chunks.downloadChunkedData(id)
27
+ } catch (error) {}
28
+ if (!data) {
29
+ try {
30
+ const {
31
+ data: resData,
32
+ ok,
33
+ status,
34
+ statusText,
35
+ } = await this.api.get(`/${id}`, { responseType: "arraybuffer" })
36
+ if (!ok) {
37
+ throw new Error(`Bad http status code`, {
38
+ cause: { status, statusText },
39
+ })
40
+ }
41
+ data = resData
42
+ } catch (error) {
43
+ console.error(
44
+ `Error while trying to download contiguous data from gateway cache for ${id}`,
45
+ )
46
+ console.error(error)
47
+ }
48
+ }
49
+ if (!data) {
50
+ throw new Error(`${id} data was not found!`)
51
+ }
52
+ if (options && options.decode && !options.string) return data
53
+
54
+ if (options && options.decode && options.string) {
55
+ return ArweaveUtils.bufferToString(data)
56
+ }
57
+ return ArweaveUtils.bufferTob64Url(data)
58
+ }
59
+
21
60
  this.gql = new GQL({
22
61
  url: `${_arweave.protocol}://${_arweave.host}:${_arweave.port}/graphql`,
23
62
  })
@@ -196,7 +235,7 @@ class AR {
196
235
  let tx = await this.arweave.createTransaction({ data: data })
197
236
  let _tags = buildTags(null, tags)
198
237
  for (const v of _tags) tx.addTag(v.name, v.value)
199
- return this.postTx(tx, jwk)
238
+ return await this.postTx(tx, jwk)
200
239
  }
201
240
  }
202
241
 
@@ -220,10 +259,11 @@ class AR {
220
259
  }
221
260
 
222
261
  async data(txid, string = false) {
223
- return await this.arweave.transactions.getData(txid, {
262
+ const _data = await this.arweave.transactions.getData(txid, {
224
263
  decode: true,
225
264
  string,
226
265
  })
266
+ return _data
227
267
  }
228
268
  }
229
269