Static site hosting via tangled
1import EventEmitter from "node:events"; 2 3export class KnotEventListener extends EventEmitter { 4 constructor({ knotDomain }) { 5 super(); 6 this.knotDomain = knotDomain; 7 } 8 9 async start() { 10 const ws = new WebSocket(`wss://${this.knotDomain}/events`); 11 ws.onmessage = (event) => this.handleMessage(event); 12 return new Promise((resolve) => { 13 ws.onopen = () => { 14 resolve(); 15 }; 16 }); 17 } 18 19 async handleMessage(event) { 20 const data = JSON.parse(event.data); 21 if (data.nsid === "sh.tangled.git.refUpdate") { 22 const event = { 23 details: { 24 ownerDid: data.event.repoDid, 25 repoName: data.event.repoName, 26 }, 27 }; 28 this.emit("refUpdate", event); 29 } 30 } 31}