From ed85be4468664e86609d659aa0bdfea7891d9792 Mon Sep 17 00:00:00 2001 From: tiero <3596602+tiero@users.noreply.github.com> Date: Fri, 6 Jan 2023 01:21:02 +0100 Subject: [PATCH] lint --- src/connect.ts | 36 +++++++++----------- src/rpc.ts | 91 ++++++++++++++++---------------------------------- 2 files changed, 45 insertions(+), 82 deletions(-) diff --git a/src/connect.ts b/src/connect.ts index d6bf112..aec11a0 100644 --- a/src/connect.ts +++ b/src/connect.ts @@ -1,6 +1,7 @@ -import { getPublicKey, Event, nip04 } from 'nostr-tools'; -import { isValidRequest, NostrRPC } from './rpc'; import EventEmitter from 'events'; +import { Event, getPublicKey, nip04 } from 'nostr-tools'; + +import { isValidRequest, NostrRPC } from './rpc'; export interface Metadata { name: string; @@ -29,9 +30,10 @@ export class ConnectURI { throw new Error('Invalid connect URI: missing metadata'); } + /* eslint-disable @typescript-eslint/no-unused-vars */ try { const md = JSON.parse(metadata); - return new ConnectURI({ target: target, metadata: md, relayURL: relay }); + return new ConnectURI({ target, metadata: md, relayURL: relay }); } catch (ignore) { throw new Error('Invalid connect URI: metadata is not valid JSON'); } @@ -52,9 +54,9 @@ export class ConnectURI { } toString() { - return `nostr://connect?target=${this.target}&metadata=${JSON.stringify( - this.metadata - )}&relay=${this.relayURL}`; + return `nostr://connect?target=${this.target}&metadata=${JSON.stringify(this.metadata)}&relay=${ + this.relayURL + }`; } async approve(secretKey: string): Promise { @@ -72,8 +74,6 @@ export class ConnectURI { }, { skipResponse: true } ); - - return; } async reject(secretKey: string): Promise { @@ -91,8 +91,6 @@ export class ConnectURI { }, { skipResponse: true } ); - - return; } } @@ -120,12 +118,9 @@ export class Connect { const sub = await this.rpc.listen(); sub.on('event', async (event: Event) => { let payload; + /* eslint-disable @typescript-eslint/no-unused-vars */ try { - const plaintext = await nip04.decrypt( - this.rpc.self.secret, - event.pubkey, - event.content - ); + const plaintext = await nip04.decrypt(this.rpc.self.secret, event.pubkey, event.content); if (!plaintext) throw new Error('failed to decrypt event'); payload = JSON.parse(plaintext); } catch (ignore) { @@ -136,18 +131,19 @@ export class Connect { if (!isValidRequest(payload)) return; switch (payload.method) { - case 'connect': + case 'connect': { if (!payload.params || payload.params.length !== 1) return; const [pubkey] = payload.params; this.target = pubkey; this.events.emit('connect', pubkey); - return; - case 'disconnect': + break; + } + case 'disconnect': { this.target = undefined; this.events.emit('disconnect'); - return; + break; + } default: - return; } }); } diff --git a/src/rpc.ts b/src/rpc.ts index 67ee076..0057fcc 100644 --- a/src/rpc.ts +++ b/src/rpc.ts @@ -1,15 +1,15 @@ import { - relayInit, + Event, + Filter, getEventHash, - signEvent, - validateEvent, - verifySignature, getPublicKey, nip04, - Event, - Sub, - Filter, Relay, + relayInit, + signEvent, + Sub, + validateEvent, + verifySignature, } from 'nostr-tools'; export interface NostrRPCRequest { @@ -65,7 +65,7 @@ export class NostrRPC { if (opts && opts.skipResponse === true) return Promise.resolve(); return new Promise((resolve, reject) => { - let sub = relay.sub([ + const sub = relay.sub([ { kinds: [4], authors: [target], @@ -76,12 +76,9 @@ export class NostrRPC { sub.on('event', async (event: Event) => { let payload; + /* eslint-disable @typescript-eslint/no-unused-vars */ try { - const plaintext = await nip04.decrypt( - this.self.secret, - event.pubkey, - event.content - ); + const plaintext = await nip04.decrypt(this.self.secret, event.pubkey, event.content); if (!plaintext) throw new Error('failed to decrypt event'); payload = JSON.parse(plaintext); } catch (ignore) { @@ -110,7 +107,7 @@ export class NostrRPC { async listen(): Promise { const relay = await connectToRelay(this.relay); - let sub = relay.sub([ + const sub = relay.sub([ { kinds: [4], '#p': [this.self.pubkey], @@ -120,12 +117,9 @@ export class NostrRPC { sub.on('event', async (event: Event) => { let payload: NostrRPCRequest; + /* eslint-disable @typescript-eslint/no-unused-vars */ try { - const plaintext = await nip04.decrypt( - this.self.secret, - event.pubkey, - event.content - ); + const plaintext = await nip04.decrypt(this.self.secret, event.pubkey, event.content); if (!plaintext) throw new Error('failed to decrypt event'); payload = JSON.parse(plaintext); } catch (ignore) { @@ -139,17 +133,9 @@ export class NostrRPC { if (typeof this[payload.method] !== 'function') Promise.resolve(); const response = await this.handleRequest(payload, event); - const body = prepareResponse( - response.id, - response.result, - response.error - ); + const body = prepareResponse(response.id, response.result, response.error); - const responseEvent = await prepareEvent( - this.self.secret, - event.pubkey, - body - ); + const responseEvent = await prepareEvent(this.self.secret, event.pubkey, body); // send response via relay await new Promise((resolve, reject) => { @@ -166,10 +152,7 @@ export class NostrRPC { return sub; } - private async handleRequest( - request: NostrRPCRequest, - event: Event - ): Promise { + private async handleRequest(request: NostrRPCRequest, event: Event): Promise { const { id, method, params } = request; let result = null; let error = null; @@ -196,26 +179,20 @@ export function now(): number { return Math.floor(Date.now() / 1000); } export function randomID(): string { - return Math.random() - .toString() - .slice(2); + return Math.random().toString().slice(2); } -export function prepareRequest( - id: string, - method: string, - params: any[] -): string { +export function prepareRequest(id: string, method: string, params: any[]): string { return JSON.stringify({ id, - method: method, - params: params, + method, + params, }); } export function prepareResponse(id: string, result: any, error: any): string { return JSON.stringify({ - id: id, - result: result, - error: error, + id, + result, + error, }); } export async function prepareEvent( @@ -237,8 +214,8 @@ export async function prepareEvent( const sig = signEvent(event, secretKey); const signedEvent = { ...event, id, sig }; - let ok = validateEvent(signedEvent); - let veryOk = verifySignature(signedEvent); + const ok = validateEvent(signedEvent); + const veryOk = verifySignature(signedEvent); if (!ok || !veryOk) { throw new Error('Event is not valid'); } @@ -250,12 +227,7 @@ export function isValidRequest(payload: any): boolean { if (!payload) return false; const keys = Object.keys(payload); - if ( - !keys.includes('id') || - !keys.includes('method') || - !keys.includes('params') - ) - return false; + if (!keys.includes('id') || !keys.includes('method') || !keys.includes('params')) return false; return true; } @@ -264,12 +236,7 @@ export function isValidResponse(payload: any): boolean { if (!payload) return false; const keys = Object.keys(payload); - if ( - !keys.includes('id') || - !keys.includes('result') || - !keys.includes('error') - ) - return false; + if (!keys.includes('id') || !keys.includes('result') || !keys.includes('error')) return false; return true; } @@ -282,7 +249,7 @@ export async function connectToRelay(realayURL: string) { resolve(); }); relay.on('error', () => { - reject(`not possible to connect to ${relay.url}`); + reject(new Error(`not possible to connect to ${relay.url}`)); }); }); return relay; @@ -291,7 +258,7 @@ export async function broadcastToRelay(relay: Relay, event: Event) { // send request via relay return await new Promise((resolve, reject) => { relay.on('error', () => { - reject(`failed to connect to ${relay.url}`); + reject(new Error(`failed to connect to ${relay.url}`)); }); const pub = relay.publish(event); pub.on('failed', (reason: any) => {