UNPKG

scryfall-sdk

Version:

A Node.js SDK for https://scryfall.com/docs/api written in Typescript.

51 lines (50 loc) 1.59 kB
import MagicEmitter from "./MagicEmitter"; export declare const defaultRequestTimeout = 100; export declare const minimumRequestTimeout = 50; export type TOrArrayOfT<T> = T | T[]; export interface Data<T, NOT_FOUND = never> { data: T[]; not_found?: NOT_FOUND[]; } export interface List<T, NOT_FOUND = never> extends Data<T, NOT_FOUND> { object: "list"; has_more: boolean; next_page: string | null; total_cards: string | null; warnings: string[]; } export interface ApiCatalog extends Data<string> { } export interface SearchError extends Error { object: "error"; code: string; status: number; details: string; warnings?: string[]; attempts: number; } export interface RetryStrategy { attempts: number; timeout?: number; /** * Whether even `not_found` and `bad_request` errors should be retried. * @deprecated Don't use this, this is for unit tests */ forced?: boolean; canRetry?(error: SearchError): boolean; } export default class MagicQuerier { static lastQuery: number; static retry: RetryStrategy; static agent?: string; static timeout: number; static requestCount: number; protected query<T>(apiPath: TOrArrayOfT<string | number | undefined>, query?: { [key: string]: any; }, post?: any): Promise<T>; protected queryPage<T>(emitter: MagicEmitter<T>, apiPath: string, query: any, page?: number): Promise<void>; private tryQuery; private queryFetch; private queryAxios; private canRetry; }