npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details


  • User packages



Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.


Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner




Module for consuming the League of Legends Client APIs




Table of Contents

Getting Started

League Connect is a NodeJs module for consuming the League of Legends Client APIs


To start using League Connect, ensure the following packages are installed:

  • Node (any recent version should run (download))
  • Yarn or NPM
  • League of Legends (download)


League Connect ships as an NPM module, installable through Yarn or NPM. To add the package to your project, install it through your package manager of choice.

$ yarn install league-connect
# Or ...
$ npm install league-connect


League Connect ships 4 primary APIs:


Credentials are passed around as an object containing a port and a password (see source). These credentials are pulled from the LeagueClientUx process and will be used to authenticate any requests or connections to the APIs.

Code Example

import { authenticate } from 'league-connect'

const credentials = await authenticate()
console.log(credentials) // { password: '37dn2gsxH3ns', port: 37241 }

By default, the authenticate function will return a rejected promise if it failed to locate a running LeagueClientUx process. If you wish to await until a client is found, you can use the optional options:

| Option | Default Value | Description | |--------|---------------|-------------| | name | LeagueClientUx | League Client name, set to RiotClientUx if you would like to authenticate with the Riot Client | awaitConnection | false | Await until a LeagueClientUx process is found | | pollInterval | 2500 | Duration in milliseconds between each poll. No-op if awaitConnection is false. | | certificate | undefined | A plain-text self-signed certificate to authenticate to the LCU API with. This option should only be used if you're self-signing with a certificate which is not the one Riot Games provides on their developer page. League Connect will default to using Riot's own self-signed certificate for authentication. If you're of what this option does, you should probably not use it. | | unsafe | false | If you do not wish to authenticate safely using a self-signed certificate you can authorize while ignoring any certificate rejections. To authenticate this way, set unsafe to true. The custom certificate option will take precedence over this, meaning this option is meaningless if a custom certificate is provided. |

import { authenticate } from 'league-connect'

const credentials = await authenticate({
  awaitConnection: true,
  pollInterval: 5000,
  // certificate: "-----BEGIN CERTIFICATE-----\nSowhdnAMyCertificate\n-----ENDCERTIFICATE-----",
  // unsafe: true
See source for available options


The League Client runs a WebSocket for an event bus which anything using the client may connect to. Developers may also connect to this socket over wss. LeagueConnect provides a function to retrieve a WebSocket connection.

import { connect, authenticate } from 'league-connect'

const credentials = await authenticate()
const ws = await connect(credentials)

League Connect uses its own extended WebSocket class which allows subscriptions to certain API endpoints.

The socket instance automatically subscribes to Json events from the API which will be ran on the message event.

Code Example

import { connect, authenticate } from 'league-connect'

const credentials = await authenticate()
const ws = await connect(credentials)

ws.on('message', message => {
  // Subscribe to any websocket event
import { connect, authenticate } from 'league-connect'

const credentials = await authenticate()
const ws = await connect(credentials)

ws.subscribe('/lol-chat/v1/conversations/active', (data, event) => {
  // data: deseralized json object from the event payload
  // event: the entire event (see EventResponse<T>)
See source for LeagueWebSocket


LeagueConnect supports sending HTTP requests to any of the League Client API endpoints (endpoints can be discovered and viewed with rift-explorer)

Once you've found the endpoint you want to use, use the request function to send the http request.

import { request, authenticate } from 'league-connect'

const credentials = await authenticate()
const response = await request({
  method: 'GET',
  url: '/lol-summoner/v1/current-summoner'
}, credentials)

The options you pass into request decide where your http request goes. Available options:

| Option | Description | |--------|-------------| | url | Relative URI to send the http request to | | method | HTTP verb to use | | body | Optional post body (for non GET requests) as object literal. (library serializes it) |

See source for available options


The LeagueClient class is an EventEmitter which will listen for the LeagueClientUx process, reporting shutdown/startup of the application. The emitter has two listeners: connect and disconnect.

Code Example

import { authenticate, LeagueClient } from 'league-connect'

const credentials = await authenticate()
const client = new LeagueClient(credentials)

client.on('connect', (newCredentials) => {
  // newCredentials: Each time the Client is started, new credentials are made
  // this variable contains the new credentials.

client.on('disconnect', () => {


client.start() // Start listening for process updates
client.stop()  // Stop listening for process updates

By default, the LeagueClient class will check for a client connection/disconnection every 2.5 seconds. This can be changed by passing an options object into the constructor.

| Option | Default Value | Description | |--------|---------------|-------------| | pollInterval | 2500 | Duration in milliseconds between process existence check |

import { authenticate, LeagueClient } from 'league-connect'

const credentials = await authenticate()
const client = new LeagueClient(credentials, {
  pollInterval: 1000 // Check every second
See source for available options


Distributed under the MIT License. See LICENSE for more information.