wao 0.10.1 → 0.10.2
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/aoconnect-base.js +196 -174
- package/cjs/armem-base.js +233 -100
- package/cjs/{ar-base.js → bar.js} +29 -30
- package/cjs/lfdb.js +4 -5
- package/cjs/server.js +66 -46
- package/cjs/tar.js +2 -2
- package/cjs/tgql.js +81 -78
- package/cjs/war.js +2 -2
- package/esm/aoconnect-base.js +24 -23
- package/esm/armem-base.js +40 -3
- package/esm/{ar-base.js → bar.js} +9 -15
- package/esm/lfdb.js +0 -1
- package/esm/server.js +5 -5
- package/esm/tar.js +1 -1
- package/esm/tgql.js +2 -2
- package/esm/war.js +1 -1
- package/package.json +1 -1
package/esm/aoconnect-base.js
CHANGED
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
dirname,
|
|
15
15
|
} from "./utils.js"
|
|
16
16
|
import weavedrive from "./weavedrive.js"
|
|
17
|
-
import { is, clone, fromPairs, map, mergeLeft, isNil } from "ramda"
|
|
17
|
+
import { is, clone, fromPairs, map, mergeLeft, isNil, dissoc, o } from "ramda"
|
|
18
18
|
|
|
19
19
|
export default ({ AR, scheduler, mu, su, cu, acc, AoLoader, ArMem } = {}) => {
|
|
20
20
|
return (mem, { cache, log = false, extensions = {} } = {}) => {
|
|
@@ -70,12 +70,12 @@ export default ({ AR, scheduler, mu, su, cu, acc, AoLoader, ArMem } = {}) => {
|
|
|
70
70
|
return {
|
|
71
71
|
Process: {
|
|
72
72
|
Id: pid,
|
|
73
|
-
Tags: (await mem.
|
|
73
|
+
Tags: (await mem.getTx(pid))?.tags ?? [],
|
|
74
74
|
Owner: owner,
|
|
75
75
|
},
|
|
76
76
|
Module: {
|
|
77
77
|
Id: module,
|
|
78
|
-
Tags: (await mem.
|
|
78
|
+
Tags: (await mem.getTx(module))?.tags ?? [],
|
|
79
79
|
},
|
|
80
80
|
}
|
|
81
81
|
}
|
|
@@ -124,7 +124,7 @@ export default ({ AR, scheduler, mu, su, cu, acc, AoLoader, ArMem } = {}) => {
|
|
|
124
124
|
format,
|
|
125
125
|
WeaveDrive: wdrive,
|
|
126
126
|
spawn: item,
|
|
127
|
-
module: await mem.
|
|
127
|
+
module: await mem.getTx(mod),
|
|
128
128
|
})
|
|
129
129
|
} catch (e) {}
|
|
130
130
|
if (!handle) return null
|
|
@@ -136,7 +136,6 @@ export default ({ AR, scheduler, mu, su, cu, acc, AoLoader, ArMem } = {}) => {
|
|
|
136
136
|
let memory = opt.memory ?? null
|
|
137
137
|
let p = {
|
|
138
138
|
extension: ext,
|
|
139
|
-
item: item?.binary,
|
|
140
139
|
format,
|
|
141
140
|
id: id,
|
|
142
141
|
epochs: [],
|
|
@@ -146,10 +145,8 @@ export default ({ AR, scheduler, mu, su, cu, acc, AoLoader, ArMem } = {}) => {
|
|
|
146
145
|
memory,
|
|
147
146
|
owner,
|
|
148
147
|
height: 0,
|
|
149
|
-
res: { [id]: res },
|
|
148
|
+
//res: { [id]: res },
|
|
150
149
|
results: [id],
|
|
151
|
-
txs: [],
|
|
152
|
-
opt,
|
|
153
150
|
}
|
|
154
151
|
if (memory) {
|
|
155
152
|
// forking...
|
|
@@ -166,11 +163,12 @@ export default ({ AR, scheduler, mu, su, cu, acc, AoLoader, ArMem } = {}) => {
|
|
|
166
163
|
res = await _module.handle(null, msg, _env)
|
|
167
164
|
p.memory = res.Memory
|
|
168
165
|
delete res.Memory
|
|
169
|
-
p.res[id] = res
|
|
166
|
+
//p.res[id] = res
|
|
170
167
|
} else {
|
|
171
168
|
p.height += 1
|
|
172
169
|
}
|
|
173
|
-
|
|
170
|
+
const _msg = { ...o(dissoc("signer"), dissoc("memory"))(opt), res }
|
|
171
|
+
await mem.set(_msg, "msgs", id)
|
|
174
172
|
if (_tags["Cron-Interval"]) {
|
|
175
173
|
let [num, unit] = _tags["Cron-Interval"].split("-")
|
|
176
174
|
let int = 0
|
|
@@ -285,19 +283,19 @@ export default ({ AR, scheduler, mu, su, cu, acc, AoLoader, ArMem } = {}) => {
|
|
|
285
283
|
p.handle = await AoLoader(wasm, {
|
|
286
284
|
format,
|
|
287
285
|
WeaveDrive: wdrive,
|
|
288
|
-
spawn:
|
|
289
|
-
module: await mem.
|
|
286
|
+
spawn: (await mem.getTx(p.id)).item,
|
|
287
|
+
module: await mem.getTx(mod),
|
|
290
288
|
})
|
|
291
289
|
mem.env[opt.process].handle = p.handle
|
|
292
290
|
}
|
|
293
291
|
const res = await p.handle(p.memory, msg, _env)
|
|
294
292
|
p.memory = res.Memory
|
|
295
293
|
delete res.Memory
|
|
296
|
-
p.res[opt.message] = res
|
|
294
|
+
//p.res[opt.message] = res
|
|
297
295
|
p.results.push(opt.message)
|
|
298
|
-
p.txs.unshift({ id, ...opt })
|
|
299
296
|
await mem.set(p, "env", opt.process)
|
|
300
|
-
|
|
297
|
+
const _msg = { ...dissoc("signer", _opt), res }
|
|
298
|
+
await mem.set(_msg, "msgs", opt.message)
|
|
301
299
|
for (const v of res.Messages ?? []) {
|
|
302
300
|
if (await mem.get("env", v.Target)) {
|
|
303
301
|
await message({
|
|
@@ -361,7 +359,7 @@ export default ({ AR, scheduler, mu, su, cu, acc, AoLoader, ArMem } = {}) => {
|
|
|
361
359
|
if (opt.for) {
|
|
362
360
|
opt.tags.push({ name: "Pushed-For", value: opt.for })
|
|
363
361
|
opt.tags.push({ name: "From-Process", value: opt.from })
|
|
364
|
-
const pr = (await mem.
|
|
362
|
+
const pr = (await mem.getTx(opt.from))?.tags ?? []
|
|
365
363
|
const module = tags(pr).Module
|
|
366
364
|
if (module) opt.tags.push({ name: "From-Module", value: module })
|
|
367
365
|
}
|
|
@@ -372,7 +370,8 @@ export default ({ AR, scheduler, mu, su, cu, acc, AoLoader, ArMem } = {}) => {
|
|
|
372
370
|
target: opt.process,
|
|
373
371
|
}))
|
|
374
372
|
}
|
|
375
|
-
|
|
373
|
+
const _msg = dissoc("signer", opt)
|
|
374
|
+
await mem.set(_msg, "msgs", id)
|
|
376
375
|
await assign({
|
|
377
376
|
message_item: item,
|
|
378
377
|
message: id,
|
|
@@ -408,20 +407,22 @@ export default ({ AR, scheduler, mu, su, cu, acc, AoLoader, ArMem } = {}) => {
|
|
|
408
407
|
spawn,
|
|
409
408
|
assign,
|
|
410
409
|
ar,
|
|
411
|
-
result: async opt =>
|
|
412
|
-
(await mem.get("env", opt.process))?.res[opt.message],
|
|
410
|
+
result: async opt => (await mem.get("msgs", opt.message))?.res,
|
|
413
411
|
results: async opt => {
|
|
414
412
|
const p = await mem.get("env", opt.process)
|
|
415
413
|
let results = []
|
|
416
414
|
const limit = opt.limit ?? 25
|
|
417
415
|
if (opt.sort === "DESC") {
|
|
418
416
|
for (let i = p.results.length - 1; 0 < i; i--) {
|
|
419
|
-
results.push({
|
|
417
|
+
results.push({
|
|
418
|
+
cursor: p.results[i],
|
|
419
|
+
node: await this.result(p.results[i]),
|
|
420
|
+
})
|
|
420
421
|
if (results.length >= limit) break
|
|
421
422
|
}
|
|
422
423
|
} else {
|
|
423
424
|
for (let i = 0; i < p.results.length; i++) {
|
|
424
|
-
results.push({ node:
|
|
425
|
+
results.push({ node: await this.result(p.results[i]) })
|
|
425
426
|
if (results.length >= limit) break
|
|
426
427
|
}
|
|
427
428
|
}
|
|
@@ -464,8 +465,8 @@ export default ({ AR, scheduler, mu, su, cu, acc, AoLoader, ArMem } = {}) => {
|
|
|
464
465
|
p.handle = await AoLoader(wasm, {
|
|
465
466
|
format,
|
|
466
467
|
WeaveDrive: wdrive,
|
|
467
|
-
spawn:
|
|
468
|
-
module: await mem.
|
|
468
|
+
spawn: (await mem.getTx(p.id)).item,
|
|
469
|
+
module: await mem.getTx(mod),
|
|
469
470
|
})
|
|
470
471
|
mem.env[opt.process].handle = p.handle
|
|
471
472
|
}
|
package/esm/armem-base.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import _Arweave from "arweave"
|
|
2
2
|
const Arweave = _Arweave.default ?? _Arweave
|
|
3
|
+
import { Bundle } from "arbundles"
|
|
3
4
|
import { compress, decompress } from "./compress.js"
|
|
4
5
|
import { last, assoc, is } from "ramda"
|
|
5
6
|
import { buildTags, tags } from "./utils.js"
|
|
7
|
+
import base64url from "base64url"
|
|
6
8
|
|
|
7
9
|
export default class ArMemBase {
|
|
8
10
|
constructor({
|
|
@@ -29,6 +31,11 @@ export default class ArMemBase {
|
|
|
29
31
|
this.scheduler = scheduler
|
|
30
32
|
this.SU_URL = SU_URL
|
|
31
33
|
}
|
|
34
|
+
async owner(di) {
|
|
35
|
+
return base64url.encode(
|
|
36
|
+
Buffer.from(await crypto.subtle.digest("SHA-256", di.rawOwner)),
|
|
37
|
+
)
|
|
38
|
+
}
|
|
32
39
|
getAnchor() {
|
|
33
40
|
return this.blocks.length === 0
|
|
34
41
|
? "Do_Uc2Sju_ffp6Ev0AnLVdPtot15rvMjP-a9VVaA5fM"
|
|
@@ -66,9 +73,9 @@ export default class ArMemBase {
|
|
|
66
73
|
}
|
|
67
74
|
}
|
|
68
75
|
initSync() {
|
|
76
|
+
this.items = {}
|
|
69
77
|
this.addrmap = {}
|
|
70
78
|
this.txs = {}
|
|
71
|
-
this.jwks = {}
|
|
72
79
|
this.blocks = []
|
|
73
80
|
this.blockmap = {}
|
|
74
81
|
this.env = {}
|
|
@@ -152,8 +159,8 @@ export default class ArMemBase {
|
|
|
152
159
|
if (this.db) {
|
|
153
160
|
for (const v of ["height", "blocks"]) this[v] = await this.get(v)
|
|
154
161
|
for (const v of [
|
|
162
|
+
"items",
|
|
155
163
|
"txs",
|
|
156
|
-
"jwks",
|
|
157
164
|
"env",
|
|
158
165
|
"modules",
|
|
159
166
|
"wasms",
|
|
@@ -191,6 +198,36 @@ export default class ArMemBase {
|
|
|
191
198
|
}
|
|
192
199
|
}
|
|
193
200
|
}
|
|
201
|
+
async getTx(id) {
|
|
202
|
+
let tx = this.txs[id]
|
|
203
|
+
if (tx.bundle) {
|
|
204
|
+
try {
|
|
205
|
+
let bundle = new Bundle(this.txs[tx.bundle].data)
|
|
206
|
+
for (let di of bundle.items) {
|
|
207
|
+
if (id === di.id) {
|
|
208
|
+
const data = di.data
|
|
209
|
+
const data_size = Buffer.byteLength(di.rawData).toString()
|
|
210
|
+
let data_type = ""
|
|
211
|
+
for (const t of di.tags)
|
|
212
|
+
if (t.name === "Content-Type") data_type = t.value
|
|
213
|
+
const owner = await this.owner(di)
|
|
214
|
+
tx = {
|
|
215
|
+
_data: { size: data_size, type: data_type },
|
|
216
|
+
anchor: di.anchor,
|
|
217
|
+
signature: di.signature,
|
|
218
|
+
recipient: di.target,
|
|
219
|
+
id: await di.id,
|
|
220
|
+
item: di,
|
|
221
|
+
owner,
|
|
222
|
+
tags: di.tags,
|
|
223
|
+
data,
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
} catch (e) {}
|
|
228
|
+
}
|
|
229
|
+
return tx
|
|
230
|
+
}
|
|
194
231
|
async getWasm(module) {
|
|
195
232
|
let mod = module ?? this.modules.aos2_0_1
|
|
196
233
|
if (!mod) throw Error("module not found")
|
|
@@ -202,7 +239,7 @@ export default class ArMemBase {
|
|
|
202
239
|
wasm = await this._getWasm(this.wasms[mod].file)
|
|
203
240
|
format = _wasm.format
|
|
204
241
|
} else {
|
|
205
|
-
const tx = await this.
|
|
242
|
+
const tx = await this.getTx(mod)
|
|
206
243
|
if (tx) {
|
|
207
244
|
wasm = Buffer.from(tx.data, "base64")
|
|
208
245
|
format = tags(tx.tags)["Module-Format"]
|
|
@@ -3,7 +3,7 @@ import { buildTags, tags as t } from "./utils.js"
|
|
|
3
3
|
import * as WarpArBundles from "warp-arbundles"
|
|
4
4
|
const pkg = WarpArBundles.default ?? WarpArBundles
|
|
5
5
|
const { DataItem } = pkg
|
|
6
|
-
import { bundleAndSignData, ArweaveSigner } from "arbundles"
|
|
6
|
+
import { Bundle, bundleAndSignData, ArweaveSigner } from "arbundles"
|
|
7
7
|
import base64url from "base64url"
|
|
8
8
|
import GQL from "./tgql.js"
|
|
9
9
|
import { last, is, includes, isNil } from "ramda"
|
|
@@ -18,21 +18,16 @@ class AR extends MAR {
|
|
|
18
18
|
this.arweave = this.mem.arweave
|
|
19
19
|
}
|
|
20
20
|
async owner(di) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
await crypto.subtle.digest("SHA-256", raw_owner),
|
|
21
|
+
return base64url.encode(
|
|
22
|
+
Buffer.from(await crypto.subtle.digest("SHA-256", di.rawOwner)),
|
|
24
23
|
)
|
|
25
|
-
return base64url.encode(hashBuffer)
|
|
26
24
|
}
|
|
27
25
|
async dataitem({ target = "", data = "1984", tags = {}, signer, item }) {
|
|
28
26
|
let di = item
|
|
29
27
|
if (!di) {
|
|
30
|
-
const
|
|
31
|
-
const _item = await signer({ data, tags: _tags, target })
|
|
28
|
+
const _item = await signer({ data, tags: buildTags(tags), target })
|
|
32
29
|
di = new DataItem(_item.raw)
|
|
33
|
-
} else
|
|
34
|
-
tags = t(di.tags)
|
|
35
|
-
}
|
|
30
|
+
} else tags = t(di.tags)
|
|
36
31
|
const owner = await this.owner(di)
|
|
37
32
|
return { id: await di.id, owner, item: di, tags }
|
|
38
33
|
}
|
|
@@ -42,8 +37,7 @@ class AR extends MAR {
|
|
|
42
37
|
;({ err, jwk } = await this.checkWallet({ jwk }))
|
|
43
38
|
if (err) return { err }
|
|
44
39
|
let tx = await this.arweave.createTransaction({ data: data })
|
|
45
|
-
|
|
46
|
-
for (const v of _tags) tx.addTag(v.name, v.value)
|
|
40
|
+
for (const v of buildTags(null, tags)) tx.addTag(v.name, v.value)
|
|
47
41
|
return await this.postTx(tx, jwk)
|
|
48
42
|
}
|
|
49
43
|
|
|
@@ -129,7 +123,7 @@ class AR extends MAR {
|
|
|
129
123
|
}
|
|
130
124
|
block.txs.push(item.id)
|
|
131
125
|
_txs.block = block.id
|
|
132
|
-
await this.mem.set(
|
|
126
|
+
await this.mem.set({ bundle: tx.id }, "txs", item.id)
|
|
133
127
|
}
|
|
134
128
|
}
|
|
135
129
|
let _tags = []
|
|
@@ -179,7 +173,7 @@ class AR extends MAR {
|
|
|
179
173
|
}
|
|
180
174
|
|
|
181
175
|
async tx(id) {
|
|
182
|
-
return await this.mem.
|
|
176
|
+
return await this.mem.getTx(id)
|
|
183
177
|
}
|
|
184
178
|
|
|
185
179
|
async data(id, _string, log) {
|
|
@@ -189,7 +183,7 @@ class AR extends MAR {
|
|
|
189
183
|
if (!isNil(_string.decode)) decode = _string.decode
|
|
190
184
|
if (!isNil(_string.string)) string = _string.string
|
|
191
185
|
}
|
|
192
|
-
let tx = await this.mem.
|
|
186
|
+
let tx = await this.mem.getTx(id)
|
|
193
187
|
let _data = tx?.data ?? null
|
|
194
188
|
if (tx?.format === 2 && _data) {
|
|
195
189
|
_data = Buffer.from(_data, "base64")
|
package/esm/lfdb.js
CHANGED
package/esm/server.js
CHANGED
|
@@ -216,13 +216,13 @@ class Server {
|
|
|
216
216
|
)
|
|
217
217
|
app.get("/:pid", (req, res) => {
|
|
218
218
|
const pid = req.params.pid
|
|
219
|
-
const edges = map(v => {
|
|
220
|
-
const tx = this.mem.
|
|
219
|
+
const edges = map(async v => {
|
|
220
|
+
const tx = await this.mem.getTx(v)
|
|
221
221
|
const _tags = tags(v.tags)
|
|
222
222
|
const mid = _tags.Message
|
|
223
|
-
const mtx = this.mem.
|
|
223
|
+
const mtx = await this.mem.getTx(mid)
|
|
224
224
|
return {
|
|
225
|
-
cursor: v
|
|
225
|
+
cursor: v,
|
|
226
226
|
node: {
|
|
227
227
|
message: {
|
|
228
228
|
id: mtx.id,
|
|
@@ -243,7 +243,7 @@ class Server {
|
|
|
243
243
|
},
|
|
244
244
|
},
|
|
245
245
|
}
|
|
246
|
-
})(reverse(this.mem.env[pid]?.
|
|
246
|
+
})(reverse(this.mem.env[pid]?.results ?? [])) // need mod
|
|
247
247
|
res.json({ page_info: { has_next_page: false }, edges })
|
|
248
248
|
})
|
|
249
249
|
const server = app.listen(this.ports.su, () =>
|
package/esm/tar.js
CHANGED
package/esm/tgql.js
CHANGED
|
@@ -10,6 +10,7 @@ const subs = {
|
|
|
10
10
|
parent: ["id"],
|
|
11
11
|
bundledIn: ["id"],
|
|
12
12
|
}
|
|
13
|
+
|
|
13
14
|
const field = (key, val = true) => {
|
|
14
15
|
if (includes(key, ["id", "anchor", "signature", "recipient"])) {
|
|
15
16
|
return { key }
|
|
@@ -101,8 +102,7 @@ export default class GQL {
|
|
|
101
102
|
break
|
|
102
103
|
}
|
|
103
104
|
if (!isNil(opt.after) && count === 0 && !after) continue
|
|
104
|
-
let tx = this.mem.
|
|
105
|
-
|
|
105
|
+
let tx = await this.mem.getTx(v2)
|
|
106
106
|
if (!isNil(ids) && ids.length > 0) {
|
|
107
107
|
if (!includes(tx.id, ids)) continue
|
|
108
108
|
}
|
package/esm/war.js
CHANGED