Documentation
    Preparing search index...

    Function resolveCapabilitiesNap

    • Resolve the capabilities required by a NAP message.

      Splits msg.type on '.' to obtain [domain, action], then dispatches to a per-domain mapper. Unknown domains return null/null (silently ignored).

      NAP domain mapping table (8 canonical domains):

      Domain Action(s) senderCap recipientCap
      relay subscribe, query, close, results/pushes relay:read null
      relay publish relay:write relay:read
      relay publishEncrypted relay:write null
      identity getPublicKey, getRelays null null
      identity getProfile/getFollows/getList/getZaps/getMutes/... identity:read null
      keys forward, action keys:forward null
      keys registerAction, unregisterAction, bindings keys:bind null
      media any media:control null
      notify channel.register, permission.request, permission.result notify:channel null
      notify send, dismiss, badge, clicked, action, ... notify:send null
      storage get, keys state:read null
      storage set, remove state:write null
      storage any other (incl. removed clear) null null
      inc emit, channel.emit, channel.broadcast relay:write relay:read
      inc subscribe, unsubscribe, channel.open/list/close relay:read null
      theme get, get.result theme:read null
      theme changed (shell → napplet push) null theme:read
      config get, subscribe, unsubscribe, registerSchema, openSettings config:read null
      config values, registerSchema.result, schemaError (shell → napplet pushes) null config:read
      resource bytes, bytesMany, cancel (napplet → shell requests) resource:fetch null
      resource bytes*.result, bytes*.error (shell → napplet pushes) null resource:fetch
      intent invoke (napplet → shell) intent:write null
      intent available, handlers (napplet → shell) intent:read null
      intent changed, *.result, *.error (shell → napplet pushes) null intent:read
      unknown any null null

      The signer domain is REMOVED — signer messages fall through to the default null/null branch. getPublicKey/getRelays migrated to identity; napplet-visible signing does not exist in NIP-5D (shell signs internally for relay.publishEncrypted).

      Parameters

      • msg: NapMessage

        Message with a type field in NAP format (e.g., 'relay.subscribe')

      Returns CapabilityResolution

      CapabilityResolution with senderCap and recipientCap (each may be null)

      resolveCapabilitiesNap({ type: 'relay.subscribe' })
      // => { senderCap: 'relay:read', recipientCap: null }

      resolveCapabilitiesNap({ type: 'relay.publishEncrypted' })
      // => { senderCap: 'relay:write', recipientCap: null }

      resolveCapabilitiesNap({ type: 'identity.getProfile' })
      // => { senderCap: 'identity:read', recipientCap: null }

      resolveCapabilitiesNap({ type: 'keys.forward' })
      // => { senderCap: 'keys:forward', recipientCap: null }

      resolveCapabilitiesNap({ type: 'inc.channel.broadcast' })
      // => { senderCap: 'relay:write', recipientCap: 'relay:read' }

      resolveCapabilitiesNap({ type: 'theme.changed' })
      // => { senderCap: null, recipientCap: 'theme:read' }

      resolveCapabilitiesNap({ type: 'signer.signEvent' })
      // => { senderCap: null, recipientCap: null } // domain removed