{"version":3,"file":"nostr-connect.development.cjs","sources":["../src/constants.ts","../src/rpc.ts","../src/connect.ts","../src/nostr.ts"],"sourcesContent":["import {\n  Kind,\n} from 'nostr-tools';\n\nexport const Kinds ={\n    NOSTR_CONNECT: 24133 as Kind\n}\n\nexport const ConnectMethods = {\n  CONNECT: 'connect',\n  DELEGATE: 'delegate',\n  DESCRIBE: 'describe',\n  DISCONNECT: 'disconnect',\n  GET_PUBLIC_KEY: 'get_public_key',\n  SIGN_EVENT: 'sign_event',\n  SIGN_PSBT: 'sign_psbt',\n  NIP04_ENCRYPT: 'nip04_encrypt',\n  NIP04_DECRYPT: 'nip04_decrypt',\n}\n","import EventEmitter from 'events';\n\nimport {\n  Event,\n  getEventHash,\n  validateEvent,\n  verifySignature,\n  getSignature,\n  nip04,\n  Filter,\n  getPublicKey,\n  Relay,\n  relayInit,\n  Sub,\n} from 'nostr-tools';\n\nimport { Kinds } from './constants'\nimport { NostrRPCRequest, NostrRPCResponse, RequestOpts } from './interfaces';\n\nexport class NostrRPC {\n  relay: string;\n  self: { pubkey: string; secret: string };\n  event: Event | undefined;\n  // this is for implementing the response handlers for each method\n  [key: string]: any;\n  // events\n  events = new EventEmitter();\n\n  relayCallConnection: Relay | undefined;\n  relayListenConnection: Relay | undefined;\n\n  constructor(opts: { relay: string; secretKey: string }) {\n    this.relay = opts.relay\n    this.self = {\n      pubkey: getPublicKey(opts.secretKey),\n      secret: opts.secretKey,\n    };\n    this.relayCallConnection = undefined;\n    this.relayListenConnection = undefined;\n  }\n\n  async initRelayConnection() {\n    this.relayCallConnection = await connectToRelay(this.relay);\n    this.relayListenConnection = await connectToRelay(this.relay);\n  }\n\n  async call(\n    {\n      target,\n      request: { id = randomID(), method, params = [] },\n    }: {\n      target: string;\n      request: {\n        id?: string;\n        method: string;\n        params?: any[];\n      };\n    },\n    opts?: RequestOpts\n  ): Promise<any> {\n    // connect to relay\n    const relay: Relay = this.relayCallConnection || await connectToRelay(this.relay);\n    if (relay.status !== 1) await relay.connect();\n    if (!this.relayCallConnection) this.relayCallConnection = relay;\n\n    // prepare request to be sent\n    const request = prepareRequest(id, method, params);\n    const event = await prepareEvent(this.self.secret, target, request);\n    return new Promise<void>(async (resolve, reject) => {\n      const sub = relay.sub([\n        {\n          kinds: [Kinds.NOSTR_CONNECT],\n          authors: [target],\n          '#p': [this.self.pubkey],\n          limit: 1,\n          since: now(),\n        } as Filter,\n      ]);\n\n      await broadcastToRelay(relay, event, true);\n\n      // skip waiting for response from remote\n      if (opts && opts.skipResponse === true) {\n        sub.unsub();\n        resolve();\n      }\n\n      sub.on('event', async (event: Event) => {\n        let payload;\n        /* eslint-disable @typescript-eslint/no-unused-vars */\n        try {\n          const plaintext = await nip04.decrypt(\n            this.self.secret,\n            event.pubkey,\n            event.content\n          );\n          if (!plaintext) throw new Error('failed to decrypt event');\n          payload = JSON.parse(plaintext);\n        } catch (ignore) {\n          return;\n        }\n\n        // ignore all the events that are not NostrRPCResponse events\n        if (!isValidResponse(payload)) return;\n\n        // ignore all the events that are not for this request\n        if (payload.id !== id) return;\n\n        // if the response is an error, reject the promise\n        if (payload.error) {\n          sub.unsub();\n          reject(payload.error);\n        }\n\n        // if the response is a result, resolve the promise\n        if (payload.result) {\n          sub.unsub();\n          resolve(payload.result);\n        }\n      });\n    });\n  }\n\n  async listen(): Promise<Sub> {\n    const relay = this.relayListenConnection || await connectToRelay(this.relay);\n    if (relay.status !== 1) await relay.connect();\n    if (!this.relayListenConnection) this.relayListenConnection = relay;\n    const sub = relay.sub([\n      {\n        kinds: [Kinds.NOSTR_CONNECT],\n        '#p': [this.self.pubkey],\n        since: now(),\n      } as Filter,\n    ]);\n\n    sub.on('event', async (event: Event) => {\n      let payload: NostrRPCRequest;\n      /* eslint-disable @typescript-eslint/no-unused-vars */\n      try {\n        const plaintext = await nip04.decrypt(\n          this.self.secret,\n          event.pubkey,\n          event.content\n        );\n        if (!plaintext) throw new Error('failed to decrypt event');\n        payload = JSON.parse(plaintext);\n      } catch (ignore) {\n        return;\n      }\n\n      // ignore all the events that are not NostrRPCRequest events\n      if (!isValidRequest(payload)) return;\n\n      // handle request\n      if (typeof this[payload.method] !== 'function') Promise.resolve();\n      const response = await this.handleRequest(payload, event);\n\n      const body = prepareResponse(\n        response.id,\n        response.result,\n        response.error\n      );\n\n      const responseEvent = await prepareEvent(\n        this.self.secret,\n        event.pubkey,\n        body\n      );\n\n      // send response via relay\n      relay.publish(responseEvent);\n    });\n\n    return sub;\n  }\n\n  private async handleRequest(\n    request: NostrRPCRequest,\n    event: Event\n  ): Promise<NostrRPCResponse> {\n    const { id, method, params } = request;\n    let result = null;\n    let error = null;\n    try {\n      this.event = event;\n      result = await this[method](...params);\n      this.event = undefined;\n    } catch (e) {\n      if (e instanceof Error) {\n        error = e.message;\n      } else {\n        error = 'unknown error';\n      }\n    }\n    return {\n      id,\n      result,\n      error,\n    };\n  }\n\n  async disconnectRelays(): Promise<void> {\n    if (this.relayCallConnection) {\n      this.relayCallConnection.close();\n      this.relayCallConnection = undefined;\n    }\n    if (this.relayListenConnection) {\n      this.relayListenConnection.close();\n      this.relayListenConnection = undefined;\n    }\n  }\n\n}\n\nexport function now(): number {\n  return Math.floor(Date.now() / 1000);\n}\nexport function randomID(): string {\n  return Math.random()\n    .toString()\n    .slice(2);\n}\nexport function prepareRequest(\n  id: string,\n  method: string,\n  params: any[]\n): string {\n  return JSON.stringify({\n    id,\n    method,\n    params,\n  });\n}\nexport function prepareResponse(id: string, result: any, error: any): string {\n  return JSON.stringify({\n    id,\n    result,\n    error,\n  });\n}\nexport async function prepareEvent(\n  secretKey: string,\n  pubkey: string,\n  content: string\n): Promise<Event> {\n  const cipherText = await nip04.encrypt(secretKey, pubkey, content);\n\n  const event: Event = {\n    kind: Kinds.NOSTR_CONNECT,\n    created_at: now(),\n    pubkey: getPublicKey(secretKey),\n    tags: [['p', pubkey]],\n    content: cipherText,\n    id: '',\n    sig: '',\n  };\n\n  const id = getEventHash(event);\n  const sig = getSignature(event, secretKey);\n\n  const signedEvent = { ...event, id, sig };\n  const ok = validateEvent(signedEvent);\n  const veryOk = verifySignature(signedEvent);\n  if (!ok || !veryOk) {\n    throw new Error('Event is not valid');\n  }\n\n  return signedEvent;\n}\n\nexport function isValidRequest(payload: any): boolean {\n  if (!payload) return false;\n\n  const keys = Object.keys(payload);\n  if (\n    !keys.includes('id') ||\n    !keys.includes('method') ||\n    !keys.includes('params')\n  )\n    return false;\n\n  return true;\n}\n\nexport function isValidResponse(payload: any): boolean {\n  if (!payload) return false;\n\n  const keys = Object.keys(payload);\n  if (\n    !keys.includes('id') ||\n    !keys.includes('result') ||\n    !keys.includes('error')\n  )\n    return false;\n\n  return true;\n}\n\nexport async function connectToRelay(realayURL: string): Promise<Relay> {\n  const relay = relayInit(realayURL);\n  await relay.connect();\n  await new Promise<void>((resolve, reject) => {\n    relay.on('connect', () => {\n      resolve();\n    });\n    relay.on('error', () => {\n      reject(new Error(`not possible to connect to ${relay.url}`));\n    });\n  });\n  return relay;\n}\nexport async function broadcastToRelay(\n  relay: Relay,\n  event: Event,\n  skipSeen: boolean = false\n) {\n  // send request via relay\n  return await new Promise<void>((resolve, reject) => {\n    relay.on('error', () => {\n      reject(new Error(`failed to connect to ${relay.url}`));\n    });\n    const pub = relay.publish(event);\n    if (skipSeen) resolve();\n    pub.on('failed', (reason: any) => {\n      reject(reason);\n    });\n    pub.on('ok', () => {\n      resolve();\n    });\n  });\n}\n","import EventEmitter from 'events';\nimport {\n  Event,\n  Kind,\n  getPublicKey,\n  nip04,\n  nip26\n} from 'nostr-tools';\nimport { SignPSBTResponse } from '@smontero/nostr-ual-common'\n\nimport { ConnectMethods } from './constants';\n\nimport { isValidRequest, NostrRPC } from './rpc';\nimport { RequestOpts } from './interfaces';\n\nexport interface Metadata {\n  name: string;\n  url?: string;\n  description?: string;\n  icons?: string[];\n}\n\nexport enum TimeRanges {\n  FIVE_MINS = '5mins',\n  ONE_HR = '1hour',\n  ONE_DAY = '1day',\n  ONE_WEEK = '1week',\n  ONE_MONTH = '1month',\n  ONE_YEAR = '1year',\n}\nexport const TimeRangeToUnix: Record<TimeRanges, number> = {\n  [TimeRanges.FIVE_MINS]: Math.round(Date.now() / 1000) + 60 * 5,\n  [TimeRanges.ONE_HR]: Math.round(Date.now() / 1000) + 60 * 60,\n  [TimeRanges.ONE_DAY]: Math.round(Date.now() / 1000) + 60 * 60 * 24,\n  [TimeRanges.ONE_WEEK]: Math.round(Date.now() / 1000) + 60 * 60 * 24 * 7,\n  [TimeRanges.ONE_MONTH]: Math.round(Date.now() / 1000) + 60 * 60 * 24 * 30,\n  [TimeRanges.ONE_YEAR]: Math.round(Date.now() / 1000) + 60 * 60 * 24 * 365,\n};\n\nexport class ConnectURI {\n  target: string;\n  metadata: Metadata;\n  relay: string;\n\n  static fromURI(uri: string): ConnectURI {\n    const url = new URL(uri);\n    const target = url.hostname || url.pathname.substring(2);\n    if (!target) throw new Error('Invalid connect URI: missing target');\n    const relay = url.searchParams.get('relay');\n    if (!relay) {\n      throw new Error('Invalid connect URI: missing relay');\n    }\n    const metadata = url.searchParams.get('metadata');\n    if (!metadata) {\n      throw new Error('Invalid connect URI: missing metadata');\n    }\n\n    /* eslint-disable @typescript-eslint/no-unused-vars */\n    try {\n      const md = JSON.parse(metadata);\n      return new ConnectURI({ target, metadata: md, relay });\n    } catch (ignore) {\n      throw new Error('Invalid connect URI: metadata is not valid JSON');\n    }\n  }\n\n  constructor({\n    target,\n    metadata,\n    relay,\n  }: {\n    target: string;\n    metadata: Metadata;\n    relay: string;\n  }) {\n    this.target = target;\n    this.metadata = metadata;\n    this.relay = relay;\n  }\n\n  toString() {\n    return `nostrconnect://${this.target}?metadata=${encodeURIComponent(\n      JSON.stringify(this.metadata)\n    )}&relay=${encodeURIComponent(this.relay)}`;\n  }\n\n  async approve(secretKey: string): Promise<void> {\n    const rpc = new NostrRPC({\n      relay: this.relay,\n      secretKey,\n    });\n    await rpc.call(\n      {\n        target: this.target,\n        request: {\n          method: ConnectMethods.CONNECT,\n          params: [getPublicKey(secretKey)],\n        },\n      },\n      { skipResponse: true }\n    );\n  }\n\n  async reject(secretKey: string): Promise<void> {\n    const rpc = new NostrRPC({\n      relay: this.relay,\n      secretKey,\n    });\n    await rpc.call(\n      {\n        target: this.target,\n        request: {\n          method: ConnectMethods.DISCONNECT,\n          params: [],\n        },\n      },\n      { skipResponse: true }\n    );\n  }\n}\n\nexport class Connect {\n  rpc: NostrRPC;\n  target?: string;\n  events = new EventEmitter();\n\n  constructor({\n    target,\n    relay,\n    secretKey,\n  }: {\n    secretKey: string;\n    target?: string;\n    relay: string;\n  }) {\n    this.rpc = new NostrRPC({ relay, secretKey });\n    if (target) {\n      this.target = target;\n    }\n  }\n\n  async init() {\n    await this.rpc.initRelayConnection();\n    const sub = await this.rpc.listen();\n    sub.on('event', async (event: Event) => {\n      let payload;\n      /* eslint-disable @typescript-eslint/no-unused-vars */\n      try {\n        const plaintext = await nip04.decrypt(\n          this.rpc.self.secret,\n          event.pubkey,\n          event.content\n        );\n        if (!plaintext) throw new Error('failed to decrypt event');\n        payload = JSON.parse(plaintext);\n      } catch (ignore) {\n        return;\n      }\n\n      // ignore all the events that are not NostrRPCRequest events\n      if (!isValidRequest(payload)) return;\n\n      switch (payload.method) {\n        case ConnectMethods.CONNECT: {\n          if (!payload.params || payload.params.length !== 1)\n            throw new Error('connect: missing pubkey');\n          const [pubkey] = payload.params;\n          this.target = pubkey;\n          this.events.emit('connect', pubkey);\n          break;\n        }\n        case ConnectMethods.DISCONNECT: {\n          if (this.target) {\n            await this.disconnectRelays();\n            this.target = undefined;\n            this.events.emit('disconnect');\n          }\n          break;\n        }\n        default:\n      }\n    });\n  }\n\n  on(evt: 'connect' | 'disconnect', cb: (...args: any[]) => void) {\n    this.events.on(evt, cb);\n  }\n  off(evt: 'connect' | 'disconnect', cb: (...args: any[]) => void) {\n    this.events.off(evt, cb);\n  }\n\n  isConnected(): boolean {\n    return !!this.target\n  }\n\n  assertIsConnected() {\n    this.getTarget()\n  }\n\n  getTarget(): string {\n    if (!this.target) throw new Error('Not connected');\n    return this.target\n  }\n\n  async disconnect(): Promise<void> {\n    this.assertIsConnected()\n    // notify the UI that we are disconnecting\n    this.events.emit('disconnect');\n\n    try {\n      await this.request(\n        ConnectMethods.DISCONNECT,\n        [],\n        { skipResponse: true }\n      );\n      await this.disconnectRelays();\n    } catch (error) {\n      throw new Error('Failed to disconnect');\n    }\n    this.target = undefined;\n  }\n\n  async getPublicKey(): Promise<string> {\n    return this.request(\n      ConnectMethods.GET_PUBLIC_KEY,\n      [],\n    );\n  }\n\n  async signEvent(event: {\n    kind: Kind;\n    tags: string[][];\n    pubkey: string;\n    content: string;\n    created_at: number;\n  }): Promise<Event> {\n    return this.request(\n      ConnectMethods.SIGN_EVENT,\n      [event],\n    );\n  }\n\n  async signPSBT(network: string, psbt: string, descriptor?: string): Promise<SignPSBTResponse> {\n    const params = [network, psbt]\n    if (descriptor) {\n      params.push(descriptor)\n    }\n    return this.request(\n      ConnectMethods.SIGN_PSBT,\n      params\n    );\n  }\n\n\n  async describe(): Promise<string[]> {\n    return this.request(\n      ConnectMethods.DESCRIBE,\n      [],\n    );\n  }\n\n  async delegate(\n    delegatee: string = this.rpc.self.pubkey,\n    conditions: {\n      kind?: number;\n      until?: number | TimeRanges;\n      since?: number | TimeRanges;\n    }\n  ): Promise<nip26.Delegation> {\n    if (conditions.until && typeof conditions.until !== 'number') {\n      if (!Object.keys(TimeRangeToUnix).includes(conditions.until))\n        throw new Error(\n          'conditions.until must be either a number or a valid TimeRange'\n        );\n      conditions.until = TimeRangeToUnix[conditions.until];\n    }\n    if (conditions.since && typeof conditions.since !== 'number') {\n      if (!Object.keys(TimeRangeToUnix).includes(conditions.since))\n        throw new Error(\n          'conditions.since must be either a number or a valid TimeRange'\n        );\n      conditions.since = TimeRangeToUnix[conditions.since];\n    }\n\n    return this.request(\n      ConnectMethods.DELEGATE,\n      [delegatee, conditions],\n    );\n  }\n\n  async getRelays(): Promise<{\n    [url: string]: { read: boolean; write: boolean };\n  }> {\n    throw new Error('Not implemented');\n  }\n\n  nip04 = {\n    encrypt: async (pubkey: string, plaintext: string): Promise<string> => {\n      return this.request(\n        ConnectMethods.NIP04_ENCRYPT,\n        [pubkey, plaintext],\n      );\n    },\n    decrypt: async (pubkey: string, ciphertext: string): Promise<string> => {\n      return this.request(\n        ConnectMethods.NIP04_DECRYPT,\n        [pubkey, ciphertext],\n      );\n    },\n  };\n\n  private async disconnectRelays(): Promise<void> {\n    await this.rpc.disconnectRelays();\n  }\n\n  private async request(method: string, params: any[], opts?: RequestOpts): Promise<any> {\n    const target = this.getTarget()\n    return this.rpc.call({\n      target,\n      request: {\n        method,\n        params,\n      }\n    },\n      opts);\n  }\n}\n","import { NostrRPC } from './rpc';\n\nexport class NostrSigner extends NostrRPC {\n  async disconnect(): Promise<null> {\n    this.events.emit('disconnect');\n    return null;\n  }\n  isConnected(): boolean {\n    throw new Error('Method not implemented yet.');\n  }\n}\n"],"names":["Kinds","NOSTR_CONNECT","ConnectMethods","CONNECT","DELEGATE","DESCRIBE","DISCONNECT","GET_PUBLIC_KEY","SIGN_EVENT","SIGN_PSBT","NIP04_ENCRYPT","NIP04_DECRYPT","NostrRPC","opts","relay","self","event","events","EventEmitter","relayCallConnection","relayListenConnection","pubkey","getPublicKey","secretKey","secret","undefined","_proto","prototype","initRelayConnection","_initRelayConnection","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","connectToRelay","sent","stop","apply","arguments","call","_call","_callee4","_ref","_this","target","_ref$request","_ref$request$id","id","method","_ref$request$params","params","request","_callee4$","_context4","randomID","t0","status","connect","prepareRequest","prepareEvent","abrupt","Promise","_ref2","_callee3","resolve","reject","sub","_callee3$","_context3","kinds","authors","limit","since","now","broadcastToRelay","skipResponse","unsub","on","_ref3","_callee2","payload","plaintext","_callee2$","_context2","nip04","decrypt","content","Error","JSON","parse","isValidResponse","error","result","_x5","_x3","_x4","_x","_x2","listen","_listen","_callee6","_this2","_callee6$","_context6","_ref4","_callee5","response","body","responseEvent","_callee5$","_context5","isValidRequest","handleRequest","prepareResponse","publish","_x6","_handleRequest","_callee7","_callee7$","_context7","message","_x7","_x8","disconnectRelays","_disconnectRelays","_callee8","_callee8$","_context8","close","Math","floor","Date","random","toString","slice","stringify","_x9","_x10","_x11","_prepareEvent","_callee9","cipherText","sig","signedEvent","ok","veryOk","_callee9$","_context9","encrypt","kind","created_at","tags","getEventHash","getSignature","_extends","validateEvent","verifySignature","keys","Object","includes","_x12","_connectToRelay","_callee10","realayURL","_callee10$","_context10","relayInit","url","_x13","_x14","_x15","_broadcastToRelay","_callee11","skipSeen","_callee11$","_context11","pub","reason","TimeRanges","TimeRangeToUnix","_TimeRangeToUnix","FIVE_MINS","round","ONE_HR","ONE_DAY","ONE_WEEK","ONE_MONTH","ONE_YEAR","ConnectURI","fromURI","uri","URL","hostname","pathname","substring","searchParams","get","metadata","md","ignore","encodeURIComponent","approve","_approve","rpc","_reject","Connect","_encrypt","_decrypt","ciphertext","_proto2","init","_init","_payload$params","t1","length","emit","evt","cb","off","isConnected","assertIsConnected","getTarget","disconnect","_disconnect","_getPublicKey","signEvent","_signEvent","signPSBT","_signPSBT","network","psbt","descriptor","push","describe","_describe","delegate","_delegate","_callee12","delegatee","conditions","_callee12$","_context12","until","getRelays","_getRelays","_callee13","_callee13$","_context13","_callee14","_callee14$","_context14","_request","_callee15","_callee15$","_context15","_x16","NostrSigner","_NostrRPC","_inheritsLoose"],"mappings":"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"}