Update quickstart

This commit is contained in:
Pavel Murygin 2022-04-27 13:53:34 +03:00
parent a65f2695fe
commit 8b2e5e086c
8 changed files with 2432 additions and 540 deletions

View File

@ -9,7 +9,7 @@
"version": "0.1.0",
"hasInstallScript": true,
"dependencies": {
"@fluencelabs/fluence": "0.22.0",
"@fluencelabs/fluence": "^0.23.0",
"@fluencelabs/fluence-network-environment": "^1.0.13",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^11.2.7",
@ -26,7 +26,7 @@
"web-vitals": "^1.1.2"
},
"devDependencies": {
"@fluencelabs/aqua": "^0.7.1-300",
"@fluencelabs/aqua": "^0.7.2-303",
"@fluencelabs/aqua-lib": "^0.4.3",
"@types/jest-environment-puppeteer": "^4.4.1",
"@types/puppeteer": "^5.4.4",
@ -2132,14 +2132,14 @@
}
},
"node_modules/@fluencelabs/aqua": {
"version": "0.7.1-300",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.1-300.tgz",
"integrity": "sha512-fwn+b4SSCiCb30Oy5IltBbeZD1V2oyWFLedzR+qJ2wRLiJp0NBp0+22AI3MENy6HJEAfYmU3Hu3GlJW44R0wDQ==",
"version": "0.7.2-303",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.2-303.tgz",
"integrity": "sha512-n2vvb4qwy62ZCbbHAx9lNd08Yo752v/vJcg/vY+zJ1lWdMGZV13YrkDeC75BgwsM9I4otRtPBS2to/aW7MTaFw==",
"dev": true,
"dependencies": {
"@fluencelabs/aqua-ipfs": "0.5.2",
"@fluencelabs/aqua-lib": "0.4.0",
"@fluencelabs/fluence": "0.22.0",
"@fluencelabs/aqua-lib": "0.5.1",
"@fluencelabs/fluence": "0.23.0",
"@fluencelabs/fluence-network-environment": "1.0.13",
"ipfs-http-client": "50.1.2"
},
@ -2170,48 +2170,26 @@
"dev": true
},
"node_modules/@fluencelabs/aqua/node_modules/@fluencelabs/aqua-lib": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.4.0.tgz",
"integrity": "sha512-bad282cCZrE//I+Hzsl/vWgudwXuNiaqJOonv11xkgOBBvL7Gg3SIap8HioNvkaDxIvylVB+POjYJ7E5sGNoVQ==",
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.5.1.tgz",
"integrity": "sha512-XQqbbMuZs8Ha1qdqbyVpjE9AOrjF8QSC6zrWlcDzpNQdTDfoLjB7teJ8QnM7sl8g9FqUHSWXnEZUP/muauf7Bg==",
"dev": true
},
"node_modules/@fluencelabs/avm": {
"version": "0.21.6",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.21.6.tgz",
"integrity": "sha512-QOOB2kO9Uiz01skCfw8JL8QwLd7ObdPc2hkL4IGov1kMv8h3wWl9YM0lOxdXKSdKyZjsIQWKCRbfQUoo0XcX0A==",
"bin": {
"copy-avm": "dist/copyAvm.js"
}
},
"node_modules/@fluencelabs/avm-runner-background": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm-runner-background/-/avm-runner-background-0.2.0.tgz",
"integrity": "sha512-IP4979IlS+1KwNX9zpDF6maLK112lBjd+Go1D/JIt7yP7o12Ch4CREmx2OxZwWOTxQVwoIRuD7Y+K3iTd4AL7Q==",
"dependencies": {
"@fluencelabs/avm-runner-interface": "^0.2.0",
"browser-or-node": "^2.0.0",
"threads": "^1.7.0"
},
"bin": {
"copy-avm-runner": "dist/copyRunnerScript.js"
}
},
"node_modules/@fluencelabs/avm-runner-interface": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm-runner-interface/-/avm-runner-interface-0.2.0.tgz",
"integrity": "sha512-Y41pL+UwZZVdormxju8cJQsNRp6tdER0VqJ9Kg9gH2wd1KJAaYTJkyVbn8NB7fEFRUbqfbb1BXHi9wWBYOgGYQ=="
"version": "0.24.2",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.24.2.tgz",
"integrity": "sha512-BD7pr3ZRHLIb9XVt08i+/fX2+B4l5zln6j+5mEIJmDBQETv6Gz7NdsgKn0jUQueBcztR+mw5w7byM66yf6xEnA=="
},
"node_modules/@fluencelabs/fluence": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.22.0.tgz",
"integrity": "sha512-53pgxoxguLg3mKKVtc4lTNBQa2Y3VHwKE5Zdnl6ZiHeNu7JUhSw/aK65Y93ZIL0Hmql/HWlGi+NNBT9uKby93A==",
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.23.0.tgz",
"integrity": "sha512-HbSmOzXnRaLKUfS75FreXJ6E1P4HA+Qi0yUFD1VfEyvN5p40ujzHGu5wv+6hHOQnBJPkWse9Lv4U9NQVdwUzvQ==",
"dependencies": {
"@chainsafe/libp2p-noise": "^4.1.1",
"@fluencelabs/avm": "^0.21.3",
"@fluencelabs/avm-runner-background": "0.2.0",
"@fluencelabs/avm-runner-interface": "^0.2.0",
"@fluencelabs/marine-js": "0.1.0",
"@fluencelabs/avm": "0.24.2",
"@fluencelabs/marine-js": "0.2.5",
"async": "3.2.0",
"browser-or-node": "^2.0.0",
"bs58": "4.0.1",
"buffer": "^6.0.3",
"cids": "0.8.1",
@ -2231,7 +2209,7 @@
"uuid": "8.3.0"
},
"bin": {
"copy-avm-public": "dist/tools/copyAvmPublic.js"
"copy-marine": "dist/tools/copyMarine.js"
}
},
"node_modules/@fluencelabs/fluence-network-environment": {
@ -2240,11 +2218,16 @@
"integrity": "sha512-2pci3T0sUHE08jwEs1r/vHKVT4XUh/A3j/QJ0eIhddsxyIjEksjdn05X7DF6STD14CF8GgBVOJEPgav8qaUMpA=="
},
"node_modules/@fluencelabs/marine-js": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/marine-js/-/marine-js-0.1.0.tgz",
"integrity": "sha512-vpjrwYLhd54xsvKp24SpY+szgzqNg/t2J+q4NyHCeQkhJK9nVlXfZBvaa60Ji2MYTQ6ikWrCUVldmk0xN/Q0uQ==",
"bin": {
"copy-marine": "dist/copyMarine.js"
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/@fluencelabs/marine-js/-/marine-js-0.2.5.tgz",
"integrity": "sha512-nGXuXdZd9gJX6dRyZcesnoRhZmSNCJFbHA25TKJ36x8KB+AKt+FCgRBht8M0+DlwBYow5mqOZlebz3XgSpRWVA==",
"dependencies": {
"@wasmer/wasi": "^0.12.0",
"@wasmer/wasmfs": "^0.12.0",
"browser-or-node": "^2.0.0",
"buffer": "^6.0.3",
"threads": "^1.7.0",
"ts-jest": "^27.1.4"
}
},
"node_modules/@hapi/hoek": {
@ -4212,6 +4195,41 @@
"resolved": "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz",
"integrity": "sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w=="
},
"node_modules/@wasmer/wasi": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@wasmer/wasi/-/wasi-0.12.0.tgz",
"integrity": "sha512-FJhLZKAfLWm/yjQI7eCRHNbA8ezmb7LSpUYFkHruZXs2mXk2+DaQtSElEtOoNrVQ4vApTyVaAd5/b7uEu8w6wQ==",
"dependencies": {
"browser-process-hrtime": "^1.0.0",
"buffer-es6": "^4.9.3",
"path-browserify": "^1.0.0",
"randomfill": "^1.0.4"
}
},
"node_modules/@wasmer/wasmfs": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@wasmer/wasmfs/-/wasmfs-0.12.0.tgz",
"integrity": "sha512-m1ftchyQ1DfSenm5XbbdGIpb6KJHH5z0gODo3IZr6lATkj4WXfX/UeBTZ0aG9YVShBp+kHLdUHvOkqjy6p/GWw==",
"dependencies": {
"memfs": "3.0.4",
"pako": "^1.0.11",
"tar-stream": "^2.1.0"
}
},
"node_modules/@wasmer/wasmfs/node_modules/fs-monkey": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-0.3.3.tgz",
"integrity": "sha512-FNUvuTAJ3CqCQb5ELn+qCbGR/Zllhf2HtwsdAtBi59s1WeCjKMT81fHcSu7dwIskqGVK+MmOrb7VOBlq3/SItw=="
},
"node_modules/@wasmer/wasmfs/node_modules/memfs": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/memfs/-/memfs-3.0.4.tgz",
"integrity": "sha512-OcZEzwX9E5AoY8SXjuAvw0DbIAYwUzV/I236I8Pqvrlv7sL/Y0E9aRCon05DhaV8pg1b32uxj76RgW0s5xjHBA==",
"dependencies": {
"fast-extend": "1.0.2",
"fs-monkey": "0.3.3"
}
},
"node_modules/@webassemblyjs/ast": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
@ -5647,7 +5665,6 @@
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
"integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
"dev": true,
"dependencies": {
"fast-json-stable-stringify": "2.x"
},
@ -5704,6 +5721,11 @@
"node": "*"
}
},
"node_modules/buffer-es6": {
"version": "4.9.3",
"resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz",
"integrity": "sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ="
},
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@ -7606,7 +7628,6 @@
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"dev": true,
"dependencies": {
"once": "^1.4.0"
}
@ -8658,6 +8679,11 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"node_modules/fast-extend": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/fast-extend/-/fast-extend-1.0.2.tgz",
"integrity": "sha512-XXA9RmlPatkFKUzqVZAFth18R4Wo+Xug/S+C7YlYA3xrXwfPlW3dqNwOb4hvQo7wZJ2cNDYhrYuPzVOfHy5/uQ=="
},
"node_modules/fast-fifo": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.1.0.tgz",
@ -9118,9 +9144,7 @@
"node_modules/fs-constants": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
"dev": true,
"peer": true
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
},
"node_modules/fs-exists-sync": {
"version": "0.1.0",
@ -13816,9 +13840,9 @@
"integrity": "sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg=="
},
"node_modules/libp2p-websockets/node_modules/ipfs-utils": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.5.tgz",
"integrity": "sha512-GXWfsq/nKtwkcTI4+KGc4CU9EFXjtkWaGcFAsnm177kAhA0Fnn8aWNRaF/C0xFraUIl1wTAUTWkaGKigVyfsTw==",
"version": "9.0.6",
"resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.6.tgz",
"integrity": "sha512-/WfdwOIiJVb3uqfKRQ9Eo+vCEKsDgp7h4Pdc37MRwAiFciZ7xKAkEqsfXubV0VQi8x5jWTifeHn8WEPBLL451w==",
"dependencies": {
"any-signal": "^3.0.0",
"buffer": "^6.0.1",
@ -14073,8 +14097,7 @@
"node_modules/make-error": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
"dev": true
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
},
"node_modules/makeerror": {
"version": "1.0.12",
@ -14933,9 +14956,9 @@
}
},
"node_modules/node-gyp-build": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz",
"integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==",
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz",
"integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==",
"bin": {
"node-gyp-build": "bin.js",
"node-gyp-build-optional": "optional.js",
@ -15597,6 +15620,11 @@
"node": ">=6"
}
},
"node_modules/pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
},
"node_modules/param-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
@ -15671,6 +15699,11 @@
"tslib": "^2.0.3"
}
},
"node_modules/path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
},
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@ -17247,6 +17280,15 @@
"safe-buffer": "^5.1.0"
}
},
"node_modules/randomfill": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
"integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
"dependencies": {
"randombytes": "^2.0.5",
"safe-buffer": "^5.1.0"
}
},
"node_modules/range-parser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
@ -19591,8 +19633,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"dev": true,
"peer": true,
"dependencies": {
"bl": "^4.0.3",
"end-of-stream": "^1.4.1",
@ -19608,8 +19648,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
"peer": true,
"dependencies": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
@ -19620,7 +19658,6 @@
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"dev": true,
"funding": [
{
"type": "github",
@ -19635,7 +19672,6 @@
"url": "https://feross.org/support"
}
],
"peer": true,
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
@ -19963,10 +19999,9 @@
"integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA=="
},
"node_modules/ts-jest": {
"version": "27.1.3",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz",
"integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==",
"dev": true,
"version": "27.1.4",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz",
"integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==",
"dependencies": {
"bs-logger": "0.x",
"fast-json-stable-stringify": "2.x",
@ -19987,7 +20022,6 @@
"@babel/core": ">=7.0.0-beta.0 <8",
"@types/jest": "^27.0.0",
"babel-jest": ">=27.0.0 <28",
"esbuild": "~0.14.0",
"jest": "^27.0.0",
"typescript": ">=3.8 <5.0"
},
@ -20010,7 +20044,6 @@
"version": "7.3.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
"integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
},
@ -20947,11 +20980,15 @@
}
},
"node_modules/wherearewe": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wherearewe/-/wherearewe-1.0.1.tgz",
"integrity": "sha512-K77B01OHS3MqBQAMh1o51g0hwKJpj+NgF9YLZPnqgK0xhKSexxlvCXVt3sL/0+0V73Qwni2n0licJv9KpFbtOw==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wherearewe/-/wherearewe-1.0.2.tgz",
"integrity": "sha512-HyLZ7n1Yox+w1qWaFEgP/sMs5D7ka2UXmoVNaY0XzbEHLGljo4ScBchYm6cWRYNO33tmFX3Mgg4BiZkDOjihyw==",
"dependencies": {
"is-electron": "^2.2.0"
},
"engines": {
"node": ">=16.0.0",
"npm": ">=7.0.0"
}
},
"node_modules/which": {
@ -23062,22 +23099,22 @@
}
},
"@fluencelabs/aqua": {
"version": "0.7.1-300",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.1-300.tgz",
"integrity": "sha512-fwn+b4SSCiCb30Oy5IltBbeZD1V2oyWFLedzR+qJ2wRLiJp0NBp0+22AI3MENy6HJEAfYmU3Hu3GlJW44R0wDQ==",
"version": "0.7.2-303",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.2-303.tgz",
"integrity": "sha512-n2vvb4qwy62ZCbbHAx9lNd08Yo752v/vJcg/vY+zJ1lWdMGZV13YrkDeC75BgwsM9I4otRtPBS2to/aW7MTaFw==",
"dev": true,
"requires": {
"@fluencelabs/aqua-ipfs": "0.5.2",
"@fluencelabs/aqua-lib": "0.4.0",
"@fluencelabs/fluence": "0.22.0",
"@fluencelabs/aqua-lib": "0.5.1",
"@fluencelabs/fluence": "0.23.0",
"@fluencelabs/fluence-network-environment": "1.0.13",
"ipfs-http-client": "50.1.2"
},
"dependencies": {
"@fluencelabs/aqua-lib": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.4.0.tgz",
"integrity": "sha512-bad282cCZrE//I+Hzsl/vWgudwXuNiaqJOonv11xkgOBBvL7Gg3SIap8HioNvkaDxIvylVB+POjYJ7E5sGNoVQ==",
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.5.1.tgz",
"integrity": "sha512-XQqbbMuZs8Ha1qdqbyVpjE9AOrjF8QSC6zrWlcDzpNQdTDfoLjB7teJ8QnM7sl8g9FqUHSWXnEZUP/muauf7Bg==",
"dev": true
}
}
@ -23106,36 +23143,20 @@
"dev": true
},
"@fluencelabs/avm": {
"version": "0.21.6",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.21.6.tgz",
"integrity": "sha512-QOOB2kO9Uiz01skCfw8JL8QwLd7ObdPc2hkL4IGov1kMv8h3wWl9YM0lOxdXKSdKyZjsIQWKCRbfQUoo0XcX0A=="
},
"@fluencelabs/avm-runner-background": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm-runner-background/-/avm-runner-background-0.2.0.tgz",
"integrity": "sha512-IP4979IlS+1KwNX9zpDF6maLK112lBjd+Go1D/JIt7yP7o12Ch4CREmx2OxZwWOTxQVwoIRuD7Y+K3iTd4AL7Q==",
"requires": {
"@fluencelabs/avm-runner-interface": "^0.2.0",
"browser-or-node": "^2.0.0",
"threads": "^1.7.0"
}
},
"@fluencelabs/avm-runner-interface": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm-runner-interface/-/avm-runner-interface-0.2.0.tgz",
"integrity": "sha512-Y41pL+UwZZVdormxju8cJQsNRp6tdER0VqJ9Kg9gH2wd1KJAaYTJkyVbn8NB7fEFRUbqfbb1BXHi9wWBYOgGYQ=="
"version": "0.24.2",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.24.2.tgz",
"integrity": "sha512-BD7pr3ZRHLIb9XVt08i+/fX2+B4l5zln6j+5mEIJmDBQETv6Gz7NdsgKn0jUQueBcztR+mw5w7byM66yf6xEnA=="
},
"@fluencelabs/fluence": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.22.0.tgz",
"integrity": "sha512-53pgxoxguLg3mKKVtc4lTNBQa2Y3VHwKE5Zdnl6ZiHeNu7JUhSw/aK65Y93ZIL0Hmql/HWlGi+NNBT9uKby93A==",
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.23.0.tgz",
"integrity": "sha512-HbSmOzXnRaLKUfS75FreXJ6E1P4HA+Qi0yUFD1VfEyvN5p40ujzHGu5wv+6hHOQnBJPkWse9Lv4U9NQVdwUzvQ==",
"requires": {
"@chainsafe/libp2p-noise": "^4.1.1",
"@fluencelabs/avm": "^0.21.3",
"@fluencelabs/avm-runner-background": "0.2.0",
"@fluencelabs/avm-runner-interface": "^0.2.0",
"@fluencelabs/marine-js": "0.1.0",
"@fluencelabs/avm": "0.24.2",
"@fluencelabs/marine-js": "0.2.5",
"async": "3.2.0",
"browser-or-node": "^2.0.0",
"bs58": "4.0.1",
"buffer": "^6.0.3",
"cids": "0.8.1",
@ -23161,9 +23182,17 @@
"integrity": "sha512-2pci3T0sUHE08jwEs1r/vHKVT4XUh/A3j/QJ0eIhddsxyIjEksjdn05X7DF6STD14CF8GgBVOJEPgav8qaUMpA=="
},
"@fluencelabs/marine-js": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/marine-js/-/marine-js-0.1.0.tgz",
"integrity": "sha512-vpjrwYLhd54xsvKp24SpY+szgzqNg/t2J+q4NyHCeQkhJK9nVlXfZBvaa60Ji2MYTQ6ikWrCUVldmk0xN/Q0uQ=="
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/@fluencelabs/marine-js/-/marine-js-0.2.5.tgz",
"integrity": "sha512-nGXuXdZd9gJX6dRyZcesnoRhZmSNCJFbHA25TKJ36x8KB+AKt+FCgRBht8M0+DlwBYow5mqOZlebz3XgSpRWVA==",
"requires": {
"@wasmer/wasi": "^0.12.0",
"@wasmer/wasmfs": "^0.12.0",
"browser-or-node": "^2.0.0",
"buffer": "^6.0.3",
"threads": "^1.7.0",
"ts-jest": "^27.1.4"
}
},
"@hapi/hoek": {
"version": "9.2.1",
@ -24713,6 +24742,43 @@
"resolved": "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz",
"integrity": "sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w=="
},
"@wasmer/wasi": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@wasmer/wasi/-/wasi-0.12.0.tgz",
"integrity": "sha512-FJhLZKAfLWm/yjQI7eCRHNbA8ezmb7LSpUYFkHruZXs2mXk2+DaQtSElEtOoNrVQ4vApTyVaAd5/b7uEu8w6wQ==",
"requires": {
"browser-process-hrtime": "^1.0.0",
"buffer-es6": "^4.9.3",
"path-browserify": "^1.0.0",
"randomfill": "^1.0.4"
}
},
"@wasmer/wasmfs": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@wasmer/wasmfs/-/wasmfs-0.12.0.tgz",
"integrity": "sha512-m1ftchyQ1DfSenm5XbbdGIpb6KJHH5z0gODo3IZr6lATkj4WXfX/UeBTZ0aG9YVShBp+kHLdUHvOkqjy6p/GWw==",
"requires": {
"memfs": "3.0.4",
"pako": "^1.0.11",
"tar-stream": "^2.1.0"
},
"dependencies": {
"fs-monkey": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-0.3.3.tgz",
"integrity": "sha512-FNUvuTAJ3CqCQb5ELn+qCbGR/Zllhf2HtwsdAtBi59s1WeCjKMT81fHcSu7dwIskqGVK+MmOrb7VOBlq3/SItw=="
},
"memfs": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/memfs/-/memfs-3.0.4.tgz",
"integrity": "sha512-OcZEzwX9E5AoY8SXjuAvw0DbIAYwUzV/I236I8Pqvrlv7sL/Y0E9aRCon05DhaV8pg1b32uxj76RgW0s5xjHBA==",
"requires": {
"fast-extend": "1.0.2",
"fs-monkey": "0.3.3"
}
}
}
},
"@webassemblyjs/ast": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
@ -25836,7 +25902,6 @@
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
"integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
"dev": true,
"requires": {
"fast-json-stable-stringify": "2.x"
}
@ -25873,6 +25938,11 @@
"dev": true,
"peer": true
},
"buffer-es6": {
"version": "4.9.3",
"resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz",
"integrity": "sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ="
},
"buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@ -27301,7 +27371,6 @@
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"dev": true,
"requires": {
"once": "^1.4.0"
}
@ -28087,6 +28156,11 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"fast-extend": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/fast-extend/-/fast-extend-1.0.2.tgz",
"integrity": "sha512-XXA9RmlPatkFKUzqVZAFth18R4Wo+Xug/S+C7YlYA3xrXwfPlW3dqNwOb4hvQo7wZJ2cNDYhrYuPzVOfHy5/uQ=="
},
"fast-fifo": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.1.0.tgz",
@ -28422,9 +28496,7 @@
"fs-constants": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
"dev": true,
"peer": true
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
},
"fs-exists-sync": {
"version": "0.1.0",
@ -32300,9 +32372,9 @@
"integrity": "sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg=="
},
"ipfs-utils": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.5.tgz",
"integrity": "sha512-GXWfsq/nKtwkcTI4+KGc4CU9EFXjtkWaGcFAsnm177kAhA0Fnn8aWNRaF/C0xFraUIl1wTAUTWkaGKigVyfsTw==",
"version": "9.0.6",
"resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.6.tgz",
"integrity": "sha512-/WfdwOIiJVb3uqfKRQ9Eo+vCEKsDgp7h4Pdc37MRwAiFciZ7xKAkEqsfXubV0VQi8x5jWTifeHn8WEPBLL451w==",
"requires": {
"any-signal": "^3.0.0",
"buffer": "^6.0.1",
@ -32474,8 +32546,7 @@
"make-error": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
"dev": true
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
},
"makeerror": {
"version": "1.0.12",
@ -33149,9 +33220,9 @@
}
},
"node-gyp-build": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz",
"integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q=="
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz",
"integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ=="
},
"node-int64": {
"version": "0.4.0",
@ -33600,6 +33671,11 @@
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
"pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
},
"param-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
@ -33659,6 +33735,11 @@
"tslib": "^2.0.3"
}
},
"path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
},
"path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@ -34694,6 +34775,15 @@
"safe-buffer": "^5.1.0"
}
},
"randomfill": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
"integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
"requires": {
"randombytes": "^2.0.5",
"safe-buffer": "^5.1.0"
}
},
"range-parser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
@ -36535,8 +36625,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"dev": true,
"peer": true,
"requires": {
"bl": "^4.0.3",
"end-of-stream": "^1.4.1",
@ -36549,8 +36637,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
"peer": true,
"requires": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
@ -36561,8 +36647,6 @@
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"dev": true,
"peer": true,
"requires": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
@ -36801,10 +36885,9 @@
"integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA=="
},
"ts-jest": {
"version": "27.1.3",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz",
"integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==",
"dev": true,
"version": "27.1.4",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz",
"integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==",
"requires": {
"bs-logger": "0.x",
"fast-json-stable-stringify": "2.x",
@ -36820,7 +36903,6 @@
"version": "7.3.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
"integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"dev": true,
"requires": {
"lru-cache": "^6.0.0"
}
@ -37522,9 +37604,9 @@
}
},
"wherearewe": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wherearewe/-/wherearewe-1.0.1.tgz",
"integrity": "sha512-K77B01OHS3MqBQAMh1o51g0hwKJpj+NgF9YLZPnqgK0xhKSexxlvCXVt3sL/0+0V73Qwni2n0licJv9KpFbtOw==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wherearewe/-/wherearewe-1.0.2.tgz",
"integrity": "sha512-HyLZ7n1Yox+w1qWaFEgP/sMs5D7ka2UXmoVNaY0XzbEHLGljo4ScBchYm6cWRYNO33tmFX3Mgg4BiZkDOjihyw==",
"requires": {
"is-electron": "^2.2.0"
}

View File

@ -3,7 +3,7 @@
"version": "0.1.0",
"private": true,
"dependencies": {
"@fluencelabs/fluence": "0.22.0",
"@fluencelabs/fluence": "^0.23.0",
"@fluencelabs/fluence-network-environment": "^1.0.13",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^11.2.7",
@ -20,7 +20,7 @@
"web-vitals": "^1.1.2"
},
"scripts": {
"postinstall": "copy-avm-public public",
"postinstall": "copy-marine public",
"prestart": "npm run compile-aqua",
"prebuild": "npm run compile-aqua",
"start": "react-scripts start",
@ -52,7 +52,7 @@
]
},
"devDependencies": {
"@fluencelabs/aqua": "^0.7.1-300",
"@fluencelabs/aqua": "^0.7.2-303",
"@fluencelabs/aqua-lib": "^0.4.3",
"@types/jest-environment-puppeteer": "^4.4.1",
"@types/puppeteer": "^5.4.4",

File diff suppressed because one or more lines are too long

View File

@ -1,155 +1,153 @@
import React, { useEffect, useState } from "react";
import logo from "./logo.svg";
import "./App.scss";
import React, { useEffect, useState } from 'react';
import logo from './logo.svg';
import './App.scss';
import { Fluence } from "@fluencelabs/fluence";
import { krasnodar } from "@fluencelabs/fluence-network-environment";
import { sayHello, registerHelloPeer } from "./_aqua/getting-started";
import { Fluence } from '@fluencelabs/fluence';
import { krasnodar } from '@fluencelabs/fluence-network-environment';
import { sayHello, registerHelloPeer } from './_aqua/getting-started';
const relayNodes = [krasnodar[0], krasnodar[1], krasnodar[2]];
const relayNodes = [krasnodar[4], krasnodar[5], krasnodar[6]];
function App() {
const [isConnected, setIsConnected] = useState<boolean>(false);
const [helloMessage, setHelloMessage] = useState<string | null>(null);
const [isConnected, setIsConnected] = useState<boolean>(false);
const [helloMessage, setHelloMessage] = useState<string | null>(null);
const [peerIdInput, setPeerIdInput] = useState<string>("");
const [relayPeerIdInput, setRelayPeerIdInput] = useState<string>("");
const [peerIdInput, setPeerIdInput] = useState<string>('');
const [relayPeerIdInput, setRelayPeerIdInput] = useState<string>('');
const connect = async (relayPeerId: string) => {
try {
await Fluence.start({ connectTo: relayPeerId });
setIsConnected(true);
// Register handler for this call in aqua:
// HelloPeer.hello(%init_peer_id%)
registerHelloPeer({
hello: (from) => {
setHelloMessage("Hello from: \n" + from);
return "Hello back to you, \n" + from;
const connect = async (relayPeerId: string) => {
try {
await Fluence.start({ connectTo: relayPeerId });
setIsConnected(true);
// Register handler for this call in aqua:
// HelloPeer.hello(%init_peer_id%)
registerHelloPeer({
hello: (from) => {
setHelloMessage('Hello from: \n' + from);
return 'Hello back to you, \n' + from;
},
});
} catch (err) {
console.log('Peer initialization failed', err);
}
});
} catch (err) {
console.log("Peer initialization failed", err);
}
};
};
const helloBtnOnClick = async () => {
if (!Fluence.getStatus().isConnected) {
return;
}
// Using aqua is as easy as calling a javascript funсtion
const res = await sayHello(peerIdInput, relayPeerIdInput);
setHelloMessage(res);
};
const helloBtnOnClick = async () => {
if (!Fluence.getStatus().isConnected) {
return;
}
return (
<div className="App">
<header>
<img src={logo} className="logo" alt="logo" />
</header>
// Using aqua is as easy as calling a javascript funсtion
const res = await sayHello(peerIdInput, relayPeerIdInput);
setHelloMessage(res);
};
<div className="content">
{isConnected ? (
<>
<h1>Connected</h1>
<table>
<tbody>
<tr>
<td className="bold">Peer id:</td>
<td className="mono">
<span id="peerId">{Fluence.getStatus().peerId!}</span>
</td>
<td>
<button
className="btn-clipboard"
onClick={() => copyToClipboard(Fluence.getStatus().peerId!)}
>
<i className="gg-clipboard"></i>
</button>
</td>
</tr>
<tr>
<td className="bold">Relay peer id:</td>
<td className="mono">
<span id="relayId">
{Fluence.getStatus().relayPeerId}
</span>
</td>
<td>
<button
className="btn-clipboard"
onClick={() => copyToClipboard(Fluence.getStatus().relayPeerId!)}
>
<i className="gg-clipboard"></i>
</button>
</td>
</tr>
</tbody>
</table>
return (
<div className="App">
<header>
<img src={logo} className="logo" alt="logo" />
</header>
<div>
<h2>Say hello!</h2>
<p className="p">
Now try opening a new tab with the same application. Copy paste
the peer id and relay from the second tab and say hello!
</p>
<div className="row">
<label className="label bold">Target peer id</label>
<input
id="targetPeerId"
className="input"
type="text"
onChange={(e) => setPeerIdInput(e.target.value)}
value={peerIdInput}
/>
</div>
<div className="row">
<label className="label bold">Target relay</label>
<input
id="targetRelayId"
className="input"
type="text"
onChange={(e) => setRelayPeerIdInput(e.target.value)}
value={relayPeerIdInput}
/>
</div>
<div className="row">
<button className="btn btn-hello" onClick={helloBtnOnClick}>
say hello
</button>
</div>
<div className="content">
{isConnected ? (
<>
<h1>Connected</h1>
<table>
<tbody>
<tr>
<td className="bold">Peer id:</td>
<td className="mono">
<span id="peerId">{Fluence.getStatus().peerId!}</span>
</td>
<td>
<button
className="btn-clipboard"
onClick={() => copyToClipboard(Fluence.getStatus().peerId!)}
>
<i className="gg-clipboard"></i>
</button>
</td>
</tr>
<tr>
<td className="bold">Relay peer id:</td>
<td className="mono">
<span id="relayId">{Fluence.getStatus().relayPeerId}</span>
</td>
<td>
<button
className="btn-clipboard"
onClick={() => copyToClipboard(Fluence.getStatus().relayPeerId!)}
>
<i className="gg-clipboard"></i>
</button>
</td>
</tr>
</tbody>
</table>
<div>
<h2>Say hello!</h2>
<p className="p">
Now try opening a new tab with the same application. Copy paste the peer id and relay
from the second tab and say hello!
</p>
<div className="row">
<label className="label bold">Target peer id</label>
<input
id="targetPeerId"
className="input"
type="text"
onChange={(e) => setPeerIdInput(e.target.value)}
value={peerIdInput}
/>
</div>
<div className="row">
<label className="label bold">Target relay</label>
<input
id="targetRelayId"
className="input"
type="text"
onChange={(e) => setRelayPeerIdInput(e.target.value)}
value={relayPeerIdInput}
/>
</div>
<div className="row">
<button className="btn btn-hello" onClick={helloBtnOnClick}>
say hello
</button>
</div>
</div>
</>
) : (
<>
<h1>Intro 1: P2P browser-to-browser</h1>
<h2>Pick a relay</h2>
<ul>
{relayNodes.map((x) => (
<li key={x.peerId}>
<span className="mono">{x.peerId}</span>
<button className="btn" onClick={() => connect(x.multiaddr)}>
Connect
</button>
</li>
))}
</ul>
</>
)}
{helloMessage && (
<>
<h2>Message</h2>
<div id="message"> {helloMessage} </div>
</>
)}
</div>
</>
) : (
<>
<h1>Intro 1: P2P browser-to-browser</h1>
<h2>Pick a relay</h2>
<ul>
{relayNodes.map((x) => (
<li key={x.peerId}>
<span className="mono">{x.peerId}</span>
<button className="btn" onClick={() => connect(x.multiaddr)}>
Connect
</button>
</li>
))}
</ul>
</>
)}
{helloMessage && (
<>
<h2>Message</h2>
<div id="message"> {helloMessage} </div>
</>
)}
</div>
</div>
);
</div>
);
}
const copyToClipboard = (text: string) => {
navigator.clipboard.writeText(text);
navigator.clipboard.writeText(text);
};
export default App;

View File

@ -9,7 +9,7 @@
"version": "0.1.0",
"hasInstallScript": true,
"dependencies": {
"@fluencelabs/fluence": "0.22.0",
"@fluencelabs/fluence": "^0.23.0",
"@fluencelabs/fluence-network-environment": "^1.0.13",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^11.2.7",
@ -25,7 +25,7 @@
"web-vitals": "^1.1.2"
},
"devDependencies": {
"@fluencelabs/aqua": "^0.7.1-300",
"@fluencelabs/aqua": "^0.7.2-303",
"@fluencelabs/aqua-lib": "^0.4.3",
"@types/jest-environment-puppeteer": "^4.4.1",
"@types/puppeteer": "^5.4.4",
@ -2132,14 +2132,14 @@
}
},
"node_modules/@fluencelabs/aqua": {
"version": "0.7.1-300",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.1-300.tgz",
"integrity": "sha512-fwn+b4SSCiCb30Oy5IltBbeZD1V2oyWFLedzR+qJ2wRLiJp0NBp0+22AI3MENy6HJEAfYmU3Hu3GlJW44R0wDQ==",
"version": "0.7.2-303",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.2-303.tgz",
"integrity": "sha512-n2vvb4qwy62ZCbbHAx9lNd08Yo752v/vJcg/vY+zJ1lWdMGZV13YrkDeC75BgwsM9I4otRtPBS2to/aW7MTaFw==",
"dev": true,
"dependencies": {
"@fluencelabs/aqua-ipfs": "0.5.2",
"@fluencelabs/aqua-lib": "0.4.0",
"@fluencelabs/fluence": "0.22.0",
"@fluencelabs/aqua-lib": "0.5.1",
"@fluencelabs/fluence": "0.23.0",
"@fluencelabs/fluence-network-environment": "1.0.13",
"ipfs-http-client": "50.1.2"
},
@ -2170,48 +2170,26 @@
"dev": true
},
"node_modules/@fluencelabs/aqua/node_modules/@fluencelabs/aqua-lib": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.4.0.tgz",
"integrity": "sha512-bad282cCZrE//I+Hzsl/vWgudwXuNiaqJOonv11xkgOBBvL7Gg3SIap8HioNvkaDxIvylVB+POjYJ7E5sGNoVQ==",
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.5.1.tgz",
"integrity": "sha512-XQqbbMuZs8Ha1qdqbyVpjE9AOrjF8QSC6zrWlcDzpNQdTDfoLjB7teJ8QnM7sl8g9FqUHSWXnEZUP/muauf7Bg==",
"dev": true
},
"node_modules/@fluencelabs/avm": {
"version": "0.21.6",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.21.6.tgz",
"integrity": "sha512-QOOB2kO9Uiz01skCfw8JL8QwLd7ObdPc2hkL4IGov1kMv8h3wWl9YM0lOxdXKSdKyZjsIQWKCRbfQUoo0XcX0A==",
"bin": {
"copy-avm": "dist/copyAvm.js"
}
},
"node_modules/@fluencelabs/avm-runner-background": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm-runner-background/-/avm-runner-background-0.2.0.tgz",
"integrity": "sha512-IP4979IlS+1KwNX9zpDF6maLK112lBjd+Go1D/JIt7yP7o12Ch4CREmx2OxZwWOTxQVwoIRuD7Y+K3iTd4AL7Q==",
"dependencies": {
"@fluencelabs/avm-runner-interface": "^0.2.0",
"browser-or-node": "^2.0.0",
"threads": "^1.7.0"
},
"bin": {
"copy-avm-runner": "dist/copyRunnerScript.js"
}
},
"node_modules/@fluencelabs/avm-runner-interface": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm-runner-interface/-/avm-runner-interface-0.2.0.tgz",
"integrity": "sha512-Y41pL+UwZZVdormxju8cJQsNRp6tdER0VqJ9Kg9gH2wd1KJAaYTJkyVbn8NB7fEFRUbqfbb1BXHi9wWBYOgGYQ=="
"version": "0.24.2",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.24.2.tgz",
"integrity": "sha512-BD7pr3ZRHLIb9XVt08i+/fX2+B4l5zln6j+5mEIJmDBQETv6Gz7NdsgKn0jUQueBcztR+mw5w7byM66yf6xEnA=="
},
"node_modules/@fluencelabs/fluence": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.22.0.tgz",
"integrity": "sha512-53pgxoxguLg3mKKVtc4lTNBQa2Y3VHwKE5Zdnl6ZiHeNu7JUhSw/aK65Y93ZIL0Hmql/HWlGi+NNBT9uKby93A==",
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.23.0.tgz",
"integrity": "sha512-HbSmOzXnRaLKUfS75FreXJ6E1P4HA+Qi0yUFD1VfEyvN5p40ujzHGu5wv+6hHOQnBJPkWse9Lv4U9NQVdwUzvQ==",
"dependencies": {
"@chainsafe/libp2p-noise": "^4.1.1",
"@fluencelabs/avm": "^0.21.3",
"@fluencelabs/avm-runner-background": "0.2.0",
"@fluencelabs/avm-runner-interface": "^0.2.0",
"@fluencelabs/marine-js": "0.1.0",
"@fluencelabs/avm": "0.24.2",
"@fluencelabs/marine-js": "0.2.5",
"async": "3.2.0",
"browser-or-node": "^2.0.0",
"bs58": "4.0.1",
"buffer": "^6.0.3",
"cids": "0.8.1",
@ -2231,7 +2209,7 @@
"uuid": "8.3.0"
},
"bin": {
"copy-avm-public": "dist/tools/copyAvmPublic.js"
"copy-marine": "dist/tools/copyMarine.js"
}
},
"node_modules/@fluencelabs/fluence-network-environment": {
@ -2240,11 +2218,16 @@
"integrity": "sha512-2pci3T0sUHE08jwEs1r/vHKVT4XUh/A3j/QJ0eIhddsxyIjEksjdn05X7DF6STD14CF8GgBVOJEPgav8qaUMpA=="
},
"node_modules/@fluencelabs/marine-js": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/marine-js/-/marine-js-0.1.0.tgz",
"integrity": "sha512-vpjrwYLhd54xsvKp24SpY+szgzqNg/t2J+q4NyHCeQkhJK9nVlXfZBvaa60Ji2MYTQ6ikWrCUVldmk0xN/Q0uQ==",
"bin": {
"copy-marine": "dist/copyMarine.js"
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/@fluencelabs/marine-js/-/marine-js-0.2.5.tgz",
"integrity": "sha512-nGXuXdZd9gJX6dRyZcesnoRhZmSNCJFbHA25TKJ36x8KB+AKt+FCgRBht8M0+DlwBYow5mqOZlebz3XgSpRWVA==",
"dependencies": {
"@wasmer/wasi": "^0.12.0",
"@wasmer/wasmfs": "^0.12.0",
"browser-or-node": "^2.0.0",
"buffer": "^6.0.3",
"threads": "^1.7.0",
"ts-jest": "^27.1.4"
}
},
"node_modules/@hapi/hoek": {
@ -4213,6 +4196,41 @@
"resolved": "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz",
"integrity": "sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w=="
},
"node_modules/@wasmer/wasi": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@wasmer/wasi/-/wasi-0.12.0.tgz",
"integrity": "sha512-FJhLZKAfLWm/yjQI7eCRHNbA8ezmb7LSpUYFkHruZXs2mXk2+DaQtSElEtOoNrVQ4vApTyVaAd5/b7uEu8w6wQ==",
"dependencies": {
"browser-process-hrtime": "^1.0.0",
"buffer-es6": "^4.9.3",
"path-browserify": "^1.0.0",
"randomfill": "^1.0.4"
}
},
"node_modules/@wasmer/wasmfs": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@wasmer/wasmfs/-/wasmfs-0.12.0.tgz",
"integrity": "sha512-m1ftchyQ1DfSenm5XbbdGIpb6KJHH5z0gODo3IZr6lATkj4WXfX/UeBTZ0aG9YVShBp+kHLdUHvOkqjy6p/GWw==",
"dependencies": {
"memfs": "3.0.4",
"pako": "^1.0.11",
"tar-stream": "^2.1.0"
}
},
"node_modules/@wasmer/wasmfs/node_modules/fs-monkey": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-0.3.3.tgz",
"integrity": "sha512-FNUvuTAJ3CqCQb5ELn+qCbGR/Zllhf2HtwsdAtBi59s1WeCjKMT81fHcSu7dwIskqGVK+MmOrb7VOBlq3/SItw=="
},
"node_modules/@wasmer/wasmfs/node_modules/memfs": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/memfs/-/memfs-3.0.4.tgz",
"integrity": "sha512-OcZEzwX9E5AoY8SXjuAvw0DbIAYwUzV/I236I8Pqvrlv7sL/Y0E9aRCon05DhaV8pg1b32uxj76RgW0s5xjHBA==",
"dependencies": {
"fast-extend": "1.0.2",
"fs-monkey": "0.3.3"
}
},
"node_modules/@webassemblyjs/ast": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
@ -5648,7 +5666,6 @@
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
"integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
"dev": true,
"dependencies": {
"fast-json-stable-stringify": "2.x"
},
@ -5705,6 +5722,11 @@
"node": "*"
}
},
"node_modules/buffer-es6": {
"version": "4.9.3",
"resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz",
"integrity": "sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ="
},
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@ -7607,7 +7629,6 @@
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"dev": true,
"dependencies": {
"once": "^1.4.0"
}
@ -8659,6 +8680,11 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"node_modules/fast-extend": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/fast-extend/-/fast-extend-1.0.2.tgz",
"integrity": "sha512-XXA9RmlPatkFKUzqVZAFth18R4Wo+Xug/S+C7YlYA3xrXwfPlW3dqNwOb4hvQo7wZJ2cNDYhrYuPzVOfHy5/uQ=="
},
"node_modules/fast-fifo": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.1.0.tgz",
@ -9119,9 +9145,7 @@
"node_modules/fs-constants": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
"dev": true,
"peer": true
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
},
"node_modules/fs-exists-sync": {
"version": "0.1.0",
@ -14074,8 +14098,7 @@
"node_modules/make-error": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
"dev": true
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
},
"node_modules/makeerror": {
"version": "1.0.12",
@ -15598,6 +15621,11 @@
"node": ">=6"
}
},
"node_modules/pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
},
"node_modules/param-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
@ -15672,6 +15700,11 @@
"tslib": "^2.0.3"
}
},
"node_modules/path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
},
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@ -17248,6 +17281,15 @@
"safe-buffer": "^5.1.0"
}
},
"node_modules/randomfill": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
"integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
"dependencies": {
"randombytes": "^2.0.5",
"safe-buffer": "^5.1.0"
}
},
"node_modules/range-parser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
@ -19592,8 +19634,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"dev": true,
"peer": true,
"dependencies": {
"bl": "^4.0.3",
"end-of-stream": "^1.4.1",
@ -19609,8 +19649,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
"peer": true,
"dependencies": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
@ -19621,7 +19659,6 @@
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"dev": true,
"funding": [
{
"type": "github",
@ -19636,7 +19673,6 @@
"url": "https://feross.org/support"
}
],
"peer": true,
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
@ -19964,10 +20000,9 @@
"integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA=="
},
"node_modules/ts-jest": {
"version": "27.1.3",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz",
"integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==",
"dev": true,
"version": "27.1.4",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz",
"integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==",
"dependencies": {
"bs-logger": "0.x",
"fast-json-stable-stringify": "2.x",
@ -19988,7 +20023,6 @@
"@babel/core": ">=7.0.0-beta.0 <8",
"@types/jest": "^27.0.0",
"babel-jest": ">=27.0.0 <28",
"esbuild": "~0.14.0",
"jest": "^27.0.0",
"typescript": ">=3.8 <5.0"
},
@ -20011,7 +20045,6 @@
"version": "7.3.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
"integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
},
@ -23063,22 +23096,22 @@
}
},
"@fluencelabs/aqua": {
"version": "0.7.1-300",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.1-300.tgz",
"integrity": "sha512-fwn+b4SSCiCb30Oy5IltBbeZD1V2oyWFLedzR+qJ2wRLiJp0NBp0+22AI3MENy6HJEAfYmU3Hu3GlJW44R0wDQ==",
"version": "0.7.2-303",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.2-303.tgz",
"integrity": "sha512-n2vvb4qwy62ZCbbHAx9lNd08Yo752v/vJcg/vY+zJ1lWdMGZV13YrkDeC75BgwsM9I4otRtPBS2to/aW7MTaFw==",
"dev": true,
"requires": {
"@fluencelabs/aqua-ipfs": "0.5.2",
"@fluencelabs/aqua-lib": "0.4.0",
"@fluencelabs/fluence": "0.22.0",
"@fluencelabs/aqua-lib": "0.5.1",
"@fluencelabs/fluence": "0.23.0",
"@fluencelabs/fluence-network-environment": "1.0.13",
"ipfs-http-client": "50.1.2"
},
"dependencies": {
"@fluencelabs/aqua-lib": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.4.0.tgz",
"integrity": "sha512-bad282cCZrE//I+Hzsl/vWgudwXuNiaqJOonv11xkgOBBvL7Gg3SIap8HioNvkaDxIvylVB+POjYJ7E5sGNoVQ==",
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.5.1.tgz",
"integrity": "sha512-XQqbbMuZs8Ha1qdqbyVpjE9AOrjF8QSC6zrWlcDzpNQdTDfoLjB7teJ8QnM7sl8g9FqUHSWXnEZUP/muauf7Bg==",
"dev": true
}
}
@ -23107,36 +23140,20 @@
"dev": true
},
"@fluencelabs/avm": {
"version": "0.21.6",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.21.6.tgz",
"integrity": "sha512-QOOB2kO9Uiz01skCfw8JL8QwLd7ObdPc2hkL4IGov1kMv8h3wWl9YM0lOxdXKSdKyZjsIQWKCRbfQUoo0XcX0A=="
},
"@fluencelabs/avm-runner-background": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm-runner-background/-/avm-runner-background-0.2.0.tgz",
"integrity": "sha512-IP4979IlS+1KwNX9zpDF6maLK112lBjd+Go1D/JIt7yP7o12Ch4CREmx2OxZwWOTxQVwoIRuD7Y+K3iTd4AL7Q==",
"requires": {
"@fluencelabs/avm-runner-interface": "^0.2.0",
"browser-or-node": "^2.0.0",
"threads": "^1.7.0"
}
},
"@fluencelabs/avm-runner-interface": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm-runner-interface/-/avm-runner-interface-0.2.0.tgz",
"integrity": "sha512-Y41pL+UwZZVdormxju8cJQsNRp6tdER0VqJ9Kg9gH2wd1KJAaYTJkyVbn8NB7fEFRUbqfbb1BXHi9wWBYOgGYQ=="
"version": "0.24.2",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.24.2.tgz",
"integrity": "sha512-BD7pr3ZRHLIb9XVt08i+/fX2+B4l5zln6j+5mEIJmDBQETv6Gz7NdsgKn0jUQueBcztR+mw5w7byM66yf6xEnA=="
},
"@fluencelabs/fluence": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.22.0.tgz",
"integrity": "sha512-53pgxoxguLg3mKKVtc4lTNBQa2Y3VHwKE5Zdnl6ZiHeNu7JUhSw/aK65Y93ZIL0Hmql/HWlGi+NNBT9uKby93A==",
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.23.0.tgz",
"integrity": "sha512-HbSmOzXnRaLKUfS75FreXJ6E1P4HA+Qi0yUFD1VfEyvN5p40ujzHGu5wv+6hHOQnBJPkWse9Lv4U9NQVdwUzvQ==",
"requires": {
"@chainsafe/libp2p-noise": "^4.1.1",
"@fluencelabs/avm": "^0.21.3",
"@fluencelabs/avm-runner-background": "0.2.0",
"@fluencelabs/avm-runner-interface": "^0.2.0",
"@fluencelabs/marine-js": "0.1.0",
"@fluencelabs/avm": "0.24.2",
"@fluencelabs/marine-js": "0.2.5",
"async": "3.2.0",
"browser-or-node": "^2.0.0",
"bs58": "4.0.1",
"buffer": "^6.0.3",
"cids": "0.8.1",
@ -23162,9 +23179,17 @@
"integrity": "sha512-2pci3T0sUHE08jwEs1r/vHKVT4XUh/A3j/QJ0eIhddsxyIjEksjdn05X7DF6STD14CF8GgBVOJEPgav8qaUMpA=="
},
"@fluencelabs/marine-js": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/@fluencelabs/marine-js/-/marine-js-0.1.0.tgz",
"integrity": "sha512-vpjrwYLhd54xsvKp24SpY+szgzqNg/t2J+q4NyHCeQkhJK9nVlXfZBvaa60Ji2MYTQ6ikWrCUVldmk0xN/Q0uQ=="
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/@fluencelabs/marine-js/-/marine-js-0.2.5.tgz",
"integrity": "sha512-nGXuXdZd9gJX6dRyZcesnoRhZmSNCJFbHA25TKJ36x8KB+AKt+FCgRBht8M0+DlwBYow5mqOZlebz3XgSpRWVA==",
"requires": {
"@wasmer/wasi": "^0.12.0",
"@wasmer/wasmfs": "^0.12.0",
"browser-or-node": "^2.0.0",
"buffer": "^6.0.3",
"threads": "^1.7.0",
"ts-jest": "^27.1.4"
}
},
"@hapi/hoek": {
"version": "9.2.1",
@ -24715,6 +24740,43 @@
"resolved": "https://registry.npmjs.org/@vascosantos/moving-average/-/moving-average-1.1.0.tgz",
"integrity": "sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w=="
},
"@wasmer/wasi": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@wasmer/wasi/-/wasi-0.12.0.tgz",
"integrity": "sha512-FJhLZKAfLWm/yjQI7eCRHNbA8ezmb7LSpUYFkHruZXs2mXk2+DaQtSElEtOoNrVQ4vApTyVaAd5/b7uEu8w6wQ==",
"requires": {
"browser-process-hrtime": "^1.0.0",
"buffer-es6": "^4.9.3",
"path-browserify": "^1.0.0",
"randomfill": "^1.0.4"
}
},
"@wasmer/wasmfs": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@wasmer/wasmfs/-/wasmfs-0.12.0.tgz",
"integrity": "sha512-m1ftchyQ1DfSenm5XbbdGIpb6KJHH5z0gODo3IZr6lATkj4WXfX/UeBTZ0aG9YVShBp+kHLdUHvOkqjy6p/GWw==",
"requires": {
"memfs": "3.0.4",
"pako": "^1.0.11",
"tar-stream": "^2.1.0"
},
"dependencies": {
"fs-monkey": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-0.3.3.tgz",
"integrity": "sha512-FNUvuTAJ3CqCQb5ELn+qCbGR/Zllhf2HtwsdAtBi59s1WeCjKMT81fHcSu7dwIskqGVK+MmOrb7VOBlq3/SItw=="
},
"memfs": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/memfs/-/memfs-3.0.4.tgz",
"integrity": "sha512-OcZEzwX9E5AoY8SXjuAvw0DbIAYwUzV/I236I8Pqvrlv7sL/Y0E9aRCon05DhaV8pg1b32uxj76RgW0s5xjHBA==",
"requires": {
"fast-extend": "1.0.2",
"fs-monkey": "0.3.3"
}
}
}
},
"@webassemblyjs/ast": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
@ -25838,7 +25900,6 @@
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
"integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
"dev": true,
"requires": {
"fast-json-stable-stringify": "2.x"
}
@ -25875,6 +25936,11 @@
"dev": true,
"peer": true
},
"buffer-es6": {
"version": "4.9.3",
"resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz",
"integrity": "sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ="
},
"buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@ -27303,7 +27369,6 @@
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"dev": true,
"requires": {
"once": "^1.4.0"
}
@ -28089,6 +28154,11 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"fast-extend": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/fast-extend/-/fast-extend-1.0.2.tgz",
"integrity": "sha512-XXA9RmlPatkFKUzqVZAFth18R4Wo+Xug/S+C7YlYA3xrXwfPlW3dqNwOb4hvQo7wZJ2cNDYhrYuPzVOfHy5/uQ=="
},
"fast-fifo": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.1.0.tgz",
@ -28424,9 +28494,7 @@
"fs-constants": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
"dev": true,
"peer": true
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
},
"fs-exists-sync": {
"version": "0.1.0",
@ -32476,8 +32544,7 @@
"make-error": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
"dev": true
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
},
"makeerror": {
"version": "1.0.12",
@ -33602,6 +33669,11 @@
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
"pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
},
"param-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
@ -33661,6 +33733,11 @@
"tslib": "^2.0.3"
}
},
"path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
},
"path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@ -34696,6 +34773,15 @@
"safe-buffer": "^5.1.0"
}
},
"randomfill": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
"integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
"requires": {
"randombytes": "^2.0.5",
"safe-buffer": "^5.1.0"
}
},
"range-parser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
@ -36537,8 +36623,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"dev": true,
"peer": true,
"requires": {
"bl": "^4.0.3",
"end-of-stream": "^1.4.1",
@ -36551,8 +36635,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
"peer": true,
"requires": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
@ -36563,8 +36645,6 @@
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"dev": true,
"peer": true,
"requires": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
@ -36803,10 +36883,9 @@
"integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA=="
},
"ts-jest": {
"version": "27.1.3",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz",
"integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==",
"dev": true,
"version": "27.1.4",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz",
"integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==",
"requires": {
"bs-logger": "0.x",
"fast-json-stable-stringify": "2.x",
@ -36822,7 +36901,6 @@
"version": "7.3.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
"integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"dev": true,
"requires": {
"lru-cache": "^6.0.0"
}

View File

@ -3,7 +3,7 @@
"version": "0.1.0",
"private": true,
"dependencies": {
"@fluencelabs/fluence": "0.22.0",
"@fluencelabs/fluence": "^0.23.0",
"@fluencelabs/fluence-network-environment": "^1.0.13",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^11.2.7",
@ -19,7 +19,7 @@
"web-vitals": "^1.1.2"
},
"scripts": {
"postinstall": "copy-avm-public public",
"postinstall": "copy-marine public",
"prestart": "npm run compile-aqua",
"prebuild": "npm run compile-aqua",
"start": "react-scripts start",
@ -51,7 +51,7 @@
]
},
"devDependencies": {
"@fluencelabs/aqua": "^0.7.1-300",
"@fluencelabs/aqua": "^0.7.2-303",
"@fluencelabs/aqua-lib": "^0.4.3",
"@types/jest-environment-puppeteer": "^4.4.1",
"@types/puppeteer": "^5.4.4",

File diff suppressed because one or more lines are too long

View File

@ -1,157 +1,153 @@
import React, { useState } from "react";
import logo from "./logo.svg";
import "./App.scss";
import React, { useState } from 'react';
import logo from './logo.svg';
import './App.scss';
import { Fluence } from "@fluencelabs/fluence";
import { krasnodar } from "@fluencelabs/fluence-network-environment";
import { registerHelloPeer, sayHello } from "./_aqua/getting-started";
import { Fluence } from '@fluencelabs/fluence';
import { krasnodar } from '@fluencelabs/fluence-network-environment';
import { registerHelloPeer, sayHello } from './_aqua/getting-started';
const relayNodes = [krasnodar[0], krasnodar[1], krasnodar[2]];
const relayNodes = [krasnodar[3], krasnodar[4], krasnodar[5]];
function App() {
const [isConnected, setIsConnected] = useState<boolean>(false);
const [helloMessage, setHelloMessage] = useState<string | null>(null);
const [isConnected, setIsConnected] = useState<boolean>(false);
const [helloMessage, setHelloMessage] = useState<string | null>(null);
const [peerIdInput, setPeerIdInput] = useState<string>("");
const [relayPeerIdInput, setRelayPeerIdInput] = useState<string>("");
const [peerIdInput, setPeerIdInput] = useState<string>('');
const [relayPeerIdInput, setRelayPeerIdInput] = useState<string>('');
const connect = async (relayPeerId: string) => {
try {
await Fluence.start({ connectTo: relayPeerId });
setIsConnected(true);
// Register handler for this call in aqua:
// HelloPeer.hello(%init_peer_id%)
registerHelloPeer({
hello: (from) => {
setHelloMessage("Hello from: \n" + from);
return "Hello back to you, \n" + from;
const connect = async (relayPeerId: string) => {
try {
await Fluence.start({ connectTo: relayPeerId });
setIsConnected(true);
// Register handler for this call in aqua:
// HelloPeer.hello(%init_peer_id%)
registerHelloPeer({
hello: (from) => {
setHelloMessage('Hello from: \n' + from);
return 'Hello back to you, \n' + from;
},
});
} catch (err) {
console.log('Peer initialization failed', err);
}
});
} catch (err) {
console.log("Peer initialization failed", err);
}
};
};
const helloBtnOnClick = async () => {
if (!isConnected) {
return;
}
// Using aqua is as easy as calling a javascript funсtion
const res = await sayHello(peerIdInput, relayPeerIdInput);
setHelloMessage(res);
};
const helloBtnOnClick = async () => {
if (!isConnected) {
return;
}
return (
<div className="App">
<header>
<img src={logo} className="logo" alt="logo" />
</header>
// Using aqua is as easy as calling a javascript funсtion
const res = await sayHello(peerIdInput, relayPeerIdInput);
setHelloMessage(res);
};
<div className="content">
{isConnected ? (
<>
<h1>Connected</h1>
<table>
<tbody>
<tr>
<td className="bold">Peer id:</td>
<td className="mono">
<span id="peerId">
{Fluence.getStatus().peerId!}
</span>
</td>
<td>
<button
className="btn-clipboard"
onClick={() => copyToClipboard(Fluence.getStatus().peerId!)}
>
<i className="gg-clipboard"></i>
</button>
</td>
</tr>
<tr>
<td className="bold">Relay peer id:</td>
<td className="mono">
<span id="relayId">
{Fluence.getStatus().relayPeerId!}
</span>
</td>
<td>
<button
className="btn-clipboard"
onClick={() => copyToClipboard(Fluence.getStatus().relayPeerId!)}
>
<i className="gg-clipboard"></i>
</button>
</td>
</tr>
</tbody>
</table>
return (
<div className="App">
<header>
<img src={logo} className="logo" alt="logo" />
</header>
<div>
<h2>Say hello!</h2>
<p className="p">
Now try opening a new tab with the same application. Copy paste
the peer id and relay from the second tab and say hello!
</p>
<div className="row">
<label className="label bold">Target peer id</label>
<input
id="targetPeerId"
className="input"
type="text"
onChange={(e) => setPeerIdInput(e.target.value)}
value={peerIdInput}
/>
</div>
<div className="row">
<label className="label bold">Target relay</label>
<input
id="targetRelayId"
className="input"
type="text"
onChange={(e) => setRelayPeerIdInput(e.target.value)}
value={relayPeerIdInput}
/>
</div>
<div className="row">
<button className="btn btn-hello" onClick={helloBtnOnClick}>
say hello
</button>
</div>
<div className="content">
{isConnected ? (
<>
<h1>Connected</h1>
<table>
<tbody>
<tr>
<td className="bold">Peer id:</td>
<td className="mono">
<span id="peerId">{Fluence.getStatus().peerId!}</span>
</td>
<td>
<button
className="btn-clipboard"
onClick={() => copyToClipboard(Fluence.getStatus().peerId!)}
>
<i className="gg-clipboard"></i>
</button>
</td>
</tr>
<tr>
<td className="bold">Relay peer id:</td>
<td className="mono">
<span id="relayId">{Fluence.getStatus().relayPeerId!}</span>
</td>
<td>
<button
className="btn-clipboard"
onClick={() => copyToClipboard(Fluence.getStatus().relayPeerId!)}
>
<i className="gg-clipboard"></i>
</button>
</td>
</tr>
</tbody>
</table>
<div>
<h2>Say hello!</h2>
<p className="p">
Now try opening a new tab with the same application. Copy paste the peer id and relay
from the second tab and say hello!
</p>
<div className="row">
<label className="label bold">Target peer id</label>
<input
id="targetPeerId"
className="input"
type="text"
onChange={(e) => setPeerIdInput(e.target.value)}
value={peerIdInput}
/>
</div>
<div className="row">
<label className="label bold">Target relay</label>
<input
id="targetRelayId"
className="input"
type="text"
onChange={(e) => setRelayPeerIdInput(e.target.value)}
value={relayPeerIdInput}
/>
</div>
<div className="row">
<button className="btn btn-hello" onClick={helloBtnOnClick}>
say hello
</button>
</div>
</div>
</>
) : (
<>
<h1>Intro 3: Computing on the network</h1>
<h2>Pick a relay</h2>
<ul>
{relayNodes.map((x) => (
<li key={x.peerId}>
<span className="mono">{x.peerId}</span>
<button className="btn" onClick={() => connect(x.multiaddr)}>
Connect
</button>
</li>
))}
</ul>
</>
)}
{helloMessage && (
<>
<h2>Message</h2>
<div id="message"> {helloMessage} </div>
</>
)}
</div>
</>
) : (
<>
<h1>Intro 3: Computing on the network</h1>
<h2>Pick a relay</h2>
<ul>
{relayNodes.map((x) => (
<li key={x.peerId}>
<span className="mono">{x.peerId}</span>
<button className="btn" onClick={() => connect(x.multiaddr)}>
Connect
</button>
</li>
))}
</ul>
</>
)}
{helloMessage && (
<>
<h2>Message</h2>
<div id="message"> {helloMessage} </div>
</>
)}
</div>
</div>
);
</div>
);
}
const copyToClipboard = (text: string) => {
navigator.clipboard.writeText(text);
navigator.clipboard.writeText(text);
};
export default App;