scryfall-sdk
Version:
A Node.js SDK for https://scryfall.com/docs/api written in Typescript.
51 lines (50 loc) • 1.59 kB
TypeScript
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;
}