wao 0.12.4 → 0.13.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.
Files changed (572) hide show
  1. package/cjs/aoconnect-base.js +307 -167
  2. package/cjs/armem-base.js +38 -28
  3. package/cjs/bar.js +260 -193
  4. package/cjs/hb.js +418 -0
  5. package/cjs/index.js +7 -0
  6. package/cjs/lua/aos_mainnet.wasm +0 -0
  7. package/cjs/server.js +425 -231
  8. package/cjs/waosm-node/waosm_bg.wasm.js +19 -0
  9. package/cjs/waosm-node.js +8 -22
  10. package/cjs/weavedb.js +59 -49
  11. package/cjs/weavedrive.js +24 -19
  12. package/esm/aoconnect-base.js +123 -55
  13. package/esm/armem-base.js +9 -4
  14. package/esm/bar.js +30 -6
  15. package/esm/hb.js +121 -0
  16. package/esm/index.js +2 -1
  17. package/esm/lua/aos_mainnet.wasm +0 -0
  18. package/esm/server.js +172 -21
  19. package/esm/waosm-node/waosm_bg.wasm.js +14 -0
  20. package/esm/waosm-node.js +6 -22
  21. package/esm/weavedb.js +15 -11
  22. package/esm/weavedrive.js +13 -11
  23. package/package.json +4 -1
  24. package/esm/.cache/data.mdb +0 -0
  25. package/esm/.cache/lock.mdb +0 -0
  26. package/esm/.db/100040/data/1/123.json +0 -1
  27. package/esm/.db/103252/data/0/13315.json +0 -1
  28. package/esm/.db/103252/data/1/120.json +0 -1
  29. package/esm/.db/103252/data/1/123.json +0 -1
  30. package/esm/.db/105470/data/0/0.json +0 -1
  31. package/esm/.db/105470/data/1/120.json +0 -1
  32. package/esm/.db/105470/data/1/123.json +0 -1
  33. package/esm/.db/105470/data/3/104.json +0 -1
  34. package/esm/.db/105667/data/ppl/bob.json +0 -1
  35. package/esm/.db/105869/data/1/120.json +0 -1
  36. package/esm/.db/105869/data/1/123.json +0 -1
  37. package/esm/.db/113125/data/1/example.json +0 -1
  38. package/esm/.db/116234/data/1/123.json +0 -1
  39. package/esm/.db/119911/data/1/120.json +0 -1
  40. package/esm/.db/119911/data/1/123.json +0 -1
  41. package/esm/.db/122989/data/0/0.json +0 -1
  42. package/esm/.db/122989/data/1/120.json +0 -1
  43. package/esm/.db/122989/data/1/123.json +0 -1
  44. package/esm/.db/125755/data/1/123.json +0 -1
  45. package/esm/.db/126241/data/1/123.json +0 -1
  46. package/esm/.db/129099/data/1/123.json +0 -1
  47. package/esm/.db/129781/data/0/14083.json +0 -1
  48. package/esm/.db/129781/data/1/120.json +0 -1
  49. package/esm/.db/129781/data/1/123.json +0 -1
  50. package/esm/.db/129781/data/15/0.json +0 -1
  51. package/esm/.db/132860/data/0/13315.json +0 -1
  52. package/esm/.db/132860/data/1/120.json +0 -1
  53. package/esm/.db/132860/data/1/123.json +0 -1
  54. package/esm/.db/134721/data/1/123.json +0 -1
  55. package/esm/.db/137408/data/ppl/bob.json +0 -1
  56. package/esm/.db/137556/data/1/123.json +0 -1
  57. package/esm/.db/143417/data/1/123.json +0 -1
  58. package/esm/.db/143799/data/1/123.json +0 -1
  59. package/esm/.db/146558/data/0/0.json +0 -1
  60. package/esm/.db/146558/data/1/120.json +0 -1
  61. package/esm/.db/146558/data/1/123.json +0 -1
  62. package/esm/.db/153145/data/1/123.json +0 -1
  63. package/esm/.db/153912/data/1/example.json +0 -1
  64. package/esm/.db/154536/data/0/13315.json +0 -1
  65. package/esm/.db/154536/data/1/120.json +0 -1
  66. package/esm/.db/154536/data/1/123.json +0 -1
  67. package/esm/.db/158777/data/1/123.json +0 -1
  68. package/esm/.db/170678/data/0/13315.json +0 -1
  69. package/esm/.db/170678/data/1/120.json +0 -1
  70. package/esm/.db/170678/data/1/123.json +0 -1
  71. package/esm/.db/17434/data/1/123.json +0 -1
  72. package/esm/.db/176113/data/1/123.json +0 -1
  73. package/esm/.db/179669/data/0/13315.json +0 -1
  74. package/esm/.db/179669/data/1/120.json +0 -1
  75. package/esm/.db/179669/data/1/123.json +0 -1
  76. package/esm/.db/183368/data/1/120.json +0 -1
  77. package/esm/.db/183368/data/1/123.json +0 -1
  78. package/esm/.db/188491/data/0/14083.json +0 -1
  79. package/esm/.db/188491/data/1/120.json +0 -1
  80. package/esm/.db/188491/data/1/123.json +0 -1
  81. package/esm/.db/188491/data/15/0.json +0 -1
  82. package/esm/.db/189189/data/ppl/bob.json +0 -1
  83. package/esm/.db/195025/data/1/120.json +0 -1
  84. package/esm/.db/195025/data/1/123.json +0 -1
  85. package/esm/.db/19852/data/1/123.json +0 -1
  86. package/esm/.db/204968/data/1/123.json +0 -1
  87. package/esm/.db/207069/data/0/0.json +0 -1
  88. package/esm/.db/207069/data/1/120.json +0 -1
  89. package/esm/.db/207069/data/1/123.json +0 -1
  90. package/esm/.db/211038/data/1/120.json +0 -1
  91. package/esm/.db/211038/data/1/123.json +0 -1
  92. package/esm/.db/211580/data/1/120.json +0 -1
  93. package/esm/.db/211580/data/1/123.json +0 -1
  94. package/esm/.db/214305/data/0/0.json +0 -1
  95. package/esm/.db/214305/data/1/120.json +0 -1
  96. package/esm/.db/214305/data/1/123.json +0 -1
  97. package/esm/.db/214712/data/0/13315.json +0 -1
  98. package/esm/.db/214712/data/1/120.json +0 -1
  99. package/esm/.db/214712/data/1/123.json +0 -1
  100. package/esm/.db/218886/data/0/14083.json +0 -1
  101. package/esm/.db/218886/data/1/120.json +0 -1
  102. package/esm/.db/218886/data/1/123.json +0 -1
  103. package/esm/.db/218886/data/15/0.json +0 -1
  104. package/esm/.db/221009/data/1/123.json +0 -1
  105. package/esm/.db/221818/data/1/120.json +0 -1
  106. package/esm/.db/221818/data/1/123.json +0 -1
  107. package/esm/.db/226668/data/0/13315.json +0 -1
  108. package/esm/.db/226668/data/1/120.json +0 -1
  109. package/esm/.db/226668/data/1/123.json +0 -1
  110. package/esm/.db/226981/data/0/123.json +0 -1
  111. package/esm/.db/235331/data/0/13315.json +0 -1
  112. package/esm/.db/235331/data/1/120.json +0 -1
  113. package/esm/.db/235331/data/1/123.json +0 -1
  114. package/esm/.db/247863/data/1/123.json +0 -1
  115. package/esm/.db/247918/data/0/0.json +0 -1
  116. package/esm/.db/247918/data/1/120.json +0 -1
  117. package/esm/.db/247918/data/1/123.json +0 -1
  118. package/esm/.db/247918/data/3/104.json +0 -1
  119. package/esm/.db/250384/data/1/123.json +0 -1
  120. package/esm/.db/253205/data/1/120.json +0 -1
  121. package/esm/.db/253205/data/1/123.json +0 -1
  122. package/esm/.db/26452/data/1/120.json +0 -1
  123. package/esm/.db/26452/data/1/123.json +0 -1
  124. package/esm/.db/265430/data/1/120.json +0 -1
  125. package/esm/.db/265430/data/1/123.json +0 -1
  126. package/esm/.db/269049/data/0/0.json +0 -1
  127. package/esm/.db/269049/data/1/120.json +0 -1
  128. package/esm/.db/269049/data/1/123.json +0 -1
  129. package/esm/.db/273652/data/0/0.json +0 -1
  130. package/esm/.db/273652/data/1/120.json +0 -1
  131. package/esm/.db/273652/data/1/123.json +0 -1
  132. package/esm/.db/281035/data/0/0.json +0 -1
  133. package/esm/.db/281035/data/1/120.json +0 -1
  134. package/esm/.db/281035/data/1/123.json +0 -1
  135. package/esm/.db/281140/data/0/13315.json +0 -1
  136. package/esm/.db/281140/data/1/120.json +0 -1
  137. package/esm/.db/281140/data/1/123.json +0 -1
  138. package/esm/.db/295732/data/ppl/bob.json +0 -1
  139. package/esm/.db/296113/data/1/123.json +0 -1
  140. package/esm/.db/297154/data/0/13315.json +0 -1
  141. package/esm/.db/297154/data/1/120.json +0 -1
  142. package/esm/.db/297154/data/1/123.json +0 -1
  143. package/esm/.db/304770/data/1/120.json +0 -1
  144. package/esm/.db/304770/data/1/123.json +0 -1
  145. package/esm/.db/3081/data/0/0.json +0 -1
  146. package/esm/.db/3081/data/1/120.json +0 -1
  147. package/esm/.db/3081/data/1/123.json +0 -1
  148. package/esm/.db/310793/data/1/120.json +0 -1
  149. package/esm/.db/310793/data/1/123.json +0 -1
  150. package/esm/.db/317310/data/1/123.json +0 -1
  151. package/esm/.db/317819/data/1/example.json +0 -1
  152. package/esm/.db/319464/data/0/0.json +0 -1
  153. package/esm/.db/319464/data/1/120.json +0 -1
  154. package/esm/.db/319464/data/1/123.json +0 -1
  155. package/esm/.db/32053/data/1/120.json +0 -1
  156. package/esm/.db/32053/data/1/123.json +0 -1
  157. package/esm/.db/322473/data/ppl/bob.json +0 -1
  158. package/esm/.db/323300/data/1/123.json +0 -1
  159. package/esm/.db/323840/data/0/0.json +0 -1
  160. package/esm/.db/323840/data/1/120.json +0 -1
  161. package/esm/.db/323840/data/1/123.json +0 -1
  162. package/esm/.db/328731/data/0/0.json +0 -1
  163. package/esm/.db/328731/data/1/120.json +0 -1
  164. package/esm/.db/328731/data/1/123.json +0 -1
  165. package/esm/.db/334158/data/1/example.json +0 -1
  166. package/esm/.db/334577/data/1/example.json +0 -1
  167. package/esm/.db/339914/data/1/123.json +0 -1
  168. package/esm/.db/34265/data/0/0.json +0 -1
  169. package/esm/.db/34265/data/1/120.json +0 -1
  170. package/esm/.db/34265/data/1/123.json +0 -1
  171. package/esm/.db/346364/data/1/123.json +0 -1
  172. package/esm/.db/349791/data/0/14083.json +0 -1
  173. package/esm/.db/349791/data/1/120.json +0 -1
  174. package/esm/.db/349791/data/1/123.json +0 -1
  175. package/esm/.db/349791/data/15/0.json +0 -1
  176. package/esm/.db/350767/data/ppl/bob.json +0 -1
  177. package/esm/.db/352310/data/0/13315.json +0 -1
  178. package/esm/.db/352310/data/1/120.json +0 -1
  179. package/esm/.db/352310/data/1/123.json +0 -1
  180. package/esm/.db/35438/data/1/123.json +0 -1
  181. package/esm/.db/354670/data/0/13315.json +0 -1
  182. package/esm/.db/354670/data/1/120.json +0 -1
  183. package/esm/.db/354670/data/1/123.json +0 -1
  184. package/esm/.db/354805/data/0/0.json +0 -1
  185. package/esm/.db/354805/data/1/120.json +0 -1
  186. package/esm/.db/354805/data/1/123.json +0 -1
  187. package/esm/.db/358368/data/1/example.json +0 -1
  188. package/esm/.db/358831/data/1/123.json +0 -1
  189. package/esm/.db/360133/data/0/0.json +0 -1
  190. package/esm/.db/360133/data/1/120.json +0 -1
  191. package/esm/.db/360133/data/1/123.json +0 -1
  192. package/esm/.db/367925/data/0/13315.json +0 -1
  193. package/esm/.db/367925/data/1/120.json +0 -1
  194. package/esm/.db/367925/data/1/123.json +0 -1
  195. package/esm/.db/369638/data/1/123.json +0 -1
  196. package/esm/.db/3700/data/1/120.json +0 -1
  197. package/esm/.db/3700/data/1/123.json +0 -1
  198. package/esm/.db/374988/data/0/0.json +0 -1
  199. package/esm/.db/374988/data/1/120.json +0 -1
  200. package/esm/.db/374988/data/1/123.json +0 -1
  201. package/esm/.db/380018/data/1/123.json +0 -1
  202. package/esm/.db/380021/data/1/123.json +0 -1
  203. package/esm/.db/386761/data/1/123.json +0 -1
  204. package/esm/.db/387217/data/0/13315.json +0 -1
  205. package/esm/.db/387217/data/1/120.json +0 -1
  206. package/esm/.db/387217/data/1/123.json +0 -1
  207. package/esm/.db/392652/data/1/123.json +0 -1
  208. package/esm/.db/392692/data/0/13315.json +0 -1
  209. package/esm/.db/392692/data/1/120.json +0 -1
  210. package/esm/.db/392692/data/1/123.json +0 -1
  211. package/esm/.db/396339/data/1/123.json +0 -1
  212. package/esm/.db/404348/data/1/123.json +0 -1
  213. package/esm/.db/405894/data/0/14083.json +0 -1
  214. package/esm/.db/405894/data/1/120.json +0 -1
  215. package/esm/.db/405894/data/1/123.json +0 -1
  216. package/esm/.db/405894/data/15/0.json +0 -1
  217. package/esm/.db/406165/data/1/example.json +0 -1
  218. package/esm/.db/407316/data/ppl/bob.json +0 -1
  219. package/esm/.db/407987/data/1/123.json +0 -1
  220. package/esm/.db/410181/data/1/123.json +0 -1
  221. package/esm/.db/411981/data/1/120.json +0 -1
  222. package/esm/.db/411981/data/1/123.json +0 -1
  223. package/esm/.db/416278/data/1/120.json +0 -1
  224. package/esm/.db/416278/data/1/123.json +0 -1
  225. package/esm/.db/418449/data/1/123.json +0 -1
  226. package/esm/.db/425620/data/1/120.json +0 -1
  227. package/esm/.db/425620/data/1/123.json +0 -1
  228. package/esm/.db/429727/data/1/123.json +0 -1
  229. package/esm/.db/435030/data/1/123.json +0 -1
  230. package/esm/.db/444362/data/1/120.json +0 -1
  231. package/esm/.db/444362/data/1/123.json +0 -1
  232. package/esm/.db/446985/data/1/123.json +0 -1
  233. package/esm/.db/451355/data/1/120.json +0 -1
  234. package/esm/.db/451355/data/1/123.json +0 -1
  235. package/esm/.db/45640/data/1/123.json +0 -1
  236. package/esm/.db/46155/data/0/0.json +0 -1
  237. package/esm/.db/46155/data/0/13315.json +0 -1
  238. package/esm/.db/46155/data/1/120.json +0 -1
  239. package/esm/.db/46155/data/1/123.json +0 -1
  240. package/esm/.db/46528/data/1/123.json +0 -1
  241. package/esm/.db/466476/data/1/123.json +0 -1
  242. package/esm/.db/467578/data/0/0.json +0 -1
  243. package/esm/.db/467578/data/1/120.json +0 -1
  244. package/esm/.db/467578/data/1/123.json +0 -1
  245. package/esm/.db/472245/data/1/123.json +0 -1
  246. package/esm/.db/474238/data/1/example.json +0 -1
  247. package/esm/.db/477291/data/1/123.json +0 -1
  248. package/esm/.db/477375/data/1/120.json +0 -1
  249. package/esm/.db/477375/data/1/123.json +0 -1
  250. package/esm/.db/479960/data/1/123.json +0 -1
  251. package/esm/.db/482327/data/1/123.json +0 -1
  252. package/esm/.db/487117/data/1/example.json +0 -1
  253. package/esm/.db/495075/data/1/123.json +0 -1
  254. package/esm/.db/498660/data/1/123.json +0 -1
  255. package/esm/.db/510578/data/1/123.json +0 -1
  256. package/esm/.db/514521/data/1/123.json +0 -1
  257. package/esm/.db/524536/data/1/120.json +0 -1
  258. package/esm/.db/524536/data/1/123.json +0 -1
  259. package/esm/.db/52751/data/1/example.json +0 -1
  260. package/esm/.db/530599/data/ppl/bob.json +0 -1
  261. package/esm/.db/536579/data/1/123.json +0 -1
  262. package/esm/.db/539183/data/1/123.json +0 -1
  263. package/esm/.db/539222/data/1/example.json +0 -1
  264. package/esm/.db/542071/data/0/0.json +0 -1
  265. package/esm/.db/542071/data/0/13315.json +0 -1
  266. package/esm/.db/542071/data/1/120.json +0 -1
  267. package/esm/.db/542071/data/1/123.json +0 -1
  268. package/esm/.db/542939/data/ppl/bob.json +0 -1
  269. package/esm/.db/547077/data/1/123.json +0 -1
  270. package/esm/.db/548947/data/ppl/bob.json +0 -1
  271. package/esm/.db/551385/data/0/0.json +0 -1
  272. package/esm/.db/551385/data/1/120.json +0 -1
  273. package/esm/.db/551385/data/1/123.json +0 -1
  274. package/esm/.db/553486/data/0/0.json +0 -1
  275. package/esm/.db/553486/data/1/120.json +0 -1
  276. package/esm/.db/553486/data/1/123.json +0 -1
  277. package/esm/.db/554578/data/1/123.json +0 -1
  278. package/esm/.db/555963/data/1/123.json +0 -1
  279. package/esm/.db/556201/data/1/123.json +0 -1
  280. package/esm/.db/572000/data/1/123.json +0 -1
  281. package/esm/.db/572151/data/1/123.json +0 -1
  282. package/esm/.db/573301/data/1/123.json +0 -1
  283. package/esm/.db/579648/data/0/0.json +0 -1
  284. package/esm/.db/579648/data/1/120.json +0 -1
  285. package/esm/.db/579648/data/1/123.json +0 -1
  286. package/esm/.db/579648/data/3/104.json +0 -1
  287. package/esm/.db/582311/data/1/example.json +0 -1
  288. package/esm/.db/587351/data/0/14083.json +0 -1
  289. package/esm/.db/587351/data/1/120.json +0 -1
  290. package/esm/.db/587351/data/1/123.json +0 -1
  291. package/esm/.db/587351/data/15/0.json +0 -1
  292. package/esm/.db/588867/data/0/0.json +0 -1
  293. package/esm/.db/588867/data/1/120.json +0 -1
  294. package/esm/.db/588867/data/1/123.json +0 -1
  295. package/esm/.db/589730/data/1/123.json +0 -1
  296. package/esm/.db/591738/data/0/13315.json +0 -1
  297. package/esm/.db/591738/data/1/120.json +0 -1
  298. package/esm/.db/591738/data/1/123.json +0 -1
  299. package/esm/.db/593460/data/1/123.json +0 -1
  300. package/esm/.db/595304/data/1/123.json +0 -1
  301. package/esm/.db/595772/data/0/13315.json +0 -1
  302. package/esm/.db/595772/data/1/120.json +0 -1
  303. package/esm/.db/595772/data/1/123.json +0 -1
  304. package/esm/.db/596051/data/0/0.json +0 -1
  305. package/esm/.db/596051/data/1/120.json +0 -1
  306. package/esm/.db/596051/data/1/123.json +0 -1
  307. package/esm/.db/601728/data/1/120.json +0 -1
  308. package/esm/.db/601728/data/1/123.json +0 -1
  309. package/esm/.db/619154/data/1/123.json +0 -1
  310. package/esm/.db/620185/data/1/123.json +0 -1
  311. package/esm/.db/623179/data/1/123.json +0 -1
  312. package/esm/.db/623265/data/1/123.json +0 -1
  313. package/esm/.db/630002/data/1/120.json +0 -1
  314. package/esm/.db/630002/data/1/123.json +0 -1
  315. package/esm/.db/631961/data/1/123.json +0 -1
  316. package/esm/.db/635637/data/0/14083.json +0 -1
  317. package/esm/.db/635637/data/1/120.json +0 -1
  318. package/esm/.db/635637/data/1/123.json +0 -1
  319. package/esm/.db/635637/data/15/0.json +0 -1
  320. package/esm/.db/636670/data/1/example.json +0 -1
  321. package/esm/.db/640527/data/0/0.json +0 -1
  322. package/esm/.db/640527/data/1/120.json +0 -1
  323. package/esm/.db/640527/data/1/123.json +0 -1
  324. package/esm/.db/644020/data/0/13315.json +0 -1
  325. package/esm/.db/644020/data/1/120.json +0 -1
  326. package/esm/.db/644020/data/1/123.json +0 -1
  327. package/esm/.db/64462/data/0/14083.json +0 -1
  328. package/esm/.db/64462/data/1/120.json +0 -1
  329. package/esm/.db/64462/data/1/123.json +0 -1
  330. package/esm/.db/64462/data/15/0.json +0 -1
  331. package/esm/.db/646266/data/1/123.json +0 -1
  332. package/esm/.db/650764/data/1/120.json +0 -1
  333. package/esm/.db/650764/data/1/123.json +0 -1
  334. package/esm/.db/654655/data/0/0.json +0 -1
  335. package/esm/.db/654655/data/1/120.json +0 -1
  336. package/esm/.db/654655/data/1/123.json +0 -1
  337. package/esm/.db/658164/data/1/120.json +0 -1
  338. package/esm/.db/658164/data/1/123.json +0 -1
  339. package/esm/.db/65937/data/1/123.json +0 -1
  340. package/esm/.db/659738/data/0/13315.json +0 -1
  341. package/esm/.db/659738/data/1/120.json +0 -1
  342. package/esm/.db/659738/data/1/123.json +0 -1
  343. package/esm/.db/660517/data/0/13315.json +0 -1
  344. package/esm/.db/660517/data/1/120.json +0 -1
  345. package/esm/.db/660517/data/1/123.json +0 -1
  346. package/esm/.db/664564/data/1/123.json +0 -1
  347. package/esm/.db/672001/data/1/example.json +0 -1
  348. package/esm/.db/674620/data/1/123.json +0 -1
  349. package/esm/.db/67532/data/1/123.json +0 -1
  350. package/esm/.db/675670/data/1/120.json +0 -1
  351. package/esm/.db/675670/data/1/123.json +0 -1
  352. package/esm/.db/686538/data/1/123.json +0 -1
  353. package/esm/.db/691017/data/1/123.json +0 -1
  354. package/esm/.db/691716/data/1/120.json +0 -1
  355. package/esm/.db/691716/data/1/123.json +0 -1
  356. package/esm/.db/693105/data/0/14083.json +0 -1
  357. package/esm/.db/693105/data/1/120.json +0 -1
  358. package/esm/.db/693105/data/1/123.json +0 -1
  359. package/esm/.db/693105/data/15/0.json +0 -1
  360. package/esm/.db/694486/data/1/123.json +0 -1
  361. package/esm/.db/702106/data/1/120.json +0 -1
  362. package/esm/.db/702106/data/1/123.json +0 -1
  363. package/esm/.db/7047/data/1/123.json +0 -1
  364. package/esm/.db/705954/data/0/13315.json +0 -1
  365. package/esm/.db/705954/data/1/120.json +0 -1
  366. package/esm/.db/705954/data/1/123.json +0 -1
  367. package/esm/.db/710967/data/1/120.json +0 -1
  368. package/esm/.db/710967/data/1/123.json +0 -1
  369. package/esm/.db/715883/data/0/13315.json +0 -1
  370. package/esm/.db/715883/data/1/120.json +0 -1
  371. package/esm/.db/715883/data/1/123.json +0 -1
  372. package/esm/.db/717358/data/1/120.json +0 -1
  373. package/esm/.db/717358/data/1/123.json +0 -1
  374. package/esm/.db/71999/data/0/13315.json +0 -1
  375. package/esm/.db/71999/data/1/120.json +0 -1
  376. package/esm/.db/71999/data/1/123.json +0 -1
  377. package/esm/.db/720364/data/1/123.json +0 -1
  378. package/esm/.db/727249/data/1/120.json +0 -1
  379. package/esm/.db/727249/data/1/123.json +0 -1
  380. package/esm/.db/728258/data/1/example.json +0 -1
  381. package/esm/.db/728986/data/0/13315.json +0 -1
  382. package/esm/.db/728986/data/1/120.json +0 -1
  383. package/esm/.db/728986/data/1/123.json +0 -1
  384. package/esm/.db/732768/data/1/120.json +0 -1
  385. package/esm/.db/732768/data/1/123.json +0 -1
  386. package/esm/.db/733885/data/1/123.json +0 -1
  387. package/esm/.db/736192/data/0/0.json +0 -1
  388. package/esm/.db/736192/data/1/120.json +0 -1
  389. package/esm/.db/736192/data/1/123.json +0 -1
  390. package/esm/.db/73856/data/0/0.json +0 -1
  391. package/esm/.db/73856/data/1/120.json +0 -1
  392. package/esm/.db/73856/data/1/123.json +0 -1
  393. package/esm/.db/738577/data/1/123.json +0 -1
  394. package/esm/.db/744844/data/1/123.json +0 -1
  395. package/esm/.db/745738/data/1/123.json +0 -1
  396. package/esm/.db/747240/data/1/123.json +0 -1
  397. package/esm/.db/749115/data/0/0.json +0 -1
  398. package/esm/.db/749115/data/1/120.json +0 -1
  399. package/esm/.db/749115/data/1/123.json +0 -1
  400. package/esm/.db/749514/data/0/0.json +0 -1
  401. package/esm/.db/749514/data/1/120.json +0 -1
  402. package/esm/.db/749514/data/1/123.json +0 -1
  403. package/esm/.db/754982/data/1/123.json +0 -1
  404. package/esm/.db/765281/data/0/13315.json +0 -1
  405. package/esm/.db/765281/data/1/120.json +0 -1
  406. package/esm/.db/765281/data/1/123.json +0 -1
  407. package/esm/.db/765521/data/0/14083.json +0 -1
  408. package/esm/.db/765521/data/1/120.json +0 -1
  409. package/esm/.db/765521/data/1/123.json +0 -1
  410. package/esm/.db/765521/data/15/0.json +0 -1
  411. package/esm/.db/766288/data/ppl/bob.json +0 -1
  412. package/esm/.db/766864/data/1/123.json +0 -1
  413. package/esm/.db/770788/data/0/14083.json +0 -1
  414. package/esm/.db/770788/data/1/120.json +0 -1
  415. package/esm/.db/770788/data/1/123.json +0 -1
  416. package/esm/.db/770788/data/15/0.json +0 -1
  417. package/esm/.db/774499/data/1/example.json +0 -1
  418. package/esm/.db/774617/data/ppl/bob.json +0 -1
  419. package/esm/.db/775617/data/1/123.json +0 -1
  420. package/esm/.db/779782/data/1/123.json +0 -1
  421. package/esm/.db/779921/data/1/123.json +0 -1
  422. package/esm/.db/782910/data/1/123.json +0 -1
  423. package/esm/.db/783279/data/0/13315.json +0 -1
  424. package/esm/.db/783279/data/1/120.json +0 -1
  425. package/esm/.db/783279/data/1/123.json +0 -1
  426. package/esm/.db/785515/data/1/123.json +0 -1
  427. package/esm/.db/791284/data/0/0.json +0 -1
  428. package/esm/.db/791284/data/1/120.json +0 -1
  429. package/esm/.db/791284/data/1/123.json +0 -1
  430. package/esm/.db/791361/data/0/14083.json +0 -1
  431. package/esm/.db/791361/data/1/120.json +0 -1
  432. package/esm/.db/791361/data/1/123.json +0 -1
  433. package/esm/.db/791361/data/15/0.json +0 -1
  434. package/esm/.db/791754/data/1/120.json +0 -1
  435. package/esm/.db/791754/data/1/123.json +0 -1
  436. package/esm/.db/792232/data/0/13315.json +0 -1
  437. package/esm/.db/792232/data/1/120.json +0 -1
  438. package/esm/.db/792232/data/1/123.json +0 -1
  439. package/esm/.db/792777/data/0/13315.json +0 -1
  440. package/esm/.db/792777/data/1/120.json +0 -1
  441. package/esm/.db/792777/data/1/123.json +0 -1
  442. package/esm/.db/793249/data/0/123.json +0 -1
  443. package/esm/.db/795512/data/0/0.json +0 -1
  444. package/esm/.db/795512/data/1/120.json +0 -1
  445. package/esm/.db/795512/data/1/123.json +0 -1
  446. package/esm/.db/795512/data/3/104.json +0 -1
  447. package/esm/.db/796663/data/1/123.json +0 -1
  448. package/esm/.db/797304/data/0/0.json +0 -1
  449. package/esm/.db/797304/data/1/120.json +0 -1
  450. package/esm/.db/797304/data/1/123.json +0 -1
  451. package/esm/.db/797304/data/3/104.json +0 -1
  452. package/esm/.db/800834/data/1/123.json +0 -1
  453. package/esm/.db/806421/data/1/120.json +0 -1
  454. package/esm/.db/806421/data/1/123.json +0 -1
  455. package/esm/.db/81623/data/0/14083.json +0 -1
  456. package/esm/.db/81623/data/1/120.json +0 -1
  457. package/esm/.db/81623/data/1/123.json +0 -1
  458. package/esm/.db/81623/data/15/0.json +0 -1
  459. package/esm/.db/81941/data/1/120.json +0 -1
  460. package/esm/.db/81941/data/1/123.json +0 -1
  461. package/esm/.db/820340/data/0/0.json +0 -1
  462. package/esm/.db/820340/data/1/120.json +0 -1
  463. package/esm/.db/820340/data/1/123.json +0 -1
  464. package/esm/.db/821932/data/1/120.json +0 -1
  465. package/esm/.db/821932/data/1/123.json +0 -1
  466. package/esm/.db/823440/data/1/123.json +0 -1
  467. package/esm/.db/823889/data/1/120.json +0 -1
  468. package/esm/.db/823889/data/1/123.json +0 -1
  469. package/esm/.db/823896/data/1/123.json +0 -1
  470. package/esm/.db/836077/data/0/14083.json +0 -1
  471. package/esm/.db/836077/data/1/120.json +0 -1
  472. package/esm/.db/836077/data/1/123.json +0 -1
  473. package/esm/.db/836077/data/15/0.json +0 -1
  474. package/esm/.db/837341/data/1/123.json +0 -1
  475. package/esm/.db/844882/data/1/123.json +0 -1
  476. package/esm/.db/847654/data/1/example.json +0 -1
  477. package/esm/.db/856010/data/0/13315.json +0 -1
  478. package/esm/.db/856010/data/1/120.json +0 -1
  479. package/esm/.db/856010/data/1/123.json +0 -1
  480. package/esm/.db/856047/data/1/120.json +0 -1
  481. package/esm/.db/856047/data/1/123.json +0 -1
  482. package/esm/.db/856820/data/1/123.json +0 -1
  483. package/esm/.db/857266/data/1/123.json +0 -1
  484. package/esm/.db/86017/data/0/13315.json +0 -1
  485. package/esm/.db/86017/data/1/120.json +0 -1
  486. package/esm/.db/86017/data/1/123.json +0 -1
  487. package/esm/.db/862600/data/1/120.json +0 -1
  488. package/esm/.db/862600/data/1/123.json +0 -1
  489. package/esm/.db/871866/data/0/13315.json +0 -1
  490. package/esm/.db/871866/data/1/120.json +0 -1
  491. package/esm/.db/871866/data/1/123.json +0 -1
  492. package/esm/.db/875359/data/0/0.json +0 -1
  493. package/esm/.db/875359/data/1/120.json +0 -1
  494. package/esm/.db/875359/data/1/123.json +0 -1
  495. package/esm/.db/875359/data/3/104.json +0 -1
  496. package/esm/.db/876330/data/1/example.json +0 -1
  497. package/esm/.db/880182/data/1/123.json +0 -1
  498. package/esm/.db/882138/data/0/0.json +0 -1
  499. package/esm/.db/882138/data/1/120.json +0 -1
  500. package/esm/.db/882138/data/1/123.json +0 -1
  501. package/esm/.db/882722/data/1/example.json +0 -1
  502. package/esm/.db/885449/data/ppl/bob.json +0 -1
  503. package/esm/.db/893417/data/1/example.json +0 -1
  504. package/esm/.db/897575/data/1/example.json +0 -1
  505. package/esm/.db/897832/data/0/13315.json +0 -1
  506. package/esm/.db/897832/data/1/120.json +0 -1
  507. package/esm/.db/897832/data/1/123.json +0 -1
  508. package/esm/.db/898043/data/0/0.json +0 -1
  509. package/esm/.db/898043/data/1/120.json +0 -1
  510. package/esm/.db/898043/data/1/123.json +0 -1
  511. package/esm/.db/898201/data/ppl/bob.json +0 -1
  512. package/esm/.db/900442/data/1/123.json +0 -1
  513. package/esm/.db/900800/data/0/0.json +0 -1
  514. package/esm/.db/900800/data/1/120.json +0 -1
  515. package/esm/.db/900800/data/1/123.json +0 -1
  516. package/esm/.db/910535/data/1/120.json +0 -1
  517. package/esm/.db/910535/data/1/123.json +0 -1
  518. package/esm/.db/911132/data/1/120.json +0 -1
  519. package/esm/.db/911132/data/1/123.json +0 -1
  520. package/esm/.db/913152/data/1/120.json +0 -1
  521. package/esm/.db/913152/data/1/123.json +0 -1
  522. package/esm/.db/91378/data/1/123.json +0 -1
  523. package/esm/.db/918654/data/1/example.json +0 -1
  524. package/esm/.db/929039/data/ppl/bob.json +0 -1
  525. package/esm/.db/932648/data/1/123.json +0 -1
  526. package/esm/.db/936016/data/1/example.json +0 -1
  527. package/esm/.db/936843/data/1/123.json +0 -1
  528. package/esm/.db/940099/data/1/example.json +0 -1
  529. package/esm/.db/941807/data/1/120.json +0 -1
  530. package/esm/.db/941807/data/1/123.json +0 -1
  531. package/esm/.db/941934/data/0/14083.json +0 -1
  532. package/esm/.db/941934/data/1/120.json +0 -1
  533. package/esm/.db/941934/data/1/123.json +0 -1
  534. package/esm/.db/941934/data/15/0.json +0 -1
  535. package/esm/.db/943744/data/1/120.json +0 -1
  536. package/esm/.db/943744/data/1/123.json +0 -1
  537. package/esm/.db/955716/data/1/123.json +0 -1
  538. package/esm/.db/956030/data/1/123.json +0 -1
  539. package/esm/.db/956395/data/1/120.json +0 -1
  540. package/esm/.db/956395/data/1/123.json +0 -1
  541. package/esm/.db/956498/data/1/123.json +0 -1
  542. package/esm/.db/957435/data/1/123.json +0 -1
  543. package/esm/.db/960302/data/1/example.json +0 -1
  544. package/esm/.db/964149/data/0/0.json +0 -1
  545. package/esm/.db/964149/data/1/120.json +0 -1
  546. package/esm/.db/964149/data/1/123.json +0 -1
  547. package/esm/.db/965213/data/0/13315.json +0 -1
  548. package/esm/.db/965213/data/1/120.json +0 -1
  549. package/esm/.db/965213/data/1/123.json +0 -1
  550. package/esm/.db/966774/data/1/120.json +0 -1
  551. package/esm/.db/966774/data/1/123.json +0 -1
  552. package/esm/.db/972484/data/1/123.json +0 -1
  553. package/esm/.db/973155/data/1/123.json +0 -1
  554. package/esm/.db/973642/data/1/123.json +0 -1
  555. package/esm/.db/975603/data/0/0.json +0 -1
  556. package/esm/.db/975603/data/1/120.json +0 -1
  557. package/esm/.db/975603/data/1/123.json +0 -1
  558. package/esm/.db/979812/data/0/13315.json +0 -1
  559. package/esm/.db/979812/data/1/120.json +0 -1
  560. package/esm/.db/979812/data/1/123.json +0 -1
  561. package/esm/.db/985666/data/1/example.json +0 -1
  562. package/esm/.db/986784/data/0/0.json +0 -1
  563. package/esm/.db/986784/data/1/120.json +0 -1
  564. package/esm/.db/986784/data/1/123.json +0 -1
  565. package/esm/.db/988463/data/1/120.json +0 -1
  566. package/esm/.db/988463/data/1/123.json +0 -1
  567. package/esm/.db/990386/data/1/120.json +0 -1
  568. package/esm/.db/990386/data/1/123.json +0 -1
  569. package/esm/.db/994488/data/0/0.json +0 -1
  570. package/esm/.db/994488/data/1/120.json +0 -1
  571. package/esm/.db/994488/data/1/123.json +0 -1
  572. package/esm/.db/999130/data/ppl/bob.json +0 -1
package/esm/server.js CHANGED
@@ -1,3 +1,4 @@
1
+ import crypto from "crypto"
1
2
  import express from "express"
2
3
  import cors from "cors"
3
4
  import base64url from "base64url"
@@ -6,11 +7,73 @@ import { tags, toGraphObj, optAO } from "./utils.js"
6
7
  import { connect } from "./aoconnect.js"
7
8
  import { GQL, cu, su, mu } from "./test.js"
8
9
  import bodyParser from "body-parser"
9
- import { keys, map, isNil, reverse } from "ramda"
10
+ import { keys, map, isNil, reverse, omit } from "ramda"
11
+ import { Bundle } from "arbundles"
12
+ import { httpbis, createVerifier } from "http-message-signatures"
13
+ import { createPublicKey, randomBytes } from "node:crypto"
14
+ const { verifyMessage } = httpbis
15
+
16
+ function toANS104Request(fields) {
17
+ const dataItem = {
18
+ target: fields.target,
19
+ anchor: fields.anchor ?? "",
20
+ tags: keys(
21
+ omit(
22
+ [
23
+ "Target",
24
+ "target",
25
+ "Anchor",
26
+ "anchor",
27
+ "Data",
28
+ "data",
29
+ "data-protocol",
30
+ "Data-Protocol",
31
+ "variant",
32
+ "Variant",
33
+ "dryrun",
34
+ "Dryrun",
35
+ "Type",
36
+ "type",
37
+ "path",
38
+ "method",
39
+ ],
40
+ fields
41
+ )
42
+ )
43
+ .map(function (key) {
44
+ return { name: key, value: fields[key] }
45
+ }, fields)
46
+ .concat([
47
+ { name: "Data-Protocol", value: "ao" },
48
+ { name: "Type", value: fields.Type ?? "Message" },
49
+ { name: "Variant", value: fields.Variant ?? "ao.N.1" },
50
+ ]),
51
+ data: fields?.data || "",
52
+ }
53
+ return {
54
+ headers: {
55
+ "Content-Type": "application/ans104",
56
+ "codec-device": "ans104@1.0",
57
+ },
58
+ item: dataItem,
59
+ }
60
+ }
61
+
62
+ function parseSignatureInput(input) {
63
+ const match = input.match(
64
+ /^([^=]+)=\(([^)]+)\);alg="([^"]+)";keyid="([^"]+)"$/
65
+ )
66
+ if (!match) throw new Error("Invalid signature-input format")
67
+
68
+ const [, label, fieldsStr, alg, keyid] = match
69
+ const fields = fieldsStr.split('" "').map(f => f.replace(/"/g, ""))
70
+ return { label, fields, alg, keyid }
71
+ }
10
72
 
11
73
  class Server {
12
74
  constructor({
13
75
  ar = 4000,
76
+ bundler = 4001,
14
77
  mu = 4002,
15
78
  su = 4003,
16
79
  cu = 4004,
@@ -21,6 +84,7 @@ class Server {
21
84
  } = {}) {
22
85
  if (port) {
23
86
  ar = port
87
+ bundler = port + 1
24
88
  mu = port + 2
25
89
  su = port + 3
26
90
  cu = port + 4
@@ -47,13 +111,86 @@ class Server {
47
111
  this.results = results
48
112
  this.mem = mem
49
113
  this.gql = new GQL({ mem })
50
- this.ports = { ar, mu, su, cu }
114
+ this.ports = { ar, mu, su, cu, bundler }
51
115
  this.servers = []
52
116
  this.ar()
117
+ this.bundler()
53
118
  this.mu()
54
119
  this.su()
55
120
  this.cu()
56
121
  }
122
+
123
+ bundler() {
124
+ const app = express()
125
+ app.use(cors())
126
+ app.use("/tx", bodyParser.raw({ type: "*/*", limit: "100mb" }))
127
+ app.post("/tx", async (req, res) => {
128
+ if (!Buffer.isBuffer(req.body)) {
129
+ console.log("BD: Invalid body | expected raw Buffer")
130
+ return res.status(400).send("Invalid body: expected raw Buffer")
131
+ }
132
+ const lines = req.body.toString("utf8").split(/\r?\n/)
133
+ const sigs = {}
134
+ let currentKey = null
135
+
136
+ for (let line of lines) {
137
+ const trimmed = line.trim()
138
+ if (/^--[a-zA-Z0-9_\-=]+/.test(trimmed)) {
139
+ currentKey = null
140
+ continue
141
+ }
142
+ const headerMatch = trimmed.match(/^([a-zA-Z0-9_-]+):\s*(.*)$/)
143
+ if (headerMatch && !headerMatch[2].includes(": ")) {
144
+ const key = headerMatch[1]
145
+ const value = headerMatch[2]
146
+ sigs[key] = value
147
+ currentKey = key
148
+ } else if (currentKey) sigs[currentKey] += "\n" + line
149
+ }
150
+ sigs.target = req.headers.process
151
+ sigs.slot = req.headers.slot
152
+
153
+ const input = parseSignatureInput(req.headers["signature-input"])
154
+ const key = { kty: "RSA", n: input.keyid, e: "AQAB" }
155
+ const verifier = createVerifier(
156
+ createPublicKey({ key, format: "jwk" }),
157
+ "rsa-pss-sha512"
158
+ )
159
+ try {
160
+ const isValid = await verifyMessage(
161
+ { keyLookup: params => ({ verify: verifier }) },
162
+ {
163
+ method: req.method,
164
+ headers: req.headers,
165
+ url: `http://ao.com${req.headers.path}`,
166
+ }
167
+ )
168
+ const item = toANS104Request(sigs).item
169
+ if (sigs.slot === "0" || sigs.type === "Process") {
170
+ for (let v of item.tags) if (v.name === "Type") v.value = "Process"
171
+ const res = await this.spawn({
172
+ http_msg: item,
173
+ module: sigs.module,
174
+ scheduler: sigs.scheduler,
175
+ })
176
+ } else if (sigs.type === "Message") {
177
+ const res = await this.message({
178
+ http_msg: item,
179
+ process: sigs.target,
180
+ })
181
+ }
182
+ } catch (e) {
183
+ console.log(e, req.originalUrl)
184
+ }
185
+ console.log("bundler success [pid]", sigs.target, "[slot]", sigs.slot)
186
+ return res.status(200).send("Success")
187
+ })
188
+ const server = app.listen(this.ports.bundler, () => {
189
+ console.log(`BD on port ${this.ports.bundler}`)
190
+ })
191
+ this.servers.push(server)
192
+ }
193
+
57
194
  ar() {
58
195
  const app = express()
59
196
  app.use(cors())
@@ -65,7 +202,7 @@ class Server {
65
202
  height: this.mem.height,
66
203
  network: "wao.LN.1",
67
204
  current: this.mem.getAnchor(),
68
- }),
205
+ })
69
206
  )
70
207
  app.get("/wallet/:id/balance", (req, res) => res.send("0"))
71
208
  app.get("/mint/:id/:amount", (req, res) => res.json({ id: "0" }))
@@ -142,15 +279,11 @@ class Server {
142
279
  if (req.body.data_root && req.body.data === "") {
143
280
  data[req.body.data_root] = req.body
144
281
  } else {
145
- console.log("or here...", req.body)
146
282
  await this._ar.postTx(req.body)
147
283
  }
148
284
  res.json({ id: req.body.id })
149
285
  }
150
286
  })
151
- app.get("*", async (req, res) => {
152
- console.log("what")
153
- })
154
287
  const server = app.listen(this.ports.ar, () => {
155
288
  console.log(`AR on port ${this.ports.ar}`)
156
289
  })
@@ -197,7 +330,7 @@ class Server {
197
330
  }
198
331
  })
199
332
  const server = app.listen(this.ports.mu, () =>
200
- console.log(`MU on port ${this.ports.mu}`),
333
+ console.log(`MU on port ${this.ports.mu}`)
201
334
  )
202
335
  this.servers.push(server)
203
336
  }
@@ -214,7 +347,7 @@ class Server {
214
347
  })
215
348
  })
216
349
  app.get("/timestamp", (req, res) =>
217
- res.json({ timestamp: Date.now(), block_height: this.mem.height }),
350
+ res.json({ timestamp: Date.now(), block_height: this.mem.height })
218
351
  )
219
352
  app.get("/:pid", (req, res) => {
220
353
  const pid = req.params.pid
@@ -248,12 +381,8 @@ class Server {
248
381
  })(reverse(this.mem.env[pid]?.results ?? [])) // need mod
249
382
  res.json({ page_info: { has_next_page: false }, edges })
250
383
  })
251
- app.get("*", async (req, res) => {
252
- console.log("what2")
253
- })
254
-
255
384
  const server = app.listen(this.ports.su, () =>
256
- console.log(`SU on port ${this.ports.su}`),
385
+ console.log(`SU on port ${this.ports.su}`)
257
386
  )
258
387
  this.servers.push(server)
259
388
  }
@@ -262,18 +391,40 @@ class Server {
262
391
  app.use(cors())
263
392
  app.use(bodyParser.json())
264
393
  app.get("/", (req, res) =>
265
- res.json({ timestamp: Date.now(), address: cu.addr }),
394
+ res.json({ timestamp: Date.now(), address: cu.addr })
266
395
  )
267
- app.get("/result/:mid", async (req, res) => {
396
+ const result = async (req, res) => {
397
+ let message = req.params.mid
398
+ const process = req.query["process-id"]
399
+ if (isNil(this.mem.env[process])) {
400
+ console.log("process not found:", req.query["process-id"])
401
+ res.status(404)
402
+ res.json({ error: `not found` })
403
+ setTimeout(() => {
404
+ console.log(this.mem.env)
405
+ }, 1000)
406
+ return
407
+ }
408
+ if (!/^--[0-9a-zA-Z_-]{43,44}$/.test(message)) {
409
+ message = this.mem.env[process]?.results?.[message]
410
+ }
411
+ if (isNil(message)) {
412
+ console.log("message not found", message, req.params)
413
+ res.status(404)
414
+ res.json({ error: `Not Found` })
415
+ return
416
+ }
268
417
  const res2 = await this.result({
269
- message: req.params.mid,
270
- process: req.query["process-id"],
418
+ message,
419
+ process,
271
420
  })
272
421
  res.json(res2)
273
- })
422
+ }
423
+ app.post("/result/:mid", result)
424
+ app.get("/result/:mid", result)
274
425
  app.get("/state/:pid", async (req, res) => {
275
426
  const pid = req.params.pid
276
- const memory = (await this.mem.env[pid]?.memory) ?? null
427
+ const memory = this.mem.env[pid]?.memory ?? null
277
428
  if (!memory) {
278
429
  res.status(404)
279
430
  res.json({
@@ -318,7 +469,7 @@ class Server {
318
469
  })
319
470
 
320
471
  const server = app.listen(this.ports.cu, () =>
321
- console.log(`CU on port ${this.ports.cu}`),
472
+ console.log(`CU on port ${this.ports.cu}`)
322
473
  )
323
474
  this.servers.push(server)
324
475
  }
@@ -0,0 +1,14 @@
1
+ // Auto-generated WASM module
2
+ const base64Wasm = "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IQICf0GckcAAKAIAIgNBASAAQQN2dCIAcUUEQEGckcAAIAAgA3I2AgAgAgwBCyACKAIICyEAIAIgATYCCCAAIAE2AgwgASACNgIMIAEgADYCCA8LQayRwAAgATYCAEGkkcAAQaSRwAAoAgAgAGoiADYCACABIABBAXI2AgQgACABaiAANgIAC+4EAQp/IwBBMGsiAyQAIANBAzoALCADQSA2AhwgA0EANgIoIAMgATYCJCADIAA2AiAgA0EANgIUIANBADYCDAJ/AkACQAJAIAIoAhAiCkUEQCACKAIMIgBFDQEgAigCCCEBIABBA3QhBSAAQQFrQf////8BcUEBaiEHIAIoAgAhAANAIABBBGooAgAiBARAIAMoAiAgACgCACAEIAMoAiQoAgwRAgANBAsgASgCACADQQxqIAEoAgQRAQANAyABQQhqIQEgAEEIaiEAIAVBCGsiBQ0ACwwBCyACKAIUIgBFDQAgAEEFdCELIABBAWtB////P3FBAWohByACKAIIIQggAigCACEAA0AgAEEEaigCACIBBEAgAygCICAAKAIAIAEgAygCJCgCDBECAA0DCyADIAUgCmoiAUEQaigCADYCHCADIAFBHGotAAA6ACwgAyABQRhqKAIANgIoIAFBDGooAgAhBEEAIQlBACEGAkACQAJAIAFBCGooAgBBAWsOAgACAQsgBEEDdCAIaiIMKAIEDQEgDCgCACEEC0EBIQYLIAMgBDYCECADIAY2AgwgAUEEaigCACEEAkACQAJAIAEoAgBBAWsOAgACAQsgBEEDdCAIaiIGKAIEDQEgBigCACEEC0EBIQkLIAMgBDYCGCADIAk2AhQgCCABQRRqKAIAQQN0aiIBKAIAIANBDGogASgCBBEBAA0CIABBCGohACALIAVBIGoiBUcNAAsLIAcgAigCBE8NASADKAIgIAIoAgAgB0EDdGoiACgCACAAKAIEIAMoAiQoAgwRAgBFDQELQQEMAQtBAAsgA0EwaiQAC/gDAQJ/IAAgAWohAgJAAkAgACgCBCIDQQFxDQAgA0ECcUUNASAAKAIAIgMgAWohASAAIANrIgBBrJHAACgCAEYEQCACKAIEQQNxQQNHDQFBpJHAACABNgIAIAIgAigCBEF+cTYCBCAAIAFBAXI2AgQgAiABNgIADAILIAAgAxASCwJAAkACQCACKAIE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PwsL0AMBA38jAEEgayIDJAAgACgCACIAEAQhBCADIAI2AgQgAyAENgIAIAIgBEYEQBAHIgUQASIEIAEgAhACIQEgBUGEAU8EQCAFEAALIARBhAFPBEAgBBAACyAAIAFBABADIAFBhAFPBEAgARAACyADQSBqJAAPCyADQQA2AggjAEEQayIAJAAgACADQQRqNgIMIAAgAzYCCCMAQfAAayIBJAAgAUGcgsAANgIMIAEgAEEIajYCCCABQZyCwAA2AhQgASAAQQxqNgIQIAFB/InAADYCGCABQQI2AhwCQCADQQhqIgAoAgBFBEAgAUEDNgJcIAFBuIrAADYCWCABQgM3AmQgASABQRBqrUKAgICA0AOENwNIIAEgAUEIaq1CgICAgNADhDcDQAwBCyABQTBqIABBEGopAgA3AwAgAUEoaiAAQQhqKQIANwMAIAEgACkCADcDICABQQQ2AlwgAUHsisAANgJYIAFCBDcCZCABIAFBEGqtQoCAgIDQA4Q3A1AgASABQQhqrUKAgICA0AOENwNIIAEgAUEgaq1CgICAgPADhDcDQAsgASABQRhqrUKAgICA4AOENwM4IAEgAUE4ajYCYCABQdgAakGMgsAAECgAC48BAgN/AX4jAEEgayICJAAgASgCAEGAgICAeEYEQCABKAIMIQMgAkEcaiIEQQA2AgAgAkKAgICAEDcCFCACQRRqQZSFwAAgAxAPGiACQRBqIAQoAgAiAzYCACACIAIpAhQiBTcDCCABQQhqIAM2AgAgASAFNwIACyAAQdyHwAA2AgQgACABNgIAIAJBIGokAAtuAQF/IwBBMGsiASQAIAEgADYCACABQYABNgIEIAFBAjYCDCABQbiNwAA2AgggAUICNwIUIAEgAUEEaq1CgICAgPABhDcDKCABIAGtQoCAgIDwAYQ3AyAgASABQSBqNgIQIAFBCGpBrIvAABAoAAtmACMAQTBrIgAkAEHkjcAALQAABEAgAEECNgIMIABB+IbAADYCCCAAQgE3AhQgACABNgIsIAAgAEEsaq1CgICAgPABhDcDICAAIABBIGo2AhAgAEEIakGgh8AAECgACyAAQTBqJAALQQEBfyACIAAoAgAgACgCCCIDa0sEQCAAIAMgAhAYIAAoAgghAwsgACgCBCADaiABIAIQSBogACACIANqNgIIQQALTQECf0HljcAALQAAGiABKAIEIQIgASgCACEDQQhBBBA4IgFFBEBBBEEIEEYACyABIAI2AgQgASADNgIAIABB7IfAADYCBCAAIAE2AgALNwACQCABaUEBR0GAgICAeCABayAASXINACAABEBB5Y3AAC0AABogACABEDgiAUUNAQsgAQ8LAAtBAQF/IwBBIGsiAyQAIANBADYCECADQQE2AgQgA0IENwIIIAMgATYCHCADIAA2AhggAyADQRhqNgIAIAMgAhAoAAs5AAJAAn8gAkGAgMQARwRAQQEgACACIAEoAhARAQANARoLIAMNAUEACw8LIAAgAyAEIAEoAgwRAgALswIBA38gACgCACECIAEoAhwiAEEQcUUEQCAAQSBxRQRAIAIgARBADwtBACEAIwBBgAFrIgQkACACKAIAIQIDQCAAIARqQf8AaiACQQ9xIgNBMHIgA0E3aiADQQpJGzoAACAAQQFrIQAgAkEQSSACQQR2IQJFDQALIABBgAFqIgJBgAFLBEAgAhAgAAsgAUGni8AAQQIgACAEakGAAWpBACAAaxANIARBgAFqJAAPC0EAIQAjAEGAAWsiBCQAIAIoAgAhAgNAIAAgBGpB/wBqIAJBD3EiA0EwciADQdcAaiADQQpJGzoAACAAQQFrIQAgAkEQSSACQQR2IQJFDQALIABBgAFqIgJBgAFLBEAgAhAgAAsgAUGni8AAQQIgACAEakGAAWpBACAAaxANIARBgAFqJAALqQIBAn8jAEEgayICJAAgAkEBOwEcIAIgATYCGCACIAA2AhQgAkGoicAANgIQIAJBATYCDCMAQRBrIgEkACACQQxqIgAoAggiAkUEQEHMh8AAEEEACyABIAAoAgw2AgwgASAANgIIIAEgAjYCBCMAQRBrIgAkACABQQRqIgEoAgAiAigCDCEDAkACQAJAAkAgAigCBA4CAAECCyADDQFBASECQQAhAwwCCyADDQAgAigCACICKAIEIQMgAigCACECDAELIAAgAjYCDCAAQYCAgIB4NgIAIABBkIjAACABKAIEIgAoAgggASgCCCAALQAQIAAtABEQFgALIAAgAzYCBCAAIAI2AgAgAEH8h8AAIAEoAgQiACgCCCABKAIIIAAtABAgAC0AERAWAAs3AQF/QeWNwAAtAAAaQQxBBBA4IgBFBEBBBEEMEEYACyAAQQA2Aggg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DAELIABBAWsiACADQQlqaiACQTByOgAACyABQQFBACADQQlqIABqQScgAGsQDSADQTBqJAALDgBB/IjAAEErIAAQJQALDABBqITAAEEbEEMACwkAIAAgARAGAAsNAEHDhMAAQc8AEEMACw0AIABBlIXAACABEA8LGQAgACABQfCNwAAoAgAiAEEQIAAbEQAAAAuTBQEHfwJAAn8CQCACIgQgACABa0sEQCABIARqIQUgACAEaiECIAAgBEEQSQ0CGiACQXxxIQNBACACQQNxIgZrIQcgBgRAIAEgBGpBAWshAANAIAJBAWsiAiAALQAAOgAAIABBAWshACACIANLDQALCyADIAQgBmsiBkF8cSIEayECIAUgB2oiBUEDcQRAIARBAEwNAiAFQQN0IgBBGHEhByAFQXxxIghBBGshAUEAIABrQRhxIQkgCCgCACEAA0AgA0EEayIDIAAgCXQgASgCACIAIAd2cjYCACABQQRrIQEgAiADSQ0ACwwCCyAEQQBMDQEgASAGakEEayEBA0AgA0EEayIDIAEoAgA2AgAgAUEEayEBIAIgA0kNAAsMAQsCQCAEQRBJBEAgACECDAELIABBACAAa0EDcSIFaiEDIAUEQCAAIQIgASEAA0AgAiAALQAAOgAAIABBAWohACACQQFqIgIgA0kNAAsLIAMgBCAFayIEQXxxIgZqIQICQCABIAVqIgVBA3EEQCAGQQBMDQEgBUEDdCIAQRhxIQcgBUF8cSIIQQRqIQFBACAAa0EYcSEJIAgoAgAhAANAIAMgACAHdiABKAIAIgAgCXRyNgIAIAFBBGohASADQQRqIgMgAkkNAAsMAQsgBkEATA0AIAUhAQNAIAMgASgCADYCACABQQRqIQEgA0EEaiIDIAJJDQALCyAEQQNxIQQgBSAGaiEBCyAERQ0CIAIgBGohAANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIABJDQALDAILIAZBA3EiAEUNASAFIARrIQUgAiAAawshACAFQQFrIQEDQCACQQFrIgIgAS0AADoAACABQQFrIQEgACACSQ0ACwsLuAIBB38CQCACIgRBEEkEQCAAIQIMAQsgAEEAIABrQQNxIgNqIQUgAwRAIAAhAiABIQYDQCACIAYtAAA6AAAgBkEBaiEGIAJBAWoiAiAFSQ0ACwsgBSAEIANrIghB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";
3
+
4
+ function base64ToUint8Array(base64) {
5
+ const binaryString = atob(base64);
6
+ const bytes = new Uint8Array(binaryString.length);
7
+ for (let i = 0; i < binaryString.length; i++) {
8
+ bytes[i] = binaryString.charCodeAt(i);
9
+ }
10
+ return bytes;
11
+ }
12
+
13
+ // Export the WASM binary as Uint8Array
14
+ export default base64ToUint8Array(base64Wasm);
package/esm/waosm-node.js CHANGED
@@ -1,25 +1,9 @@
1
1
  export * from "./waosm-node/waosm_bg.js"
2
2
  import * as wasmBindings from "./waosm-node/waosm_bg.js"
3
3
  import { __wbg_set_wasm } from "./waosm-node/waosm_bg.js"
4
- import { readFileSync } from "fs"
5
- import { resolve } from "path"
6
-
7
- const run = dirname => {
8
- const wasm = readFileSync(resolve(dirname, "./waosm-node/waosm_bg.wasm"))
9
- const wasmModule = new WebAssembly.Module(wasm)
10
- const wasmInstance = new WebAssembly.Instance(wasmModule, {
11
- "./waosm_bg.js": wasmBindings,
12
- })
13
- __wbg_set_wasm(wasmInstance.exports)
14
- }
15
-
16
- let dirname
17
- if (typeof __filename !== "undefined" && typeof __dirname !== "undefined")
18
- run(__dirname)
19
- else {
20
- import("./dirname.js")
21
- .then(({ default: dirname }) => run(dirname))
22
- .catch(e => {
23
- console.log(e)
24
- })
25
- }
4
+ import wasmBinary from "./waosm-node/waosm_bg.wasm.js"
5
+ const wasmModule = new WebAssembly.Module(wasmBinary)
6
+ const wasmInstance = new WebAssembly.Instance(wasmModule, {
7
+ "./waosm_bg.js": wasmBindings,
8
+ })
9
+ __wbg_set_wasm(wasmInstance.exports)
package/esm/weavedb.js CHANGED
@@ -59,7 +59,7 @@ function frombits(bitArray) {
59
59
 
60
60
  return result
61
61
  }
62
-
62
+ let init = {}
63
63
  export default class WeaveDB {
64
64
  constructor(ar, dir) {
65
65
  dir ??= resolve(import.meta.dirname, ".db")
@@ -104,7 +104,7 @@ export default class WeaveDB {
104
104
  `data/${col}/${doc}`,
105
105
  properties,
106
106
  true,
107
- false,
107
+ false
108
108
  )
109
109
 
110
110
  // Set initial parame
@@ -178,6 +178,10 @@ export default class WeaveDB {
178
178
  for (let i = 0; i < FS.streams.length; i++) {
179
179
  if (FS.streams[i].fd === fd) stream = FS.streams[i]
180
180
  }
181
+ if (!stream) return 0
182
+ if (init[fd] === false) stream.position = 0
183
+ init[fd] = true
184
+
181
185
  // Satisfy what we can with the cache first
182
186
  let bytes_read = this.readFromCache(stream, dst_ptr, to_read)
183
187
  stream.position += bytes_read
@@ -195,7 +199,7 @@ export default class WeaveDB {
195
199
  const chunk_download_sz = Math.max(to_read, CACHE_SZ)
196
200
  const to = Math.min(
197
201
  stream.node.total_size,
198
- stream.position + chunk_download_sz,
202
+ stream.position + chunk_download_sz
199
203
  )
200
204
  let data = val
201
205
  if (!data) {
@@ -217,7 +221,7 @@ export default class WeaveDB {
217
221
  if (op === 2) {
218
222
  const col_dir = resolve(data_dir, col.toString())
219
223
  const _data = JSON.parse(
220
- readFileSync(resolve(col_dir, `${doc}.json`), "utf8"),
224
+ readFileSync(resolve(col_dir, `${doc}.json`), "utf8")
221
225
  )
222
226
  let u = new Encoder()
223
227
  const e = encode(_data, u)
@@ -236,7 +240,7 @@ export default class WeaveDB {
236
240
  if (!existsSync(col_dir)) mkdirSync(col_dir)
237
241
  writeFileSync(
238
242
  resolve(col_dir, `${v.doc}.json`),
239
- JSON.stringify(v.json),
243
+ JSON.stringify(v.json)
240
244
  )
241
245
 
242
246
  for (let i = 0; i < FS.streams.length; i++) {
@@ -266,7 +270,7 @@ export default class WeaveDB {
266
270
  }),
267
271
  {
268
272
  headers: { "Content-Length": chunk.length.toString() },
269
- },
273
+ }
270
274
  )
271
275
  const reader = response.body.getReader()
272
276
  let bytes_until_cache = CHUNK_SZ
@@ -304,7 +308,7 @@ export default class WeaveDB {
304
308
  console.log("KV: Chunk size reached. Compressing cache...")
305
309
  stream.node.cache = this.addChunksToCache(
306
310
  stream.node.cache,
307
- cache_chunks,
311
+ cache_chunks
308
312
  )
309
313
  cache_chunks = []
310
314
  bytes_until_cache = CHUNK_SZ
@@ -314,7 +318,7 @@ export default class WeaveDB {
314
318
  console.log(
315
319
  "KV: Downloaded: ",
316
320
  (downloaded_bytes / stream.node.total_size) * 100,
317
- "%",
321
+ "%"
318
322
  )
319
323
  bytes_until_notify = NOTIFY_SZ
320
324
  }
@@ -328,7 +332,7 @@ export default class WeaveDB {
328
332
  // Rebuild the cache from the new cache chunks
329
333
  stream.node.cache = this.addChunksToCache(
330
334
  stream.node.cache,
331
- cache_chunks,
335
+ cache_chunks
332
336
  )
333
337
 
334
338
  // Update the last read position
@@ -365,7 +369,7 @@ export default class WeaveDB {
365
369
  let new_cache_length = Math.min(
366
370
  old_cache.length +
367
371
  chunks.reduce((acc, chunk) => acc + chunk.length, 0),
368
- CACHE_SZ,
372
+ CACHE_SZ
369
373
  )
370
374
  let new_cache = new Uint8Array(new_cache_length)
371
375
  // Copy the old cache to the new cache
@@ -376,7 +380,7 @@ export default class WeaveDB {
376
380
  if (current_offset < new_cache_length) {
377
381
  new_cache.set(
378
382
  chunk.subarray(0, new_cache_length - current_offset),
379
- current_offset,
383
+ current_offset
380
384
  )
381
385
  current_offset += chunk.length
382
386
  }
package/esm/weavedrive.js CHANGED
@@ -4,7 +4,7 @@ const CACHE_SZ = 32 * KB // Keep small cache size
4
4
  const CHUNK_SZ = 1 * MB // Reduced from 128MB to 1MB for better memory management
5
5
  const STREAM_CHUNK = 256 * KB // Added smaller streaming chunk size
6
6
  const log = console.log
7
-
7
+ let init = {}
8
8
  export default class WeaveDrive {
9
9
  constructor(ar) {
10
10
  this.ext = (mod, FS) => {
@@ -64,7 +64,7 @@ export default class WeaveDrive {
64
64
  "block/" + id,
65
65
  Buffer.from(result, "utf-8"),
66
66
  true,
67
- false,
67
+ false
68
68
  )
69
69
 
70
70
  var stream = FS.open("/block/" + id, "r")
@@ -82,7 +82,7 @@ export default class WeaveDrive {
82
82
  "tx/" + id,
83
83
  Buffer.from(result, "utf-8"),
84
84
  true,
85
- false,
85
+ false
86
86
  )
87
87
  var stream = FS.open("/tx/" + id, "r")
88
88
  return stream
@@ -113,7 +113,7 @@ export default class WeaveDrive {
113
113
  "tx2/" + id,
114
114
  Buffer.from(result, "utf-8"),
115
115
  true,
116
- false,
116
+ false
117
117
  )
118
118
  var stream = FS.open("/tx2/" + id, "r")
119
119
  return stream
@@ -161,7 +161,8 @@ export default class WeaveDrive {
161
161
 
162
162
  var stream = FS.streams.find(s => s.fd === fd)
163
163
  if (!stream) return 0
164
-
164
+ if (init[fd] === false) stream.position = 0
165
+ init[fd] = true
165
166
  // Handle block and tx headers
166
167
  if (stream.path.includes("/block") || stream.path.includes("/tx")) {
167
168
  mod.HEAP8.set(stream.node.contents.subarray(0, to_read), dst_ptr)
@@ -213,20 +214,20 @@ export default class WeaveDrive {
213
214
  const blockHeight = mod.blockHeight
214
215
  const moduleExtensions = this.getTagValues(
215
216
  "Extension",
216
- mod.module.tags,
217
+ mod.module.tags
217
218
  )
218
219
  const moduleHasWeaveDrive = moduleExtensions.includes("WeaveDrive")
219
220
 
220
221
  const processExtensions = this.getTagValues(
221
222
  "Extension",
222
- mod.spawn.tags,
223
+ mod.spawn.tags
223
224
  )
224
225
  const processHasWeaveDrive =
225
226
  moduleHasWeaveDrive || processExtensions.includes("WeaveDrive")
226
227
 
227
228
  if (!processHasWeaveDrive) {
228
229
  console.log(
229
- "WeaveDrive: Process tried to call WeaveDrive, but extension not set!",
230
+ "WeaveDrive: Process tried to call WeaveDrive, but extension not set!"
230
231
  )
231
232
  return false
232
233
  }
@@ -234,7 +235,7 @@ export default class WeaveDrive {
234
235
  const modes = ["Assignments", "Individual", "Library"]
235
236
  const moduleAvailabilityType = this.getTagValue(
236
237
  "Availability-Type",
237
- mod.module.tags,
238
+ mod.module.tags
238
239
  )
239
240
  const moduleMode = moduleAvailabilityType
240
241
  ? moduleAvailabilityType
@@ -242,7 +243,7 @@ export default class WeaveDrive {
242
243
 
243
244
  const processAvailabilityType = this.getTagValue(
244
245
  "Availability-Type",
245
- mod.spawn.tags,
246
+ mod.spawn.tags
246
247
  )
247
248
  const processMode = processAvailabilityType
248
249
  ? processAvailabilityType
@@ -256,7 +257,7 @@ export default class WeaveDrive {
256
257
  [
257
258
  this.getTagValue("Scheduler", mod.spawn.tags),
258
259
  ...this.getTagValues("Attestor", mod.spawn.tags),
259
- ].filter(t => !!t),
260
+ ].filter(t => !!t)
260
261
  )
261
262
 
262
263
  const exists = async tags => {
@@ -358,6 +359,7 @@ export default class WeaveDrive {
358
359
  return 0
359
360
  } else {
360
361
  const stream = await this.create(id)
362
+ init[stream.fd] = false
361
363
  return stream.fd
362
364
  }
363
365
  } else if (pathCategory === "headers") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wao",
3
- "version": "0.12.4",
3
+ "version": "0.13.0",
4
4
  "bin": {
5
5
  "wao": "./cjs/cli.js",
6
6
  "wao-esm": "./esm/cli.js"
@@ -26,8 +26,10 @@
26
26
  }
27
27
  },
28
28
  "dependencies": {
29
+ "aoconnect-wao": "https://gitpkg.vercel.app/weavedb/ao/connect?wao&scripts.postinstall=npm%20install%20--ignore-scripts%20%26%26%20npm%20run%20build",
29
30
  "@babel/plugin-transform-modules-commonjs": "^7.24.8",
30
31
  "@bokuweb/zstd-wasm": "^0.0.22",
32
+ "@dha-team/arbundles": "^1.0.1",
31
33
  "@permaweb/ao-loader": "^0.0.44",
32
34
  "@permaweb/aoconnect": "^0.0.62",
33
35
  "arbundles": "^0.11.1",
@@ -39,6 +41,7 @@
39
41
  "cors": "^2.8.5",
40
42
  "express": "^4.21.2",
41
43
  "graphql": "^16.10.0",
44
+ "http-message-signatures": "^1.0.4",
42
45
  "lmdb": "^3.2.2",
43
46
  "localforage": "^1.10.0",
44
47
  "lz4-asm": "^0.4.2",
Binary file
Binary file
@@ -1 +0,0 @@
1
- null
@@ -1 +0,0 @@
1
- null
@@ -1 +0,0 @@
1
- null
@@ -1 +0,0 @@
1
- {"test":2}
@@ -1 +0,0 @@
1
- {}
@@ -1 +0,0 @@
1
- {"test":2}
@@ -1 +0,0 @@
1
- 2
@@ -1 +0,0 @@
1
- {}
@@ -1 +0,0 @@
1
- {"name":"Bob","age":40}