UNPKG

igdb-ts

Version:

Unofficial IGDB API TypeScript wrapper.

101 lines (74 loc) 2.35 kB
//Can only have either a filter or combined filter. You cannot use both. interface BaseIGDBOptions<T>{ fields?: (keyof T)[], exclude?: (keyof T)[], limit?: number, offset?: number, sortBy?: OrderOption } interface DefaultOptions<T> extends BaseIGDBOptions<T> { search?: never, } interface DefaultOptionsWFilter<T> extends DefaultOptions<T>{ filter?: Filter, combinedFilter?: never } interface DefaultOptionsWCombinedFilter<T> extends DefaultOptions<T>{ filter?: never, combinedFilter?: CombinedFilter } export type DefaultIGDBOptions<T> = DefaultOptionsWFilter<T> | DefaultOptionsWCombinedFilter<T> interface SearchOptions<T> extends BaseIGDBOptions<T> { search?: string, } interface SearchOptionsWFilter<T> extends SearchOptions<T>{ filter?: Filter, combinedFilter?: never } interface SearchOptionsWCombinedFilter<T> extends SearchOptions<T>{ filter?: never, combinedFilter?: CombinedFilter } export type SearchableIGDBOptions<T> = SearchOptionsWFilter<T> | SearchOptionsWCombinedFilter<T> export type IGDBOptions<T> = DefaultIGDBOptions<T> | SearchableIGDBOptions<T> export interface UntypedIGDBOptionsWFilter extends BaseUntypedIGDBOptions { filter?: Filter, combinedFilter?: never } export interface UntypedIGDBOptionsWCombinedFilter extends BaseUntypedIGDBOptions { filter?: never, combinedFilter?: CombinedFilter } export interface BaseUntypedIGDBOptions { search?: string, fields?: string[], exclude?: string[], limit?: number, offset?: number, sortBy?: OrderOption } export type UntypedIGDBOptions = UntypedIGDBOptionsWFilter | UntypedIGDBOptionsWCombinedFilter export interface Filter { filters: FilterOption[] operators?: FilterOperator[] } export interface CombinedFilter{ filters: Filter[] operators: FilterOperator[] } export type FilterOperator = "&" | "|" export interface FilterOption{ field: string, postfix: PostFix value: any } export interface Query { endpoint: string, resultName: string, options?: UntypedIGDBOptions } export type PostFix = "=" | "!=" | ">" | ">=" | "<" | "<=" | "~" export interface OrderOption{ field: string, order: "asc" | "desc" }