mirror of
https://github.com/fluencelabs/dashboard
synced 2025-07-31 05:52:06 +00:00
Add eslint & prettier, format index.ts
This commit is contained in:
24
.eslintrc.js
Normal file
24
.eslintrc.js
Normal file
@@ -0,0 +1,24 @@
|
||||
module.exports = {
|
||||
parser: '@typescript-eslint/parser',
|
||||
parserOptions: {
|
||||
ecmaVersion: 12,
|
||||
sourceType: "module", // Allows for the use of imports
|
||||
},
|
||||
env: {
|
||||
browser: true,
|
||||
es2021: true,
|
||||
},
|
||||
extends: [
|
||||
'airbnb-base',
|
||||
'plugin:@typescript-eslint/eslint-recommended',
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
// Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array.
|
||||
"plugin:prettier/recommended"
|
||||
],
|
||||
plugins: [
|
||||
'@typescript-eslint',
|
||||
'prettier'
|
||||
],
|
||||
rules: {
|
||||
},
|
||||
};
|
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"env": {
|
||||
"browser": true,
|
||||
"es2021": true
|
||||
},
|
||||
"extends": [
|
||||
"standard"
|
||||
],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 12
|
||||
},
|
||||
"plugins": [
|
||||
"@typescript-eslint"
|
||||
],
|
||||
"rules": {
|
||||
}
|
||||
}
|
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"tabWidth": 2,
|
||||
"useTabs": false
|
||||
}
|
8
.prettierrc.js
Normal file
8
.prettierrc.js
Normal file
@@ -0,0 +1,8 @@
|
||||
module.exports = {
|
||||
semi: true,
|
||||
trailingComma: "all",
|
||||
singleQuote: true,
|
||||
printWidth: 120,
|
||||
tabWidth: 4,
|
||||
useTabs: false
|
||||
};
|
903
package-lock.json
generated
903
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,8 @@
|
||||
"scripts": {
|
||||
"start": "webpack-serve --open",
|
||||
"pack": "webpack",
|
||||
"dev": "parcel index.html"
|
||||
"dev": "parcel index.html",
|
||||
"prettier-format": "prettier --config .prettierrc 'src/**/*.ts' --write"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -33,9 +34,12 @@
|
||||
"elm-hot-webpack-loader": "1.1.7",
|
||||
"elm-webpack-loader": "7.0.1",
|
||||
"eslint": "^7.14.0",
|
||||
"eslint-config-standard": "^16.0.2",
|
||||
"eslint-config-airbnb": "^18.2.1",
|
||||
"eslint-config-airbnb-base": "^14.2.1",
|
||||
"eslint-config-prettier": "^6.15.0",
|
||||
"eslint-plugin-import": "^2.22.1",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"eslint-plugin-prettier": "^3.1.4",
|
||||
"eslint-plugin-promise": "^4.2.1",
|
||||
"html-webpack-plugin": "4.5.0",
|
||||
"http-server": "0.12.3",
|
||||
|
234
src/index.ts
234
src/index.ts
@@ -16,85 +16,166 @@
|
||||
|
||||
import 'tachyons/css/tachyons.min.css';
|
||||
import './main.css';
|
||||
import { Elm } from './Main.elm';
|
||||
import Fluence from 'fluence';
|
||||
import { build } from 'fluence/dist/particle';
|
||||
import { registerService } from 'fluence/dist/globalState';
|
||||
import { ServiceOne } from 'fluence/dist/service';
|
||||
import * as serviceWorker from './serviceWorker';
|
||||
import { peerIdToSeed, seedToPeerId } from "fluence/dist/seed";
|
||||
import Fluence from "fluence";
|
||||
import { build } from "fluence/dist/particle";
|
||||
import { registerService } from "fluence/dist/globalState";
|
||||
import { Service, ServiceMultiple, ServiceOne } from "fluence/dist/service";
|
||||
import { Elm } from './Main.elm';
|
||||
|
||||
let relayIdx = 1
|
||||
const relayIdx = 1;
|
||||
|
||||
export const stage: { peerId: string; multiaddr: string }[] = [
|
||||
{
|
||||
multiaddr: '/dns4/stage.fluence.dev/tcp/19001/wss/p2p/12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9',
|
||||
peerId: '12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9',
|
||||
},
|
||||
{
|
||||
multiaddr: '/dns4/stage.fluence.dev/tcp/19002/wss/p2p/12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er',
|
||||
peerId: '12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er',
|
||||
},
|
||||
{
|
||||
multiaddr: '/dns4/stage.fluence.dev/tcp/19003/wss/p2p/12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb',
|
||||
peerId: '12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb',
|
||||
},
|
||||
{
|
||||
multiaddr: '/dns4/stage.fluence.dev/tcp/19004/wss/p2p/12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB',
|
||||
peerId: '12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB',
|
||||
},
|
||||
{
|
||||
multiaddr: '/dns4/stage.fluence.dev/tcp/19005/wss/p2p/12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb',
|
||||
peerId: '12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb',
|
||||
},
|
||||
{
|
||||
multiaddr: '/dns4/stage.fluence.dev/tcp/19990/wss/p2p/12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz',
|
||||
peerId: '12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz',
|
||||
},
|
||||
{
|
||||
multiaddr: '/dns4/stage.fluence.dev/tcp/19100/wss/p2p/12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM',
|
||||
peerId: '12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM',
|
||||
},
|
||||
];
|
||||
|
||||
export const faasNet: { peerId: string; multiaddr: string }[] = [
|
||||
{
|
||||
multiaddr: '/ip4/138.68.102.254/tcp/9001/ws/p2p/12D3KooWB9P1xmV3c7ZPpBemovbwCiRRTKd3Kq2jsVPQN4ZukDfy',
|
||||
peerId: '12D3KooWB9P1xmV3c7ZPpBemovbwCiRRTKd3Kq2jsVPQN4ZukDfy',
|
||||
},
|
||||
{
|
||||
multiaddr: '/ip4/165.227.165.192/tcp/9001/ws/p2p/12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB',
|
||||
peerId: '12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB',
|
||||
},
|
||||
{
|
||||
multiaddr: '/ip4/165.227.167.87/tcp/9001/ws/p2p/12D3KooWF7gjXhQ4LaKj6j7ntxsPpGk34psdQicN2KNfBi9bFKXg',
|
||||
peerId: '12D3KooWF7gjXhQ4LaKj6j7ntxsPpGk34psdQicN2KNfBi9bFKXg',
|
||||
},
|
||||
{
|
||||
multiaddr: '/ip4/138.68.70.143/tcp/9001/ws/p2p/12D3KooWKnRcsTpYx9axkJ6d69LPfpPXrkVLe96skuPTAo76LLVH',
|
||||
peerId: '12D3KooWKnRcsTpYx9axkJ6d69LPfpPXrkVLe96skuPTAo76LLVH',
|
||||
},
|
||||
{
|
||||
multiaddr: '/ip4/165.227.161.121/tcp/9001/ws/p2p/12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb',
|
||||
peerId: '12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb',
|
||||
},
|
||||
{
|
||||
multiaddr: '/ip4/159.89.12.142/tcp/9001/ws/p2p/12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb',
|
||||
peerId: '12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb',
|
||||
},
|
||||
{
|
||||
multiaddr: '/ip4/139.59.146.127/tcp/9001/ws/p2p/12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9',
|
||||
peerId: '12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9',
|
||||
},
|
||||
{
|
||||
multiaddr: '/ip4/159.89.9.74/tcp/9001/ws/p2p/12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er',
|
||||
peerId: '12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er',
|
||||
},
|
||||
{
|
||||
multiaddr: '/ip4/159.89.6.161/tcp/9001/ws/p2p/12D3KooWGzNvhSDsgFoHwpWHAyPf1kcTYCGeRBPfznL8J6qdyu2H',
|
||||
peerId: '12D3KooWGzNvhSDsgFoHwpWHAyPf1kcTYCGeRBPfznL8J6qdyu2H',
|
||||
},
|
||||
{
|
||||
multiaddr: '/ip4/165.227.163.146/tcp/9001/ws/p2p/12D3KooWBSdm6TkqnEFrgBuSkpVE3dR1kr6952DsWQRNwJZjFZBv',
|
||||
peerId: '12D3KooWBSdm6TkqnEFrgBuSkpVE3dR1kr6952DsWQRNwJZjFZBv',
|
||||
},
|
||||
{
|
||||
multiaddr: '/ip4/139.59.146.127/tcp/9990/ws/p2p/12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz',
|
||||
peerId: '12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz',
|
||||
},
|
||||
{
|
||||
multiaddr: '/ip4/139.59.146.127/tcp/9100/ws/p2p/12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM',
|
||||
peerId: '12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM',
|
||||
},
|
||||
];
|
||||
|
||||
export const relays: { peerId: string; multiaddr: string }[] = stage;
|
||||
|
||||
function genFlags(peerId: string): any {
|
||||
return {
|
||||
peerId: peerId,
|
||||
relayId: relays[relayIdx].peerId
|
||||
}
|
||||
peerId,
|
||||
relayId: relays[relayIdx].peerId,
|
||||
};
|
||||
}
|
||||
|
||||
function event(name: string, peer: string, peers?: string[], identify?: string[], services?: any[], blueprints?: string[], modules?: string[]) {
|
||||
if (!peers) { peers = null }
|
||||
if (!services) { services = null }
|
||||
if (!modules) { modules = null }
|
||||
if (!identify) { identify = null }
|
||||
if (!blueprints) { blueprints = null }
|
||||
/* eslint-disable */
|
||||
function event(name: string,peer: string,peers?: string[],identify?: string[],services?: any[],blueprints?: string[],modules?: string[],
|
||||
) {
|
||||
if (!peers) { peers = null; }
|
||||
if (!services) { services = null; }
|
||||
if (!modules) { modules = null; }
|
||||
if (!identify) { identify = null; }
|
||||
if (!blueprints) { blueprints = null; }
|
||||
|
||||
return { name, peer, peers, identify, services, modules, blueprints }
|
||||
return { name, peer, peers, identify, services, modules, blueprints };
|
||||
}
|
||||
/* eslint-enable */
|
||||
|
||||
(async () => {
|
||||
|
||||
let pid = await Fluence.generatePeerId()
|
||||
|
||||
let flags = genFlags(pid.toB58String())
|
||||
const pid = await Fluence.generatePeerId();
|
||||
const flags = genFlags(pid.toB58String());
|
||||
|
||||
// If the relay is ever changed, an event shall be sent to elm
|
||||
let client = await Fluence.connect(relays[relayIdx].multiaddr, pid)
|
||||
const client = await Fluence.connect(relays[relayIdx].multiaddr, pid);
|
||||
|
||||
let app = Elm.Main.init({
|
||||
const app = Elm.Main.init({
|
||||
node: document.getElementById('root'),
|
||||
flags: flags
|
||||
flags,
|
||||
});
|
||||
|
||||
let eventService = new ServiceOne("event", (fnName, args: any[]) => {
|
||||
console.log("event service called: ", fnName)
|
||||
console.log("from: ", args[0])
|
||||
console.log("event service args: ", args)
|
||||
const eventService = new ServiceOne('event', (fnName, args: any[]) => {
|
||||
console.log('event service called: ', fnName);
|
||||
console.log('from: ', args[0]);
|
||||
console.log('event service args: ', args);
|
||||
|
||||
try {
|
||||
if (fnName === "peers_discovered") {
|
||||
app.ports.eventReceiver.send(event(fnName, args[0], args[1]))
|
||||
} else if (fnName === "all_info") {
|
||||
app.ports.eventReceiver.send(event(fnName, args[0], undefined, args[1], args[2], args[3], args[4]))
|
||||
if (fnName === 'peers_discovered') {
|
||||
app.ports.eventReceiver.send(event(fnName, args[0], args[1]));
|
||||
} else if (fnName === 'all_info') {
|
||||
app.ports.eventReceiver.send(event(fnName, args[0], undefined, args[1], args[2], args[3], args[4]));
|
||||
} else {
|
||||
console.error("UNHANDLED")
|
||||
console.error('UNHANDLED');
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
console.error(err);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return {}
|
||||
})
|
||||
registerService(eventService)
|
||||
return {};
|
||||
});
|
||||
registerService(eventService);
|
||||
|
||||
app.ports.sendParticle.subscribe(async (part: any) => {
|
||||
console.log("Going to build particle", part)
|
||||
let jsonData = part.data;
|
||||
console.log('Going to build particle', part);
|
||||
const jsonData = part.data;
|
||||
|
||||
let map = new Map<string, string>()
|
||||
for (let v in jsonData) if (jsonData.hasOwnProperty(v)) {
|
||||
map.set(v, jsonData[v])
|
||||
const map = new Map<string, string>();
|
||||
for (const v in jsonData) {
|
||||
if (jsonData.hasOwnProperty(v)) {
|
||||
map.set(v, jsonData[v]);
|
||||
}
|
||||
}
|
||||
|
||||
let particle = await build(client.selfPeerId, part.script, map)
|
||||
await client.sendParticle(particle)
|
||||
})
|
||||
|
||||
const particle = await build(client.selfPeerId, part.script, map);
|
||||
await client.sendParticle(particle);
|
||||
});
|
||||
})();
|
||||
|
||||
// If you want your app to work offline and load faster, you can change
|
||||
@@ -102,10 +183,7 @@ function event(name: string, peer: string, peers?: string[], identify?: string[]
|
||||
// Learn more about service workers: https://bit.ly/CRA-PWA
|
||||
serviceWorker.unregister();
|
||||
|
||||
async function test() {
|
||||
|
||||
|
||||
}
|
||||
async function test() {}
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
@@ -114,51 +192,3 @@ declare global {
|
||||
}
|
||||
|
||||
window.test = test;
|
||||
|
||||
export let stage: { peerId: string; multiaddr: string }[] = [
|
||||
{
|
||||
multiaddr: "/dns4/stage.fluence.dev/tcp/19001/wss/p2p/12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9",
|
||||
peerId: "12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9"
|
||||
},
|
||||
{
|
||||
multiaddr: "/dns4/stage.fluence.dev/tcp/19002/wss/p2p/12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er",
|
||||
peerId: "12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er"
|
||||
},
|
||||
{
|
||||
multiaddr: "/dns4/stage.fluence.dev/tcp/19003/wss/p2p/12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb",
|
||||
peerId: "12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb"
|
||||
},
|
||||
{
|
||||
multiaddr: "/dns4/stage.fluence.dev/tcp/19004/wss/p2p/12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB",
|
||||
peerId: "12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB"
|
||||
},
|
||||
{
|
||||
multiaddr: "/dns4/stage.fluence.dev/tcp/19005/wss/p2p/12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb",
|
||||
peerId: "12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb"
|
||||
},
|
||||
{
|
||||
multiaddr: "/dns4/stage.fluence.dev/tcp/19990/wss/p2p/12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz",
|
||||
peerId: "12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz"
|
||||
},
|
||||
{
|
||||
multiaddr: "/dns4/stage.fluence.dev/tcp/19100/wss/p2p/12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM",
|
||||
peerId: "12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM"
|
||||
}
|
||||
];
|
||||
|
||||
export let faasNet: { peerId: string; multiaddr: string }[] = [
|
||||
{ multiaddr: "/ip4/138.68.102.254/tcp/9001/ws/p2p/12D3KooWB9P1xmV3c7ZPpBemovbwCiRRTKd3Kq2jsVPQN4ZukDfy", peerId: "12D3KooWB9P1xmV3c7ZPpBemovbwCiRRTKd3Kq2jsVPQN4ZukDfy" },
|
||||
{ multiaddr: "/ip4/165.227.165.192/tcp/9001/ws/p2p/12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB", peerId: "12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB" },
|
||||
{ multiaddr: "/ip4/165.227.167.87/tcp/9001/ws/p2p/12D3KooWF7gjXhQ4LaKj6j7ntxsPpGk34psdQicN2KNfBi9bFKXg", peerId: "12D3KooWF7gjXhQ4LaKj6j7ntxsPpGk34psdQicN2KNfBi9bFKXg" },
|
||||
{ multiaddr: "/ip4/138.68.70.143/tcp/9001/ws/p2p/12D3KooWKnRcsTpYx9axkJ6d69LPfpPXrkVLe96skuPTAo76LLVH", peerId: "12D3KooWKnRcsTpYx9axkJ6d69LPfpPXrkVLe96skuPTAo76LLVH" },
|
||||
{ multiaddr: "/ip4/165.227.161.121/tcp/9001/ws/p2p/12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb", peerId: "12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb" },
|
||||
{ multiaddr: "/ip4/159.89.12.142/tcp/9001/ws/p2p/12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb", peerId: "12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb" },
|
||||
{ multiaddr: "/ip4/139.59.146.127/tcp/9001/ws/p2p/12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9", peerId: "12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9" },
|
||||
{ multiaddr: "/ip4/159.89.9.74/tcp/9001/ws/p2p/12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er", peerId: "12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er" },
|
||||
{ multiaddr: "/ip4/159.89.6.161/tcp/9001/ws/p2p/12D3KooWGzNvhSDsgFoHwpWHAyPf1kcTYCGeRBPfznL8J6qdyu2H", peerId: "12D3KooWGzNvhSDsgFoHwpWHAyPf1kcTYCGeRBPfznL8J6qdyu2H" },
|
||||
{ multiaddr: "/ip4/165.227.163.146/tcp/9001/ws/p2p/12D3KooWBSdm6TkqnEFrgBuSkpVE3dR1kr6952DsWQRNwJZjFZBv", peerId: "12D3KooWBSdm6TkqnEFrgBuSkpVE3dR1kr6952DsWQRNwJZjFZBv" },
|
||||
{ multiaddr: "/ip4/139.59.146.127/tcp/9990/ws/p2p/12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz", peerId: "12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz" },
|
||||
{ multiaddr: "/ip4/139.59.146.127/tcp/9100/ws/p2p/12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM", peerId: "12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM" }
|
||||
]
|
||||
|
||||
export let relays: { peerId: string; multiaddr: string }[] = stage;
|
||||
|
Reference in New Issue
Block a user