I've created an abomination.
relay.π
```bash
π π¦Relay
π Foundation
π IO
π JSON
π Event class
π Event π
π₯ m π‘π’
π₯ raw π€
π€ id
π€ pubkey
π’ created_at
π’ kind
πΏ tags π‘πΏ
π€ content
π€ sig
π€ rawJson
π
id = mβΏ"id"βοΈπ€
pubkey = mβΏ"pubkey"βοΈπ€
created_at = mβΏ"created_at"βοΈπ’
kind = mβΏ"kind"βοΈπ’
rawJson = raw
β mβοΈ"tags" πββοΈπ
β‘οΈ tags = mβΏ"tags"βοΈπ‘πΏ
πβοΈ
β‘οΈ tags = π‘πΏβοΈ
π
β mβοΈ"content" πββοΈπ
β‘οΈ content = mβΏ"content"βοΈπ€
πβοΈ
β‘οΈ content = π€βοΈ
π
β mβοΈ"sig" πββοΈπ
β‘οΈ sig = mβΏ"sig"βοΈπ€
πβοΈ
β‘οΈ sig = π€βοΈ
π
π
π
π DB class
π DB π
π¦ byId π‘π¦
πΏ events EventπΏ
π
byId = π‘π¦βοΈ
events = EventπΏβοΈ
π
π load from disk
π loadFromFile π€ path ππ
β ππpath πββοΈ π
π€ s = ππpath
β s β π€βοΈ π
βοΈ JSONπsβοΈπ‘π e π
Event ev = π Event e, JSONβ¨e
byIdβΏevβ‘οΈid = ev
eventsπ° ev
π
π
π
π dump to disk
π dumpToFile π€ path ππ
π‘ arr = π‘πΏβοΈ
π ev events π
arrπ° evβ‘οΈmapRepresentationβοΈ
π
πβοΈ path, JSONβ¨arr
π
π hasEvent π€ id β‘οΈ π£ π
β‘οΈ byIdβοΈid
π
π store Event ev ππ
β byIdβοΈevβ‘οΈid βοΈ π
βοΈ
π
byIdβΏevβ‘οΈid = ev
eventsπ° ev
π
π query π‘ f β‘οΈ EventπΏ π
EventπΏ out = EventπΏβοΈ
π ev events π
β matchFilter ev, f π
outπ° ev
π
π
β‘οΈ out
π
π
π match filters
π matchFilter Event ev, π‘ f β‘οΈ π£ π
β fβοΈ"authors" π
πΏ a = fβΏ"authors"βοΈπ‘πΏ
β π§ͺ author a π π
β evβ‘οΈpubkeyπ‘author π
β‘οΈ π
π
π
β‘οΈ π
π
β fβοΈ"kinds" π
πΏ ks = fβΏ"kinds"βοΈπ’πΏ
β π§ͺ k ks π π
β evβ‘οΈkind = k π
β‘οΈ π
π
π
β‘οΈ π
π
β fβοΈ"since" π
β evβ‘οΈcreated_at < fβΏ"since"βοΈπ’ π β‘οΈ π π
π
β fβοΈ"until" π
β evβ‘οΈcreated_at > fβΏ"until"βοΈπ’ π β‘οΈ π π
π
β‘οΈ π
π
π external signature check
π verifySig π€ raw β‘οΈ π£ π
π "node nostr-verify.js", raw β‘οΈ π€ out
β outπ‘"OK" π β‘οΈ π π
β‘οΈ π
π
π main server loop
π runServer ππ
DB db = π DBβοΈ
dbβ‘οΈloadFromFile π€"db.json"
π π
π€ line = πβοΈ
β line = β π
dbβ‘οΈdumpToFile π€"db.json"
π
π
line = lineπ‘
βοΈ JSONπlineβοΈπ‘π obj π
β obj π€ π
Event ev = π Event obj, line
β verifySig line π
dbβ‘οΈstore ev
π JSONβ¨["OK", evβ‘οΈid]
πβοΈ
π JSONβ¨["BAD", evβ‘οΈid]
π
πβοΈ β obj πΏ π
πΏ arr = objβοΈ
β arr[0] = π€"REQ" π
π€ sub = arr[1]βοΈ
π’ i = 2
π β i < arrπ¬ π
π‘ f = arr[i]βοΈ
EventπΏ matched = dbβ‘οΈquery f
π’ sent = 0
π’ limit = β fβοΈ"limit" π fβΏ"limit"βοΈπ’ πβοΈ 1000
π ev matched π
β sent β₯ limit π π
π JSONβ¨["EVENT", sub, evβ‘οΈmapRepresentationβοΈ]
sent = sent + 1
π
i = i + 1
π
π JSONβ¨["EOSE", sub]
π
π
πβοΈ
π JSONβ¨["ERR","parse"]
π
π
π
π π
runServerβοΈ
π
```
Login to reply
Replies (2)
Delete this.
Jokes on you. I'm going to compile it and run it later.