Skip to content

npldevfr/lpdb-ts-client

Repository files navigation

@npldev/lpdb-ts-client

A fully typed TypeScript client for the Liquipedia API v3

This is an unofficial library and is not affiliated with or endorsed by Liquipedia.

npm version npm downloads CI codecov license TypeScript

Documentation · Report Bug · Liquipedia API


Features

  • Type-Safe - Full TypeScript support with types generated from the OpenAPI spec
  • Fluent Builder API - Chain methods together for readable and maintainable code
  • Conditions Builder - Build complex query conditions with a fluent, type-safe API
  • All Wikis Supported - Access data from 70+ esports wikis (Dota 2, CS2, LoL, Valorant...)
  • Lightweight - Zero runtime dependencies, uses native fetch API

Installation

# npm
npm install @npldev/lpdb-ts-client

# pnpm
pnpm add @npldev/lpdb-ts-client

# yarn
yarn add @npldev/lpdb-ts-client

# bun
bun add @npldev/lpdb-ts-client

Quick Start

import { LPDBClient } from '@npldev/lpdb-ts-client'

const client = new LPDBClient({
  apiKey: 'your-api-key',
})

// Query players from Dota 2
const response = await client
  .endpoint('/player')
  .wiki('dota2')
  .conditions('[[nationality::France]]')
  .limit(10)
  .execute()

console.log(response.result)

Usage Examples

Get upcoming matches with stream URLs

const matches = await client
  .endpoint('/match')
  .wiki('counterstrike')
  .conditions('[[finished::0]]')
  .streamurls('true')
  .limit(5)
  .execute()

Get team information

const teams = await client
  .endpoint('/team')
  .wiki('leagueoflegends')
  .query('name, region, createdate')
  .order('createdate DESC')
  .limit(20)
  .execute()

Conditions Builder

Build complex query conditions with a fluent API:

import { ConditionsBuilder, Operator } from '@npldev/lpdb-ts-client'

const conditions = ConditionsBuilder.create('date', Operator.GREATER_THAN, '2024-01-01')
  .and('date', Operator.LESS_THAN, '2024-12-31')
  .andGroup(
    ConditionsBuilder.create('liquipediatier', Operator.EQUALS, '1').or(
      'liquipediatier',
      Operator.EQUALS,
      '2'
    )
  )
  .toString()

const tournaments = await client
  .endpoint('/tournament')
  .wiki('dota2')
  .conditions(conditions)
  .execute()

Error handling

import { LPDBClient, LPDBError } from '@npldev/lpdb-ts-client'

try {
  const response = await client.endpoint('/player').wiki('valorant').execute()
} catch (error) {
  if (error instanceof LPDBError) {
    console.error(`API Error (${error.status}):`, error.message)
  }
}

Documentation

Full documentation is available at npldevfr.github.io/lpdb-ts-client

Requirements

License

MIT