fiatjaf
3 years ago
commit
ddb28f21b0
7 changed files with 163 additions and 0 deletions
@ -0,0 +1,4 @@ |
|||
yarn.lock |
|||
node_modules |
|||
*.wasm |
|||
out.js |
@ -0,0 +1,10 @@ |
|||
semi: false |
|||
arrowParens: avoid |
|||
insertPragma: false |
|||
printWidth: 80 |
|||
proseWrap: preserve |
|||
singleQuote: true |
|||
trailingComma: none |
|||
useTabs: false |
|||
jsxBracketSameLine: false |
|||
bracketSpacing: false |
@ -0,0 +1,4 @@ |
|||
nostr-relay-registry |
|||
-------------------- |
|||
|
|||
a dynamic registry of nostr relays that tests for very basic tasks in real-time. |
@ -0,0 +1,8 @@ |
|||
<!DOCTYPE html> |
|||
|
|||
<meta charset="utf-8" /> |
|||
<title>Nostr Relay Registry</title> |
|||
|
|||
<div id="app"></div> |
|||
|
|||
<script src="out.js"></script> |
@ -0,0 +1,101 @@ |
|||
import {createApp, h} from 'vue' |
|||
import {relayConnect} from 'nostr-tools/relay' |
|||
|
|||
const App = { |
|||
data() { |
|||
return { |
|||
relays: [ |
|||
'wss://nostr-pub.wellorder.net', |
|||
'wss://relayer.fiatjaf.com', |
|||
'wss://nostr.rocks' |
|||
], |
|||
status: {} |
|||
} |
|||
}, |
|||
|
|||
mounted() { |
|||
this.connections = {} |
|||
this.relays.forEach(async url => { |
|||
this.status[url] = {} |
|||
|
|||
try { |
|||
let conn = relayConnect( |
|||
url, |
|||
() => {}, |
|||
() => { |
|||
this.status[url].didConnect = false |
|||
} |
|||
) |
|||
this.status[url].didConnect = true |
|||
|
|||
try { |
|||
await conn.publish({ |
|||
id: '41ce9bc50da77dda5542f020370ecc2b056d8f2be93c1cedf1bf57efcab095b0', |
|||
pubkey: |
|||
'5a462fa6044b4b8da318528a6987a45e3adf832bd1c64bd6910eacfecdf07541', |
|||
created_at: 1640305962, |
|||
kind: 1, |
|||
tags: [], |
|||
content: 'running branle', |
|||
sig: '08e6303565e9282f32bed41eee4136f45418f366c0ec489ef4f90d13de1b3b9fb45e14c74f926441f8155236fb2f6fef5b48a5c52b19298a0585a2c06afe39ed' |
|||
}) |
|||
this.status[url].didPublish = true |
|||
} catch (err) { |
|||
this.status[url].didPublish = false |
|||
} |
|||
|
|||
let {unsub} = conn.sub( |
|||
{ |
|||
cb: () => { |
|||
this.status[url].didQuery = true |
|||
unsub() |
|||
clearTimeout(willUnsub) |
|||
}, |
|||
filter: { |
|||
id: '41ce9bc50da77dda5542f020370ecc2b056d8f2be93c1cedf1bf57efcab095b0' |
|||
} |
|||
}, |
|||
'nostr-registry' |
|||
) |
|||
let willUnsub = setTimeout(() => { |
|||
unsub() |
|||
this.status[url].didQuery = false |
|||
}, 3000) |
|||
} catch (err) { |
|||
this.status[url].didConnect = false |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
render() { |
|||
return h('table', {style: {fontSize: '28px'}}, [ |
|||
h('tr', [h('th'), h('th', 'connect'), h('th', 'read'), h('th', 'write')]), |
|||
...this.relays.map(url => |
|||
h('tr', [ |
|||
h('th', {style: {textAlign: 'right'}}, url), |
|||
...['didConnect', 'didQuery', 'didPublish'].map(attr => |
|||
h( |
|||
'td', |
|||
{ |
|||
style: { |
|||
fontSize: '50px', |
|||
textAlign: 'center', |
|||
padding: '5px 35px', |
|||
color: |
|||
this.status?.[url]?.[attr] === true |
|||
? 'green' |
|||
: this.status?.[url]?.[attr] === false |
|||
? 'red' |
|||
: 'silver' |
|||
} |
|||
}, |
|||
'•' |
|||
) |
|||
) |
|||
]) |
|||
) |
|||
]) |
|||
} |
|||
} |
|||
|
|||
createApp(App).mount('#app') |
@ -0,0 +1,15 @@ |
|||
{ |
|||
"dependencies": { |
|||
"buffer": "^6.0.3", |
|||
"nostr-tools": "^0.12.4", |
|||
"readable-stream": "^3.6.0", |
|||
"vue": "3" |
|||
}, |
|||
"devDependencies": { |
|||
"webpack": "^5.65.0", |
|||
"webpack-cli": "^4.9.1" |
|||
}, |
|||
"scripts": { |
|||
"build": "webpack" |
|||
} |
|||
} |
@ -0,0 +1,21 @@ |
|||
const path = require('path') |
|||
|
|||
module.exports = { |
|||
mode: 'development', |
|||
entry: './main.js', |
|||
output: { |
|||
path: __dirname, |
|||
filename: 'out.js' |
|||
}, |
|||
experiments: {asyncWebAssembly: true}, |
|||
resolve: { |
|||
alias: { |
|||
stream: 'readable-stream' |
|||
}, |
|||
fallback: { |
|||
buffer: 'buffer/index.js', |
|||
stream: 'readable-stream/readable.js', |
|||
crypto: false |
|||
} |
|||
} |
|||
} |
Loading…
Reference in new issue