extra-life-ts
v0.5.0
Published
A typed wrapper for the Extra Life API
Downloads
170
Maintainers
Readme
extra-life-ts
Yet another Extra Life API wrapper. extra-life-ts
adds some endpoints that are missing from other libraries and supports filtering/ordering on endpoints that allow it.
Installation
# NPM
$ npm i extra-life-ts
# Yarn
$ yarn add extra-life-ts
# PNPM
$ pnpm i extra-life-ts
Usage
Node
const { getParticipantDonations } = require('extra-life-ts')
getParticipantDonations(479600, { limit: 1, orderBy: 'amount ASC' }).then((result) => console.log(result))
Browser
const { getParticipantDonations } from 'extra-life-ts'
const donations = await getParticipantDonations(479600, { limit: 1, orderBy: 'amount ASC' })
API
Before Getting Started
All endpoints that that return an array support filtering, ordering and limiting. These collections have the following response format:
interface Result<T> {
totalRecords: number
data: T
}
These endpoints also accept an options object with the following properties:
interface Options<T, IncludedFields extends keyof T | undefined = undefined> {
limit?: number
page?: number
orderBy?: `${Exclude<keyof T, symbol>} ${'DESC' | 'ASC'}`
where?: {
fieldName: keyof T
operator: 'LIKE' | '>' | '>=' | '<' | '<=' | '='
term: string | number
}
}
For example, to limit to 2, order by amount
and filter by amount greater than or equal to $50:
getTeamDonations(60010, {
limit: 2,
orderBy: 'amount ASC',
where: {
fieldName: 'amount',
operator: '>=',
term: 50,
},
})
Endpoints that only return a single object (getParticipant()
and getTeam()
) do not support filtering/ordering/limiting. The response is:
interface Result<T> {
data: T
}
Methods
Participants
getParticipant(id)
getParticipantActivity(id, options)
getParticipantBadges(id, options)
getParticipantDonations(id, options)
getParticipantDonors(id, options)
getParticipantIncentives(id, options)
getParticipantMilestones(id, options)
Teams
getTeam(id)
getTeamActivity(id, options)
getTeamBadges(id, options)
getTeamDonations(id, options)
getTeamDonors(id, options)
Inspiration
License
See LICENSE.md