scryfall-api 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"skryfall.umd.js","sources":["../src/query/MagicPageResult.ts","../src/error/MagicQueryError.ts","../src/query/MagicQuery.ts","../src/api/Cards.ts"],"sourcesContent":["import { PageQuery, ResultList } from '../types';\nimport MagicQuery from './MagicQuery';\n\nexport default class MagicPageResult<T, Q extends MagicQuery, P = unknown> {\n private hasMore: boolean;\n\n constructor(\n private readonly q: Q,\n private readonly apiPath: string,\n private readonly query: PageQuery,\n private readonly post?: P\n ) {\n this.hasMore = true;\n }\n\n private _count?: number;\n\n public get count() {\n return this._count;\n }\n\n public async all(): Promise<T[]> {\n const r: T[] = [];\n while (this.hasMore) {\n const result = await this.next();\n r.push(...result);\n }\n return r;\n }\n\n public async get(limit: number): Promise<T[]> {\n const r: T[] = [];\n while (this.hasMore) {\n const result = await this.next();\n r.push(...result);\n if (r.length == limit) {\n return r;\n } else if (r.length > limit) {\n return r.slice(0, limit);\n }\n }\n return r;\n }\n\n public async next(): Promise<T[]> {\n const results = await this.q.query<ResultList<T>, P>(\n this.apiPath,\n this.query,\n this.post\n );\n this.hasMore = results?.has_more || false;\n this._count = Number.parseInt((results?.total_cards || 0) + '');\n if (this.hasMore) {\n this.setNextPage();\n }\n return results?.data || [];\n }\n\n public async page(page: number): Promise<T[]> {\n this.query.page = page;\n return this.next();\n }\n\n private setNextPage(): void {\n this.query.page = this.query.page + 1;\n }\n}\n","import { SearchError } from '../types/SearchError';\n\nexport class MagicQueryError extends Error {\n constructor(readonly data?: SearchError) {\n super(data?.details);\n Object.setPrototypeOf(this, MagicQueryError.prototype);\n }\n}\n","import Axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { MagicQueryError } from '../error/MagicQueryError';\nimport { Query, RetryStrategy, SearchError, TOrArrayOfT } from '../types';\n\nexport default class MagicQuery {\n public static retry: RetryStrategy = { attempts: 1 };\n // the path to the api\n private static readonly endpoint = 'https://api.scryfall.com';\n // time where the last api call was made\n private static lastQuery = 100;\n // the api requests 50-100 ms between calls, we go on the generous side and never wait less than 100 ms between calls\n private static readonly rateLimit = 100;\n\n private static canRetry(error?: SearchError) {\n if (error?.code == 'not_found' || error?.code == 'bad_request')\n return false;\n return !MagicQuery.retry.canRetry || MagicQuery.retry.canRetry(error);\n }\n\n private static async debounce(): Promise<void> {\n const now = Date.now();\n const timeSinceLastQuery = now - MagicQuery.lastQuery;\n if (timeSinceLastQuery >= MagicQuery.rateLimit) {\n MagicQuery.lastQuery = now;\n } else {\n const timeUntilNextQuery = MagicQuery.rateLimit - timeSinceLastQuery;\n MagicQuery.lastQuery += timeUntilNextQuery;\n await MagicQuery.sleep(timeUntilNextQuery);\n }\n }\n\n private static sleep(ms = 0) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n private static async tryQuery<T, Y>(\n apiPath: string,\n query?: Query,\n post?: Y,\n requestOptions?: AxiosRequestConfig\n ): Promise<AxiosResponse<T, Y>> {\n await MagicQuery.debounce();\n\n const config: AxiosRequestConfig<Y> = {\n data: post,\n method: post ? 'POST' : 'GET',\n params: query,\n url: `${MagicQuery.endpoint}/${apiPath}`,\n ...requestOptions,\n };\n\n try {\n return await Axios.request<T, AxiosResponse<T>, Y>(config);\n } catch (e: any) {\n if (e['isAxiosError']) {\n const error = e as AxiosError<SearchError>;\n throw new MagicQueryError(error.response?.data);\n } else {\n throw e;\n }\n }\n }\n\n public async query<T = unknown, Y = unknown>(\n apiPath: TOrArrayOfT<string | number | undefined>,\n query?: Query,\n post?: Y,\n requestOptions?: AxiosRequestConfig\n ): Promise<T | undefined> {\n if (Array.isArray(apiPath)) {\n apiPath = apiPath.join('/');\n }\n\n let retries: number;\n let result;\n\n for (retries = 0; retries < MagicQuery.retry.attempts; retries++) {\n let error: SearchError | undefined;\n try {\n result = await MagicQuery.tryQuery<T, Y>(\n `${apiPath}`,\n query,\n post,\n requestOptions\n );\n } catch (e: any) {\n if (e instanceof MagicQueryError) {\n error = e.data;\n } else {\n throw e;\n }\n }\n if (result || !MagicQuery.canRetry(error)) break;\n await MagicQuery.sleep(MagicQuery.retry.timeout);\n }\n\n return result?.data;\n }\n}\n","import MagicPageResult from '../query/MagicPageResult';\nimport MagicQuery from '../query/MagicQuery';\nimport {\n Card,\n CardIdentifier,\n ResultCatalog,\n ResultList,\n SearchOptions,\n} from '../types';\n\nclass Cards extends MagicQuery {\n public async autoCompleteName(name: string): Promise<string[]> {\n const result = await this.query<ResultCatalog>('cards/autocomplete', {\n q: name,\n });\n return result?.data || [];\n }\n\n public async byArenaId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/arena', id]);\n }\n\n public async byId(id: string): Promise<Card | undefined> {\n return this.query<Card>(['cards', id]);\n }\n\n public async byMtgoId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/mtgo', id]);\n }\n\n public async byMultiverseId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/multiverse', id]);\n }\n\n public async byName(name: string, fuzzy?: boolean): Promise<Card | undefined>;\n\n public async byName(\n name: string,\n set?: string,\n fuzzy?: boolean\n ): Promise<Card | undefined>;\n\n public async byName(\n name: string,\n set?: string | boolean,\n fuzzy = false\n ): Promise<Card | undefined> {\n if (typeof set === 'boolean') {\n fuzzy = set;\n set = undefined;\n }\n\n return this.query<Card>('cards/named', {\n [fuzzy ? 'fuzzy' : 'exact']: name,\n set,\n });\n }\n\n public async bySet(\n setCode: string,\n collectorNumber: number,\n lang?: string\n ): Promise<Card | undefined> {\n const path = ['cards', setCode, collectorNumber];\n if (lang) path.push(lang);\n return this.query<Card>(path);\n }\n\n public async byTcgPlayerId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/tcgplayer', id]);\n }\n\n public async collection(...identifiers: CardIdentifier[]): Promise<Card[]> {\n const cards: Card[] = [];\n for (let i = 0; i < identifiers.length; i += 75) {\n // the api only supports a max collection size of 75, so we take the list of identifiers (any length)\n // and split it into 75 card-max requests\n const collectionSection = { identifiers: identifiers.slice(i, i + 75) };\n\n const result = await this.query<ResultList<Card, CardIdentifier>>(\n 'cards/collection',\n undefined,\n collectionSection\n );\n cards.push(...(result?.data || []));\n }\n return cards;\n }\n\n public async random(): Promise<Card | undefined> {\n return this.query<Card>('cards/random');\n }\n\n public search(\n query: string,\n options?: SearchOptions | number\n ): MagicPageResult<Card, Cards> {\n return new MagicPageResult<Card, Cards>(this, 'cards/search', {\n q: query,\n ...(typeof options === 'number'\n ? { page: options }\n : { page: 1, ...options }),\n });\n }\n}\n\nexport default new Cards();\n"],"names":["Axios"],"mappings":"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"}
1
+ {"version":3,"file":"skryfall.umd.js","sources":["../src/query/MagicPageResult.ts","../src/error/MagicQueryError.ts","../src/query/MagicQuery.ts","../src/api/Cards.ts","../src/api/Catalog.ts","../src/api/Misc.ts","../src/api/Rulings.ts","../src/api/Sets.ts","../src/api/Symbology.ts","../src/api/CardIdentifierBuilder.ts","../src/types/Border.ts","../src/types/BulkDataTypes.ts","../src/types/Color.ts","../src/types/Format.ts","../src/types/FrameEffect.ts","../src/types/Game.ts","../src/types/Layout.ts","../src/types/Legalty.ts","../src/types/PromoType.ts","../src/types/Rarity.ts","../src/types/RelatedCardComponent.ts","../src/types/SetType.ts","../src/types/Sort.ts","../src/types/SortDirection.ts","../src/types/UniqueStrategy.ts"],"sourcesContent":["import { PageQuery, ResultList } from '../types';\nimport MagicQuery from './MagicQuery';\n\nexport default class MagicPageResult<T, Q extends MagicQuery, P = unknown> {\n private _hasMore: boolean;\n private _count?: number;\n\n constructor(\n private readonly q: Q,\n private readonly apiPath: string,\n private readonly query: PageQuery,\n private readonly post?: P\n ) {\n this._hasMore = true;\n }\n\n public get count() {\n return this.hasMore;\n }\n\n public get hasMore() {\n return this._count;\n }\n\n public async all(): Promise<T[]> {\n const r: T[] = [];\n while (this._hasMore) {\n const result = await this.next();\n r.push(...result);\n }\n return r;\n }\n\n public async get(limit: number): Promise<T[]> {\n const r: T[] = [];\n while (this._hasMore) {\n const result = await this.next();\n r.push(...result);\n if (r.length == limit) {\n return r;\n } else if (r.length > limit) {\n return r.slice(0, limit);\n }\n }\n return r;\n }\n\n public async next(): Promise<T[]> {\n const results = await this.q.query<ResultList<T>, P>(\n this.apiPath,\n this.query,\n this.post\n );\n this._hasMore = results?.has_more || false;\n this._count = Number.parseInt((results?.total_cards || 0) + '');\n if (this._hasMore) {\n this.setNextPage();\n }\n return results?.data || [];\n }\n\n public async page(page: number): Promise<T[]> {\n this.query.page = page;\n return this.next();\n }\n\n private setNextPage(): void {\n this.query.page = this.query.page + 1;\n }\n}\n","import { SearchError } from '../types/SearchError';\n\nexport class MagicQueryError extends Error {\n constructor(readonly data?: SearchError) {\n super(data?.details);\n Object.setPrototypeOf(this, MagicQueryError.prototype);\n }\n}\n","import Axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { MagicQueryError } from '../error/MagicQueryError';\nimport { Query, RetryStrategy, SearchError, TOrArrayOfT } from '../types';\n\nexport default class MagicQuery {\n public static retry: RetryStrategy = { attempts: 1 };\n // the path to the api\n private static readonly endpoint = 'https://api.scryfall.com';\n // time where the last api call was made\n private static lastQuery = 100;\n // the api requests 50-100 ms between calls, we go on the generous side and never wait less than 100 ms between calls\n private static readonly rateLimit = 100;\n\n private static canRetry(error?: SearchError) {\n if (error?.code == 'not_found' || error?.code == 'bad_request')\n return false;\n return !MagicQuery.retry.canRetry || MagicQuery.retry.canRetry(error);\n }\n\n private static async debounce(): Promise<void> {\n const now = Date.now();\n const timeSinceLastQuery = now - MagicQuery.lastQuery;\n if (timeSinceLastQuery >= MagicQuery.rateLimit) {\n MagicQuery.lastQuery = now;\n } else {\n const timeUntilNextQuery = MagicQuery.rateLimit - timeSinceLastQuery;\n MagicQuery.lastQuery += timeUntilNextQuery;\n await MagicQuery.sleep(timeUntilNextQuery);\n }\n }\n\n private static sleep(ms = 0) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n private static async tryQuery<T, Y>(\n apiPath: string,\n query?: Query,\n post?: Y,\n requestOptions?: AxiosRequestConfig\n ): Promise<AxiosResponse<T, Y>> {\n await MagicQuery.debounce();\n\n const config: AxiosRequestConfig<Y> = {\n data: post,\n method: post ? 'POST' : 'GET',\n params: query,\n url: `${MagicQuery.endpoint}/${apiPath}`,\n ...requestOptions,\n };\n\n try {\n return await Axios.request<T, AxiosResponse<T>, Y>(config);\n } catch (e: any) {\n if (e['isAxiosError']) {\n const error = e as AxiosError<SearchError>;\n throw new MagicQueryError(error.response?.data);\n } else {\n throw e;\n }\n }\n }\n\n public async query<T = unknown, Y = unknown>(\n apiPath: TOrArrayOfT<string | number | undefined>,\n query?: Query,\n post?: Y,\n requestOptions?: AxiosRequestConfig\n ): Promise<T | undefined> {\n if (Array.isArray(apiPath)) {\n apiPath = apiPath.join('/');\n }\n\n let retries: number;\n let result;\n\n for (retries = 0; retries < MagicQuery.retry.attempts; retries++) {\n let error: SearchError | undefined;\n try {\n result = await MagicQuery.tryQuery<T, Y>(\n `${apiPath}`,\n query,\n post,\n requestOptions\n );\n } catch (e: any) {\n if (e instanceof MagicQueryError) {\n error = e.data;\n } else {\n throw e;\n }\n }\n if (result || !MagicQuery.canRetry(error)) break;\n await MagicQuery.sleep(MagicQuery.retry.timeout);\n }\n\n return result?.data;\n }\n}\n","import MagicPageResult from '../query/MagicPageResult';\nimport MagicQuery from '../query/MagicQuery';\nimport {\n Card,\n CardIdentifier,\n ResultCatalog,\n ResultList,\n SearchOptions,\n} from '../types';\n\nclass Cards extends MagicQuery {\n public async autoCompleteName(name: string): Promise<string[]> {\n const result = await this.query<ResultCatalog>('cards/autocomplete', {\n q: name,\n });\n return result?.data || [];\n }\n\n public async byArenaId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/arena', id]);\n }\n\n public async byId(id: string): Promise<Card | undefined> {\n return this.query<Card>(['cards', id]);\n }\n\n public async byMtgoId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/mtgo', id]);\n }\n\n public async byMultiverseId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/multiverse', id]);\n }\n\n public async byName(name: string, fuzzy?: boolean): Promise<Card | undefined>;\n\n public async byName(\n name: string,\n set?: string,\n fuzzy?: boolean\n ): Promise<Card | undefined>;\n\n public async byName(\n name: string,\n set?: string | boolean,\n fuzzy = false\n ): Promise<Card | undefined> {\n if (typeof set === 'boolean') {\n fuzzy = set;\n set = undefined;\n }\n\n return this.query<Card>('cards/named', {\n [fuzzy ? 'fuzzy' : 'exact']: name,\n set,\n });\n }\n\n public async bySet(\n setCode: string,\n collectorNumber: number,\n lang?: string\n ): Promise<Card | undefined> {\n const path = ['cards', setCode, collectorNumber];\n if (lang) path.push(lang);\n return this.query<Card>(path);\n }\n\n public async byTcgPlayerId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/tcgplayer', id]);\n }\n\n public async collection(...identifiers: CardIdentifier[]): Promise<Card[]> {\n const cards: Card[] = [];\n for (let i = 0; i < identifiers.length; i += 75) {\n // the api only supports a max collection size of 75, so we take the list of identifiers (any length)\n // and split it into 75 card-max requests\n const collectionSection = { identifiers: identifiers.slice(i, i + 75) };\n\n const result = await this.query<ResultList<Card, CardIdentifier>>(\n 'cards/collection',\n undefined,\n collectionSection\n );\n cards.push(...(result?.data || []));\n }\n return cards;\n }\n\n public async random(): Promise<Card | undefined> {\n return this.query<Card>('cards/random');\n }\n\n public search(\n query: string,\n options?: SearchOptions | number\n ): MagicPageResult<Card, Cards> {\n return new MagicPageResult<Card, Cards>(this, 'cards/search', {\n q: query,\n ...(typeof options === 'number'\n ? { page: options }\n : { page: 1, ...options }),\n });\n }\n}\n\nexport default new Cards();\n","import MagicQuery from '../query/MagicQuery';\nimport { ResultCatalog } from '../types';\n\nclass Catalog extends MagicQuery {\n public async artifactTypes(): Promise<string[]> {\n return (\n (await this.query<ResultCatalog>('catalog/artifact-types'))?.data || []\n );\n }\n\n public async artistNames(): Promise<string[]> {\n return (\n (await this.query<ResultCatalog>('catalog/artist-names'))?.data || []\n );\n }\n\n public async cardNames(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/card-names'))?.data || [];\n }\n\n public async creatureTypes(): Promise<string[]> {\n return (\n (await this.query<ResultCatalog>('catalog/creature-types'))?.data || []\n );\n }\n\n public async enchantmentTypes(): Promise<string[]> {\n return (\n (await this.query<ResultCatalog>('catalog/enchantment-types'))?.data || []\n );\n }\n\n public async landTypes(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/land-types'))?.data || [];\n }\n\n public async loyalties(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/loyalties'))?.data || [];\n }\n\n public async planeswalkerTypes(): Promise<string[]> {\n return (\n (await this.query<ResultCatalog>('catalog/planeswalker-types'))?.data ||\n []\n );\n }\n\n public async powers(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/powers'))?.data || [];\n }\n\n public async spellTypes(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/spell-types'))?.data || [];\n }\n\n public async toughnesses(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/toughnesses'))?.data || [];\n }\n\n public async watermarks(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/watermarks'))?.data || [];\n }\n\n public async wordBank(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/word-bank'))?.data || [];\n }\n}\n\nexport default new Catalog();\n","import MagicQuery from '../query/MagicQuery';\nimport { HomepageLink, ResultList } from '../types';\n\nclass Misc extends MagicQuery {\n public async homepageLinks(): Promise<HomepageLink[]> {\n return (\n (await this.query<ResultList<HomepageLink>>('homepage-links'))?.data || []\n );\n }\n}\n\nexport default new Misc();\n","import MagicQuery from '../query/MagicQuery';\nimport { ResultList, Ruling } from '../types';\n\nclass Rulings extends MagicQuery {\n public async byArenaId(id: number): Promise<Ruling[]> {\n return (\n (await this.query<ResultList<Ruling>>(['cards/arena', id, 'rulings']))\n ?.data || []\n );\n }\n\n public async byId(id: string): Promise<Ruling[]> {\n return (\n (await this.query<ResultList<Ruling>>(['cards', id, 'rulings']))?.data ||\n []\n );\n }\n\n public async byMtgoId(id: number): Promise<Ruling[]> {\n return (\n (await this.query<ResultList<Ruling>>(['cards/mtgo', id, 'rulings']))\n ?.data || []\n );\n }\n\n public async byMultiverseId(id: number): Promise<Ruling[]> {\n return (\n (\n await this.query<ResultList<Ruling>>([\n 'cards/multiverse',\n id,\n 'rulings',\n ])\n )?.data || []\n );\n }\n\n public async bySet(\n setCode: string,\n collectorNumber: string | number\n ): Promise<Ruling[]> {\n return (\n (\n await this.query<ResultList<Ruling>>([\n 'cards',\n setCode,\n `${collectorNumber}`,\n 'rulings',\n ])\n )?.data || []\n );\n }\n}\n\nexport default new Rulings();\n","import MagicQuery from '../query/MagicQuery';\nimport { ResultList, Set } from '../types';\n\nclass Sets extends MagicQuery {\n public async all(): Promise<Set[]> {\n const result = await this.query<ResultList<Set>>('sets');\n return result?.data || [];\n }\n\n public async byCode(code: string): Promise<Set | undefined> {\n return await this.query<Set>(['sets', code]);\n }\n\n public async byId(id: string): Promise<Set | undefined> {\n return this.query<Set>(['sets', id]);\n }\n\n public async byTcgPlayerId(id: number): Promise<Set | undefined> {\n return this.query<Set>(['sets/tcgplayer', id]);\n }\n}\n\nexport default new Sets();\n","import MagicQuery from '../query/MagicQuery';\nimport { CardSymbol, ManaCost, ResultList } from '../types';\n\nclass Symbology extends MagicQuery {\n public async all(): Promise<CardSymbol[]> {\n return (await this.query<ResultList<CardSymbol>>('symbology'))?.data || [];\n }\n\n public async parseMana(shorthand: string): Promise<ManaCost | undefined> {\n return await this.query<ManaCost>('symbology/parse-mana', {\n cost: shorthand,\n });\n }\n}\n\nexport default new Symbology();\n","import { CardIdentifier } from '../types';\n\nexport class CardIdentifierBuilder {\n public static byId(id: string): CardIdentifier {\n return { id };\n }\n\n public static byIllustrationId(id: string): CardIdentifier {\n return { illustration_id: id };\n }\n\n public static byMtgoId(id: number): CardIdentifier {\n return { mtgo_id: id };\n }\n\n public static byMultiverseId(id: number): CardIdentifier {\n return { multiverse_id: id };\n }\n\n public static byName(name: string, set?: string): CardIdentifier {\n return { name, set };\n }\n\n public static byOracleId(id: string): CardIdentifier {\n return { oracle_id: id };\n }\n\n public static bySet(\n set: string,\n collectorNumber: string | number\n ): CardIdentifier {\n return { collector_number: `${collectorNumber}`, set };\n }\n}\n","export enum Border {\n black,\n borderless,\n gold,\n silver,\n white,\n}\n","export enum BulkDataTypes {\n oracle_cards,\n unique_artwork,\n default_cards,\n all_cards,\n rulings,\n}\n","enum Colors {\n W,\n B,\n R,\n U,\n G,\n}\n\nexport type Color = keyof typeof Colors;\n","export enum Format {\n standard,\n future,\n historic,\n pioneer,\n modern,\n legacy,\n pauper,\n vintage,\n penny,\n commander,\n brawl,\n duel,\n oldschool,\n}\n","export enum FrameEffect {\n legendary,\n miracle,\n nyxtouched,\n draft,\n devoid,\n tombstone,\n colorshifted,\n inverted,\n sunmoondfc,\n compasslanddfc,\n originpwdfc,\n mooneldrazidfc,\n moonreversemoondfc,\n showcase,\n extendedart,\n}\n","export enum Game {\n paper,\n arena,\n mtgo,\n}\n","export enum Layout {\n normal,\n split,\n flip,\n transform,\n meld,\n leveler,\n saga,\n adventure,\n planar,\n scheme,\n vanguard,\n token,\n double_faced_token,\n emblem,\n augment,\n host,\n art_series,\n double_sided,\n}\n","export enum Legality {\n legal,\n not_legal,\n restricted,\n banned,\n}\n","export enum PromoType {\n tourney,\n prerelease,\n datestamped,\n planeswalkerdeck,\n buyabox,\n judgegift,\n event,\n convention,\n starterdeck,\n instore,\n setpromo,\n fnm,\n openhouse,\n league,\n draftweekend,\n gameday,\n release,\n intropack,\n giftbox,\n duels,\n wizardsplaynetwork,\n premiereshop,\n playerrewards,\n gateway,\n arenaleague,\n}\n","export enum Rarity {\n common,\n uncommon,\n rare,\n mythic,\n}\n","export enum RelatedCardComponent {\n token,\n meld_part,\n meld_result,\n combo_piece,\n}\n","export enum SetType {\n core,\n expansion,\n masters,\n masterpiece,\n from_the_vault,\n spellbook,\n premium_deck,\n duel_deck,\n draft_innovation,\n treasure_chest,\n commander,\n planechase,\n archenemy,\n vanguard,\n funny,\n starter,\n box,\n promo,\n token,\n memorabilia,\n}\n","export enum Sort {\n name,\n set,\n released,\n rarity,\n color,\n usd,\n tix,\n eur,\n cmc,\n power,\n toughness,\n edhrec,\n artist,\n}\n","export enum SortDirection {\n auto,\n asc,\n desc,\n}\n","export enum UniqueStrategy {\n cards,\n art,\n prints,\n}\n"],"names":["Axios","Border","BulkDataTypes","Format","FrameEffect","Game","Layout","Legality","PromoType","Rarity","RelatedCardComponent","SetType","Sort","SortDirection","UniqueStrategy"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("axios")):"function"==typeof define&&define.amd?define(["exports","axios"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).scryfall={},t.axios)}(this,(function(t,e){"use strict";function r(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var i=r(e);
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("axios")):"function"==typeof define&&define.amd?define(["exports","axios"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).scryfall={},e.axios)}(this,(function(e,t){"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=r(t);
2
2
  /*! *****************************************************************************
3
3
  Copyright (c) Microsoft Corporation.
4
4
 
@@ -12,5 +12,5 @@
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */function n(t,e,r,i){return new(r||(r=Promise))((function(n,o){function s(t){try{a(i.next(t))}catch(t){o(t)}}function u(t){try{a(i.throw(t))}catch(t){o(t)}}function a(t){var e;t.done?n(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(s,u)}a((i=i.apply(t,e||[])).next())}))}class o{constructor(t,e,r,i){this.q=t,this.apiPath=e,this.query=r,this.post=i,this.hasMore=!0}get count(){return this._count}all(){return n(this,void 0,void 0,(function*(){const t=[];for(;this.hasMore;){const e=yield this.next();t.push(...e)}return t}))}get(t){return n(this,void 0,void 0,(function*(){const e=[];for(;this.hasMore;){const r=yield this.next();if(e.push(...r),e.length==t)return e;if(e.length>t)return e.slice(0,t)}return e}))}next(){return n(this,void 0,void 0,(function*(){const t=yield this.q.query(this.apiPath,this.query,this.post);return this.hasMore=(null==t?void 0:t.has_more)||!1,this._count=Number.parseInt(((null==t?void 0:t.total_cards)||0)+""),this.hasMore&&this.setNextPage(),(null==t?void 0:t.data)||[]}))}page(t){return n(this,void 0,void 0,(function*(){return this.query.page=t,this.next()}))}setNextPage(){this.query.page=this.query.page+1}}class s extends Error{constructor(t){super(null==t?void 0:t.details),this.data=t,Object.setPrototypeOf(this,s.prototype)}}class u{static canRetry(t){return"not_found"!=(null==t?void 0:t.code)&&"bad_request"!=(null==t?void 0:t.code)&&(!u.retry.canRetry||u.retry.canRetry(t))}static debounce(){return n(this,void 0,void 0,(function*(){const t=Date.now(),e=t-u.lastQuery;if(e>=u.rateLimit)u.lastQuery=t;else{const t=u.rateLimit-e;u.lastQuery+=t,yield u.sleep(t)}}))}static sleep(t=0){return new Promise((e=>setTimeout(e,t)))}static tryQuery(t,e,r,o){var a;return n(this,void 0,void 0,(function*(){yield u.debounce();const n=Object.assign({data:r,method:r?"POST":"GET",params:e,url:`${u.endpoint}/${t}`},o);try{return yield i.default.request(n)}catch(t){if(t.isAxiosError){throw new s(null===(a=t.response)||void 0===a?void 0:a.data)}throw t}}))}query(t,e,r,i){return n(this,void 0,void 0,(function*(){let n,o;for(Array.isArray(t)&&(t=t.join("/")),n=0;n<u.retry.attempts;n++){let n;try{o=yield u.tryQuery(`${t}`,e,r,i)}catch(t){if(!(t instanceof s))throw t;n=t.data}if(o||!u.canRetry(n))break;yield u.sleep(u.retry.timeout)}return null==o?void 0:o.data}))}}u.retry={attempts:1},u.endpoint="https://api.scryfall.com",u.lastQuery=100,u.rateLimit=100;var a=new class extends u{autoCompleteName(t){return n(this,void 0,void 0,(function*(){const e=yield this.query("cards/autocomplete",{q:t});return(null==e?void 0:e.data)||[]}))}byArenaId(t){return n(this,void 0,void 0,(function*(){return this.query(["cards/arena",t])}))}byId(t){return n(this,void 0,void 0,(function*(){return this.query(["cards",t])}))}byMtgoId(t){return n(this,void 0,void 0,(function*(){return this.query(["cards/mtgo",t])}))}byMultiverseId(t){return n(this,void 0,void 0,(function*(){return this.query(["cards/multiverse",t])}))}byName(t,e,r=!1){return n(this,void 0,void 0,(function*(){return"boolean"==typeof e&&(r=e,e=void 0),this.query("cards/named",{[r?"fuzzy":"exact"]:t,set:e})}))}bySet(t,e,r){return n(this,void 0,void 0,(function*(){const i=["cards",t,e];return r&&i.push(r),this.query(i)}))}byTcgPlayerId(t){return n(this,void 0,void 0,(function*(){return this.query(["cards/tcgplayer",t])}))}collection(...t){return n(this,void 0,void 0,(function*(){const e=[];for(let r=0;r<t.length;r+=75){const i={identifiers:t.slice(r,r+75)},n=yield this.query("cards/collection",void 0,i);e.push(...(null==n?void 0:n.data)||[])}return e}))}random(){return n(this,void 0,void 0,(function*(){return this.query("cards/random")}))}search(t,e){return new o(this,"cards/search",Object.assign({q:t},"number"==typeof e?{page:e}:Object.assign({page:1},e)))}};t.Cards=a,Object.defineProperty(t,"__esModule",{value:!0})}));
15
+ ***************************************************************************** */function o(e,t,r,i){return new(r||(r=Promise))((function(o,a){function n(e){try{d(i.next(e))}catch(e){a(e)}}function s(e){try{d(i.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(n,s)}d((i=i.apply(e,t||[])).next())}))}class a{constructor(e,t,r,i){this.q=e,this.apiPath=t,this.query=r,this.post=i,this._hasMore=!0}get count(){return this.hasMore}get hasMore(){return this._count}all(){return o(this,void 0,void 0,(function*(){const e=[];for(;this._hasMore;){const t=yield this.next();e.push(...t)}return e}))}get(e){return o(this,void 0,void 0,(function*(){const t=[];for(;this._hasMore;){const r=yield this.next();if(t.push(...r),t.length==e)return t;if(t.length>e)return t.slice(0,e)}return t}))}next(){return o(this,void 0,void 0,(function*(){const e=yield this.q.query(this.apiPath,this.query,this.post);return this._hasMore=(null==e?void 0:e.has_more)||!1,this._count=Number.parseInt(((null==e?void 0:e.total_cards)||0)+""),this._hasMore&&this.setNextPage(),(null==e?void 0:e.data)||[]}))}page(e){return o(this,void 0,void 0,(function*(){return this.query.page=e,this.next()}))}setNextPage(){this.query.page=this.query.page+1}}class n extends Error{constructor(e){super(null==e?void 0:e.details),this.data=e,Object.setPrototypeOf(this,n.prototype)}}class s{static canRetry(e){return"not_found"!=(null==e?void 0:e.code)&&"bad_request"!=(null==e?void 0:e.code)&&(!s.retry.canRetry||s.retry.canRetry(e))}static debounce(){return o(this,void 0,void 0,(function*(){const e=Date.now(),t=e-s.lastQuery;if(t>=s.rateLimit)s.lastQuery=e;else{const e=s.rateLimit-t;s.lastQuery+=e,yield s.sleep(e)}}))}static sleep(e=0){return new Promise((t=>setTimeout(t,e)))}static tryQuery(e,t,r,a){var d;return o(this,void 0,void 0,(function*(){yield s.debounce();const o=Object.assign({data:r,method:r?"POST":"GET",params:t,url:`${s.endpoint}/${e}`},a);try{return yield i.default.request(o)}catch(e){if(e.isAxiosError){throw new n(null===(d=e.response)||void 0===d?void 0:d.data)}throw e}}))}query(e,t,r,i){return o(this,void 0,void 0,(function*(){let o,a;for(Array.isArray(e)&&(e=e.join("/")),o=0;o<s.retry.attempts;o++){let o;try{a=yield s.tryQuery(`${e}`,t,r,i)}catch(e){if(!(e instanceof n))throw e;o=e.data}if(a||!s.canRetry(o))break;yield s.sleep(s.retry.timeout)}return null==a?void 0:a.data}))}}s.retry={attempts:1},s.endpoint="https://api.scryfall.com",s.lastQuery=100,s.rateLimit=100;var d=new class extends s{autoCompleteName(e){return o(this,void 0,void 0,(function*(){const t=yield this.query("cards/autocomplete",{q:e});return(null==t?void 0:t.data)||[]}))}byArenaId(e){return o(this,void 0,void 0,(function*(){return this.query(["cards/arena",e])}))}byId(e){return o(this,void 0,void 0,(function*(){return this.query(["cards",e])}))}byMtgoId(e){return o(this,void 0,void 0,(function*(){return this.query(["cards/mtgo",e])}))}byMultiverseId(e){return o(this,void 0,void 0,(function*(){return this.query(["cards/multiverse",e])}))}byName(e,t,r=!1){return o(this,void 0,void 0,(function*(){return"boolean"==typeof t&&(r=t,t=void 0),this.query("cards/named",{[r?"fuzzy":"exact"]:e,set:t})}))}bySet(e,t,r){return o(this,void 0,void 0,(function*(){const i=["cards",e,t];return r&&i.push(r),this.query(i)}))}byTcgPlayerId(e){return o(this,void 0,void 0,(function*(){return this.query(["cards/tcgplayer",e])}))}collection(...e){return o(this,void 0,void 0,(function*(){const t=[];for(let r=0;r<e.length;r+=75){const i={identifiers:e.slice(r,r+75)},o=yield this.query("cards/collection",void 0,i);t.push(...(null==o?void 0:o.data)||[])}return t}))}random(){return o(this,void 0,void 0,(function*(){return this.query("cards/random")}))}search(e,t){return new a(this,"cards/search",Object.assign({q:e},"number"==typeof t?{page:t}:Object.assign({page:1},t)))}};var u=new class extends s{artifactTypes(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("catalog/artifact-types"))||void 0===e?void 0:e.data)||[]}))}artistNames(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("catalog/artist-names"))||void 0===e?void 0:e.data)||[]}))}cardNames(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("catalog/card-names"))||void 0===e?void 0:e.data)||[]}))}creatureTypes(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("catalog/creature-types"))||void 0===e?void 0:e.data)||[]}))}enchantmentTypes(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("catalog/enchantment-types"))||void 0===e?void 0:e.data)||[]}))}landTypes(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("catalog/land-types"))||void 0===e?void 0:e.data)||[]}))}loyalties(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("catalog/loyalties"))||void 0===e?void 0:e.data)||[]}))}planeswalkerTypes(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("catalog/planeswalker-types"))||void 0===e?void 0:e.data)||[]}))}powers(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("catalog/powers"))||void 0===e?void 0:e.data)||[]}))}spellTypes(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("catalog/spell-types"))||void 0===e?void 0:e.data)||[]}))}toughnesses(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("catalog/toughnesses"))||void 0===e?void 0:e.data)||[]}))}watermarks(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("catalog/watermarks"))||void 0===e?void 0:e.data)||[]}))}wordBank(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("catalog/word-bank"))||void 0===e?void 0:e.data)||[]}))}};var l=new class extends s{homepageLinks(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("homepage-links"))||void 0===e?void 0:e.data)||[]}))}};var c=new class extends s{byArenaId(e){var t;return o(this,void 0,void 0,(function*(){return(null===(t=yield this.query(["cards/arena",e,"rulings"]))||void 0===t?void 0:t.data)||[]}))}byId(e){var t;return o(this,void 0,void 0,(function*(){return(null===(t=yield this.query(["cards",e,"rulings"]))||void 0===t?void 0:t.data)||[]}))}byMtgoId(e){var t;return o(this,void 0,void 0,(function*(){return(null===(t=yield this.query(["cards/mtgo",e,"rulings"]))||void 0===t?void 0:t.data)||[]}))}byMultiverseId(e){var t;return o(this,void 0,void 0,(function*(){return(null===(t=yield this.query(["cards/multiverse",e,"rulings"]))||void 0===t?void 0:t.data)||[]}))}bySet(e,t){var r;return o(this,void 0,void 0,(function*(){return(null===(r=yield this.query(["cards",e,`${t}`,"rulings"]))||void 0===r?void 0:r.data)||[]}))}};var v=new class extends s{all(){return o(this,void 0,void 0,(function*(){const e=yield this.query("sets");return(null==e?void 0:e.data)||[]}))}byCode(e){return o(this,void 0,void 0,(function*(){return yield this.query(["sets",e])}))}byId(e){return o(this,void 0,void 0,(function*(){return this.query(["sets",e])}))}byTcgPlayerId(e){return o(this,void 0,void 0,(function*(){return this.query(["sets/tcgplayer",e])}))}};var y,h,m,p,f,g,b,q,_,w,k,x,T,I,S,M=new class extends s{all(){var e;return o(this,void 0,void 0,(function*(){return(null===(e=yield this.query("symbology"))||void 0===e?void 0:e.data)||[]}))}parseMana(e){return o(this,void 0,void 0,(function*(){return yield this.query("symbology/parse-mana",{cost:e})}))}};e.Border=void 0,(y=e.Border||(e.Border={}))[y.black=0]="black",y[y.borderless=1]="borderless",y[y.gold=2]="gold",y[y.silver=3]="silver",y[y.white=4]="white",e.BulkDataTypes=void 0,(h=e.BulkDataTypes||(e.BulkDataTypes={}))[h.oracle_cards=0]="oracle_cards",h[h.unique_artwork=1]="unique_artwork",h[h.default_cards=2]="default_cards",h[h.all_cards=3]="all_cards",h[h.rulings=4]="rulings",function(e){e[e.W=0]="W",e[e.B=1]="B",e[e.R=2]="R",e[e.U=3]="U",e[e.G=4]="G"}(m||(m={})),e.Format=void 0,(p=e.Format||(e.Format={}))[p.standard=0]="standard",p[p.future=1]="future",p[p.historic=2]="historic",p[p.pioneer=3]="pioneer",p[p.modern=4]="modern",p[p.legacy=5]="legacy",p[p.pauper=6]="pauper",p[p.vintage=7]="vintage",p[p.penny=8]="penny",p[p.commander=9]="commander",p[p.brawl=10]="brawl",p[p.duel=11]="duel",p[p.oldschool=12]="oldschool",e.FrameEffect=void 0,(f=e.FrameEffect||(e.FrameEffect={}))[f.legendary=0]="legendary",f[f.miracle=1]="miracle",f[f.nyxtouched=2]="nyxtouched",f[f.draft=3]="draft",f[f.devoid=4]="devoid",f[f.tombstone=5]="tombstone",f[f.colorshifted=6]="colorshifted",f[f.inverted=7]="inverted",f[f.sunmoondfc=8]="sunmoondfc",f[f.compasslanddfc=9]="compasslanddfc",f[f.originpwdfc=10]="originpwdfc",f[f.mooneldrazidfc=11]="mooneldrazidfc",f[f.moonreversemoondfc=12]="moonreversemoondfc",f[f.showcase=13]="showcase",f[f.extendedart=14]="extendedart",e.Game=void 0,(g=e.Game||(e.Game={}))[g.paper=0]="paper",g[g.arena=1]="arena",g[g.mtgo=2]="mtgo",e.Layout=void 0,(b=e.Layout||(e.Layout={}))[b.normal=0]="normal",b[b.split=1]="split",b[b.flip=2]="flip",b[b.transform=3]="transform",b[b.meld=4]="meld",b[b.leveler=5]="leveler",b[b.saga=6]="saga",b[b.adventure=7]="adventure",b[b.planar=8]="planar",b[b.scheme=9]="scheme",b[b.vanguard=10]="vanguard",b[b.token=11]="token",b[b.double_faced_token=12]="double_faced_token",b[b.emblem=13]="emblem",b[b.augment=14]="augment",b[b.host=15]="host",b[b.art_series=16]="art_series",b[b.double_sided=17]="double_sided",e.Legality=void 0,(q=e.Legality||(e.Legality={}))[q.legal=0]="legal",q[q.not_legal=1]="not_legal",q[q.restricted=2]="restricted",q[q.banned=3]="banned",e.PromoType=void 0,(_=e.PromoType||(e.PromoType={}))[_.tourney=0]="tourney",_[_.prerelease=1]="prerelease",_[_.datestamped=2]="datestamped",_[_.planeswalkerdeck=3]="planeswalkerdeck",_[_.buyabox=4]="buyabox",_[_.judgegift=5]="judgegift",_[_.event=6]="event",_[_.convention=7]="convention",_[_.starterdeck=8]="starterdeck",_[_.instore=9]="instore",_[_.setpromo=10]="setpromo",_[_.fnm=11]="fnm",_[_.openhouse=12]="openhouse",_[_.league=13]="league",_[_.draftweekend=14]="draftweekend",_[_.gameday=15]="gameday",_[_.release=16]="release",_[_.intropack=17]="intropack",_[_.giftbox=18]="giftbox",_[_.duels=19]="duels",_[_.wizardsplaynetwork=20]="wizardsplaynetwork",_[_.premiereshop=21]="premiereshop",_[_.playerrewards=22]="playerrewards",_[_.gateway=23]="gateway",_[_.arenaleague=24]="arenaleague",e.Rarity=void 0,(w=e.Rarity||(e.Rarity={}))[w.common=0]="common",w[w.uncommon=1]="uncommon",w[w.rare=2]="rare",w[w.mythic=3]="mythic",e.RelatedCardComponent=void 0,(k=e.RelatedCardComponent||(e.RelatedCardComponent={}))[k.token=0]="token",k[k.meld_part=1]="meld_part",k[k.meld_result=2]="meld_result",k[k.combo_piece=3]="combo_piece",e.SetType=void 0,(x=e.SetType||(e.SetType={}))[x.core=0]="core",x[x.expansion=1]="expansion",x[x.masters=2]="masters",x[x.masterpiece=3]="masterpiece",x[x.from_the_vault=4]="from_the_vault",x[x.spellbook=5]="spellbook",x[x.premium_deck=6]="premium_deck",x[x.duel_deck=7]="duel_deck",x[x.draft_innovation=8]="draft_innovation",x[x.treasure_chest=9]="treasure_chest",x[x.commander=10]="commander",x[x.planechase=11]="planechase",x[x.archenemy=12]="archenemy",x[x.vanguard=13]="vanguard",x[x.funny=14]="funny",x[x.starter=15]="starter",x[x.box=16]="box",x[x.promo=17]="promo",x[x.token=18]="token",x[x.memorabilia=19]="memorabilia",e.Sort=void 0,(T=e.Sort||(e.Sort={}))[T.name=0]="name",T[T.set=1]="set",T[T.released=2]="released",T[T.rarity=3]="rarity",T[T.color=4]="color",T[T.usd=5]="usd",T[T.tix=6]="tix",T[T.eur=7]="eur",T[T.cmc=8]="cmc",T[T.power=9]="power",T[T.toughness=10]="toughness",T[T.edhrec=11]="edhrec",T[T.artist=12]="artist",e.SortDirection=void 0,(I=e.SortDirection||(e.SortDirection={}))[I.auto=0]="auto",I[I.asc=1]="asc",I[I.desc=2]="desc",e.UniqueStrategy=void 0,(S=e.UniqueStrategy||(e.UniqueStrategy={}))[S.cards=0]="cards",S[S.art=1]="art",S[S.prints=2]="prints",e.CardIdentifierBuilder=class{static byId(e){return{id:e}}static byIllustrationId(e){return{illustration_id:e}}static byMtgoId(e){return{mtgo_id:e}}static byMultiverseId(e){return{multiverse_id:e}}static byName(e,t){return{name:e,set:t}}static byOracleId(e){return{oracle_id:e}}static bySet(e,t){return{collector_number:`${t}`,set:e}}},e.Cards=d,e.Catalog=u,e.MagicQueryError=n,e.Misc=l,e.Rulings=c,e.Sets=v,e.Symbology=M,Object.defineProperty(e,"__esModule",{value:!0})}));
16
16
  //# sourceMappingURL=skryfall.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skryfall.umd.min.js","sources":["../src/query/MagicPageResult.ts","../src/error/MagicQueryError.ts","../src/query/MagicQuery.ts","../src/api/Cards.ts"],"sourcesContent":["import { PageQuery, ResultList } from '../types';\nimport MagicQuery from './MagicQuery';\n\nexport default class MagicPageResult<T, Q extends MagicQuery, P = unknown> {\n private hasMore: boolean;\n\n constructor(\n private readonly q: Q,\n private readonly apiPath: string,\n private readonly query: PageQuery,\n private readonly post?: P\n ) {\n this.hasMore = true;\n }\n\n private _count?: number;\n\n public get count() {\n return this._count;\n }\n\n public async all(): Promise<T[]> {\n const r: T[] = [];\n while (this.hasMore) {\n const result = await this.next();\n r.push(...result);\n }\n return r;\n }\n\n public async get(limit: number): Promise<T[]> {\n const r: T[] = [];\n while (this.hasMore) {\n const result = await this.next();\n r.push(...result);\n if (r.length == limit) {\n return r;\n } else if (r.length > limit) {\n return r.slice(0, limit);\n }\n }\n return r;\n }\n\n public async next(): Promise<T[]> {\n const results = await this.q.query<ResultList<T>, P>(\n this.apiPath,\n this.query,\n this.post\n );\n this.hasMore = results?.has_more || false;\n this._count = Number.parseInt((results?.total_cards || 0) + '');\n if (this.hasMore) {\n this.setNextPage();\n }\n return results?.data || [];\n }\n\n public async page(page: number): Promise<T[]> {\n this.query.page = page;\n return this.next();\n }\n\n private setNextPage(): void {\n this.query.page = this.query.page + 1;\n }\n}\n","import { SearchError } from '../types/SearchError';\n\nexport class MagicQueryError extends Error {\n constructor(readonly data?: SearchError) {\n super(data?.details);\n Object.setPrototypeOf(this, MagicQueryError.prototype);\n }\n}\n","import Axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { MagicQueryError } from '../error/MagicQueryError';\nimport { Query, RetryStrategy, SearchError, TOrArrayOfT } from '../types';\n\nexport default class MagicQuery {\n public static retry: RetryStrategy = { attempts: 1 };\n // the path to the api\n private static readonly endpoint = 'https://api.scryfall.com';\n // time where the last api call was made\n private static lastQuery = 100;\n // the api requests 50-100 ms between calls, we go on the generous side and never wait less than 100 ms between calls\n private static readonly rateLimit = 100;\n\n private static canRetry(error?: SearchError) {\n if (error?.code == 'not_found' || error?.code == 'bad_request')\n return false;\n return !MagicQuery.retry.canRetry || MagicQuery.retry.canRetry(error);\n }\n\n private static async debounce(): Promise<void> {\n const now = Date.now();\n const timeSinceLastQuery = now - MagicQuery.lastQuery;\n if (timeSinceLastQuery >= MagicQuery.rateLimit) {\n MagicQuery.lastQuery = now;\n } else {\n const timeUntilNextQuery = MagicQuery.rateLimit - timeSinceLastQuery;\n MagicQuery.lastQuery += timeUntilNextQuery;\n await MagicQuery.sleep(timeUntilNextQuery);\n }\n }\n\n private static sleep(ms = 0) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n private static async tryQuery<T, Y>(\n apiPath: string,\n query?: Query,\n post?: Y,\n requestOptions?: AxiosRequestConfig\n ): Promise<AxiosResponse<T, Y>> {\n await MagicQuery.debounce();\n\n const config: AxiosRequestConfig<Y> = {\n data: post,\n method: post ? 'POST' : 'GET',\n params: query,\n url: `${MagicQuery.endpoint}/${apiPath}`,\n ...requestOptions,\n };\n\n try {\n return await Axios.request<T, AxiosResponse<T>, Y>(config);\n } catch (e: any) {\n if (e['isAxiosError']) {\n const error = e as AxiosError<SearchError>;\n throw new MagicQueryError(error.response?.data);\n } else {\n throw e;\n }\n }\n }\n\n public async query<T = unknown, Y = unknown>(\n apiPath: TOrArrayOfT<string | number | undefined>,\n query?: Query,\n post?: Y,\n requestOptions?: AxiosRequestConfig\n ): Promise<T | undefined> {\n if (Array.isArray(apiPath)) {\n apiPath = apiPath.join('/');\n }\n\n let retries: number;\n let result;\n\n for (retries = 0; retries < MagicQuery.retry.attempts; retries++) {\n let error: SearchError | undefined;\n try {\n result = await MagicQuery.tryQuery<T, Y>(\n `${apiPath}`,\n query,\n post,\n requestOptions\n );\n } catch (e: any) {\n if (e instanceof MagicQueryError) {\n error = e.data;\n } else {\n throw e;\n }\n }\n if (result || !MagicQuery.canRetry(error)) break;\n await MagicQuery.sleep(MagicQuery.retry.timeout);\n }\n\n return result?.data;\n }\n}\n","import MagicPageResult from '../query/MagicPageResult';\nimport MagicQuery from '../query/MagicQuery';\nimport {\n Card,\n CardIdentifier,\n ResultCatalog,\n ResultList,\n SearchOptions,\n} from '../types';\n\nclass Cards extends MagicQuery {\n public async autoCompleteName(name: string): Promise<string[]> {\n const result = await this.query<ResultCatalog>('cards/autocomplete', {\n q: name,\n });\n return result?.data || [];\n }\n\n public async byArenaId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/arena', id]);\n }\n\n public async byId(id: string): Promise<Card | undefined> {\n return this.query<Card>(['cards', id]);\n }\n\n public async byMtgoId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/mtgo', id]);\n }\n\n public async byMultiverseId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/multiverse', id]);\n }\n\n public async byName(name: string, fuzzy?: boolean): Promise<Card | undefined>;\n\n public async byName(\n name: string,\n set?: string,\n fuzzy?: boolean\n ): Promise<Card | undefined>;\n\n public async byName(\n name: string,\n set?: string | boolean,\n fuzzy = false\n ): Promise<Card | undefined> {\n if (typeof set === 'boolean') {\n fuzzy = set;\n set = undefined;\n }\n\n return this.query<Card>('cards/named', {\n [fuzzy ? 'fuzzy' : 'exact']: name,\n set,\n });\n }\n\n public async bySet(\n setCode: string,\n collectorNumber: number,\n lang?: string\n ): Promise<Card | undefined> {\n const path = ['cards', setCode, collectorNumber];\n if (lang) path.push(lang);\n return this.query<Card>(path);\n }\n\n public async byTcgPlayerId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/tcgplayer', id]);\n }\n\n public async collection(...identifiers: CardIdentifier[]): Promise<Card[]> {\n const cards: Card[] = [];\n for (let i = 0; i < identifiers.length; i += 75) {\n // the api only supports a max collection size of 75, so we take the list of identifiers (any length)\n // and split it into 75 card-max requests\n const collectionSection = { identifiers: identifiers.slice(i, i + 75) };\n\n const result = await this.query<ResultList<Card, CardIdentifier>>(\n 'cards/collection',\n undefined,\n collectionSection\n );\n cards.push(...(result?.data || []));\n }\n return cards;\n }\n\n public async random(): Promise<Card | undefined> {\n return this.query<Card>('cards/random');\n }\n\n public search(\n query: string,\n options?: SearchOptions | number\n ): MagicPageResult<Card, Cards> {\n return new MagicPageResult<Card, Cards>(this, 'cards/search', {\n q: query,\n ...(typeof options === 'number'\n ? { page: options }\n : { page: 1, ...options }),\n });\n }\n}\n\nexport default new Cards();\n"],"names":["MagicPageResult","constructor","q","apiPath","query","post","this","hasMore","count","_count","all","r","result","next","push","get","limit","length","slice","results","has_more","Number","parseInt","total_cards","setNextPage","data","page","MagicQueryError","Error","super","details","Object","setPrototypeOf","prototype","MagicQuery","static","error","code","retry","canRetry","now","Date","timeSinceLastQuery","lastQuery","rateLimit","timeUntilNextQuery","sleep","ms","Promise","resolve","setTimeout","requestOptions","debounce","config","method","params","url","endpoint","Axios","request","e","response","retries","Array","isArray","join","attempts","tryQuery","timeout","autoCompleteName","name","byArenaId","id","byId","byMtgoId","byMultiverseId","byName","set","fuzzy","undefined","bySet","setCode","collectorNumber","lang","path","byTcgPlayerId","collection","identifiers","cards","i","collectionSection","random","search","options"],"mappings":"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"}
1
+ {"version":3,"file":"skryfall.umd.min.js","sources":["../src/query/MagicPageResult.ts","../src/error/MagicQueryError.ts","../src/query/MagicQuery.ts","../src/api/Cards.ts","../src/api/Catalog.ts","../src/api/Misc.ts","../src/api/Rulings.ts","../src/api/Sets.ts","../src/types/Border.ts","../src/types/BulkDataTypes.ts","../src/types/Color.ts","../src/types/Format.ts","../src/types/FrameEffect.ts","../src/types/Game.ts","../src/types/Layout.ts","../src/types/Legalty.ts","../src/types/PromoType.ts","../src/types/Rarity.ts","../src/types/RelatedCardComponent.ts","../src/types/SetType.ts","../src/types/Sort.ts","../src/types/SortDirection.ts","../src/types/UniqueStrategy.ts","../src/api/Symbology.ts","../src/api/CardIdentifierBuilder.ts"],"sourcesContent":["import { PageQuery, ResultList } from '../types';\nimport MagicQuery from './MagicQuery';\n\nexport default class MagicPageResult<T, Q extends MagicQuery, P = unknown> {\n private _hasMore: boolean;\n private _count?: number;\n\n constructor(\n private readonly q: Q,\n private readonly apiPath: string,\n private readonly query: PageQuery,\n private readonly post?: P\n ) {\n this._hasMore = true;\n }\n\n public get count() {\n return this.hasMore;\n }\n\n public get hasMore() {\n return this._count;\n }\n\n public async all(): Promise<T[]> {\n const r: T[] = [];\n while (this._hasMore) {\n const result = await this.next();\n r.push(...result);\n }\n return r;\n }\n\n public async get(limit: number): Promise<T[]> {\n const r: T[] = [];\n while (this._hasMore) {\n const result = await this.next();\n r.push(...result);\n if (r.length == limit) {\n return r;\n } else if (r.length > limit) {\n return r.slice(0, limit);\n }\n }\n return r;\n }\n\n public async next(): Promise<T[]> {\n const results = await this.q.query<ResultList<T>, P>(\n this.apiPath,\n this.query,\n this.post\n );\n this._hasMore = results?.has_more || false;\n this._count = Number.parseInt((results?.total_cards || 0) + '');\n if (this._hasMore) {\n this.setNextPage();\n }\n return results?.data || [];\n }\n\n public async page(page: number): Promise<T[]> {\n this.query.page = page;\n return this.next();\n }\n\n private setNextPage(): void {\n this.query.page = this.query.page + 1;\n }\n}\n","import { SearchError } from '../types/SearchError';\n\nexport class MagicQueryError extends Error {\n constructor(readonly data?: SearchError) {\n super(data?.details);\n Object.setPrototypeOf(this, MagicQueryError.prototype);\n }\n}\n","import Axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { MagicQueryError } from '../error/MagicQueryError';\nimport { Query, RetryStrategy, SearchError, TOrArrayOfT } from '../types';\n\nexport default class MagicQuery {\n public static retry: RetryStrategy = { attempts: 1 };\n // the path to the api\n private static readonly endpoint = 'https://api.scryfall.com';\n // time where the last api call was made\n private static lastQuery = 100;\n // the api requests 50-100 ms between calls, we go on the generous side and never wait less than 100 ms between calls\n private static readonly rateLimit = 100;\n\n private static canRetry(error?: SearchError) {\n if (error?.code == 'not_found' || error?.code == 'bad_request')\n return false;\n return !MagicQuery.retry.canRetry || MagicQuery.retry.canRetry(error);\n }\n\n private static async debounce(): Promise<void> {\n const now = Date.now();\n const timeSinceLastQuery = now - MagicQuery.lastQuery;\n if (timeSinceLastQuery >= MagicQuery.rateLimit) {\n MagicQuery.lastQuery = now;\n } else {\n const timeUntilNextQuery = MagicQuery.rateLimit - timeSinceLastQuery;\n MagicQuery.lastQuery += timeUntilNextQuery;\n await MagicQuery.sleep(timeUntilNextQuery);\n }\n }\n\n private static sleep(ms = 0) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n private static async tryQuery<T, Y>(\n apiPath: string,\n query?: Query,\n post?: Y,\n requestOptions?: AxiosRequestConfig\n ): Promise<AxiosResponse<T, Y>> {\n await MagicQuery.debounce();\n\n const config: AxiosRequestConfig<Y> = {\n data: post,\n method: post ? 'POST' : 'GET',\n params: query,\n url: `${MagicQuery.endpoint}/${apiPath}`,\n ...requestOptions,\n };\n\n try {\n return await Axios.request<T, AxiosResponse<T>, Y>(config);\n } catch (e: any) {\n if (e['isAxiosError']) {\n const error = e as AxiosError<SearchError>;\n throw new MagicQueryError(error.response?.data);\n } else {\n throw e;\n }\n }\n }\n\n public async query<T = unknown, Y = unknown>(\n apiPath: TOrArrayOfT<string | number | undefined>,\n query?: Query,\n post?: Y,\n requestOptions?: AxiosRequestConfig\n ): Promise<T | undefined> {\n if (Array.isArray(apiPath)) {\n apiPath = apiPath.join('/');\n }\n\n let retries: number;\n let result;\n\n for (retries = 0; retries < MagicQuery.retry.attempts; retries++) {\n let error: SearchError | undefined;\n try {\n result = await MagicQuery.tryQuery<T, Y>(\n `${apiPath}`,\n query,\n post,\n requestOptions\n );\n } catch (e: any) {\n if (e instanceof MagicQueryError) {\n error = e.data;\n } else {\n throw e;\n }\n }\n if (result || !MagicQuery.canRetry(error)) break;\n await MagicQuery.sleep(MagicQuery.retry.timeout);\n }\n\n return result?.data;\n }\n}\n","import MagicPageResult from '../query/MagicPageResult';\nimport MagicQuery from '../query/MagicQuery';\nimport {\n Card,\n CardIdentifier,\n ResultCatalog,\n ResultList,\n SearchOptions,\n} from '../types';\n\nclass Cards extends MagicQuery {\n public async autoCompleteName(name: string): Promise<string[]> {\n const result = await this.query<ResultCatalog>('cards/autocomplete', {\n q: name,\n });\n return result?.data || [];\n }\n\n public async byArenaId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/arena', id]);\n }\n\n public async byId(id: string): Promise<Card | undefined> {\n return this.query<Card>(['cards', id]);\n }\n\n public async byMtgoId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/mtgo', id]);\n }\n\n public async byMultiverseId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/multiverse', id]);\n }\n\n public async byName(name: string, fuzzy?: boolean): Promise<Card | undefined>;\n\n public async byName(\n name: string,\n set?: string,\n fuzzy?: boolean\n ): Promise<Card | undefined>;\n\n public async byName(\n name: string,\n set?: string | boolean,\n fuzzy = false\n ): Promise<Card | undefined> {\n if (typeof set === 'boolean') {\n fuzzy = set;\n set = undefined;\n }\n\n return this.query<Card>('cards/named', {\n [fuzzy ? 'fuzzy' : 'exact']: name,\n set,\n });\n }\n\n public async bySet(\n setCode: string,\n collectorNumber: number,\n lang?: string\n ): Promise<Card | undefined> {\n const path = ['cards', setCode, collectorNumber];\n if (lang) path.push(lang);\n return this.query<Card>(path);\n }\n\n public async byTcgPlayerId(id: number): Promise<Card | undefined> {\n return this.query<Card>(['cards/tcgplayer', id]);\n }\n\n public async collection(...identifiers: CardIdentifier[]): Promise<Card[]> {\n const cards: Card[] = [];\n for (let i = 0; i < identifiers.length; i += 75) {\n // the api only supports a max collection size of 75, so we take the list of identifiers (any length)\n // and split it into 75 card-max requests\n const collectionSection = { identifiers: identifiers.slice(i, i + 75) };\n\n const result = await this.query<ResultList<Card, CardIdentifier>>(\n 'cards/collection',\n undefined,\n collectionSection\n );\n cards.push(...(result?.data || []));\n }\n return cards;\n }\n\n public async random(): Promise<Card | undefined> {\n return this.query<Card>('cards/random');\n }\n\n public search(\n query: string,\n options?: SearchOptions | number\n ): MagicPageResult<Card, Cards> {\n return new MagicPageResult<Card, Cards>(this, 'cards/search', {\n q: query,\n ...(typeof options === 'number'\n ? { page: options }\n : { page: 1, ...options }),\n });\n }\n}\n\nexport default new Cards();\n","import MagicQuery from '../query/MagicQuery';\nimport { ResultCatalog } from '../types';\n\nclass Catalog extends MagicQuery {\n public async artifactTypes(): Promise<string[]> {\n return (\n (await this.query<ResultCatalog>('catalog/artifact-types'))?.data || []\n );\n }\n\n public async artistNames(): Promise<string[]> {\n return (\n (await this.query<ResultCatalog>('catalog/artist-names'))?.data || []\n );\n }\n\n public async cardNames(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/card-names'))?.data || [];\n }\n\n public async creatureTypes(): Promise<string[]> {\n return (\n (await this.query<ResultCatalog>('catalog/creature-types'))?.data || []\n );\n }\n\n public async enchantmentTypes(): Promise<string[]> {\n return (\n (await this.query<ResultCatalog>('catalog/enchantment-types'))?.data || []\n );\n }\n\n public async landTypes(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/land-types'))?.data || [];\n }\n\n public async loyalties(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/loyalties'))?.data || [];\n }\n\n public async planeswalkerTypes(): Promise<string[]> {\n return (\n (await this.query<ResultCatalog>('catalog/planeswalker-types'))?.data ||\n []\n );\n }\n\n public async powers(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/powers'))?.data || [];\n }\n\n public async spellTypes(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/spell-types'))?.data || [];\n }\n\n public async toughnesses(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/toughnesses'))?.data || [];\n }\n\n public async watermarks(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/watermarks'))?.data || [];\n }\n\n public async wordBank(): Promise<string[]> {\n return (await this.query<ResultCatalog>('catalog/word-bank'))?.data || [];\n }\n}\n\nexport default new Catalog();\n","import MagicQuery from '../query/MagicQuery';\nimport { HomepageLink, ResultList } from '../types';\n\nclass Misc extends MagicQuery {\n public async homepageLinks(): Promise<HomepageLink[]> {\n return (\n (await this.query<ResultList<HomepageLink>>('homepage-links'))?.data || []\n );\n }\n}\n\nexport default new Misc();\n","import MagicQuery from '../query/MagicQuery';\nimport { ResultList, Ruling } from '../types';\n\nclass Rulings extends MagicQuery {\n public async byArenaId(id: number): Promise<Ruling[]> {\n return (\n (await this.query<ResultList<Ruling>>(['cards/arena', id, 'rulings']))\n ?.data || []\n );\n }\n\n public async byId(id: string): Promise<Ruling[]> {\n return (\n (await this.query<ResultList<Ruling>>(['cards', id, 'rulings']))?.data ||\n []\n );\n }\n\n public async byMtgoId(id: number): Promise<Ruling[]> {\n return (\n (await this.query<ResultList<Ruling>>(['cards/mtgo', id, 'rulings']))\n ?.data || []\n );\n }\n\n public async byMultiverseId(id: number): Promise<Ruling[]> {\n return (\n (\n await this.query<ResultList<Ruling>>([\n 'cards/multiverse',\n id,\n 'rulings',\n ])\n )?.data || []\n );\n }\n\n public async bySet(\n setCode: string,\n collectorNumber: string | number\n ): Promise<Ruling[]> {\n return (\n (\n await this.query<ResultList<Ruling>>([\n 'cards',\n setCode,\n `${collectorNumber}`,\n 'rulings',\n ])\n )?.data || []\n );\n }\n}\n\nexport default new Rulings();\n","import MagicQuery from '../query/MagicQuery';\nimport { ResultList, Set } from '../types';\n\nclass Sets extends MagicQuery {\n public async all(): Promise<Set[]> {\n const result = await this.query<ResultList<Set>>('sets');\n return result?.data || [];\n }\n\n public async byCode(code: string): Promise<Set | undefined> {\n return await this.query<Set>(['sets', code]);\n }\n\n public async byId(id: string): Promise<Set | undefined> {\n return this.query<Set>(['sets', id]);\n }\n\n public async byTcgPlayerId(id: number): Promise<Set | undefined> {\n return this.query<Set>(['sets/tcgplayer', id]);\n }\n}\n\nexport default new Sets();\n","export enum Border {\n black,\n borderless,\n gold,\n silver,\n white,\n}\n","export enum BulkDataTypes {\n oracle_cards,\n unique_artwork,\n default_cards,\n all_cards,\n rulings,\n}\n","enum Colors {\n W,\n B,\n R,\n U,\n G,\n}\n\nexport type Color = keyof typeof Colors;\n","export enum Format {\n standard,\n future,\n historic,\n pioneer,\n modern,\n legacy,\n pauper,\n vintage,\n penny,\n commander,\n brawl,\n duel,\n oldschool,\n}\n","export enum FrameEffect {\n legendary,\n miracle,\n nyxtouched,\n draft,\n devoid,\n tombstone,\n colorshifted,\n inverted,\n sunmoondfc,\n compasslanddfc,\n originpwdfc,\n mooneldrazidfc,\n moonreversemoondfc,\n showcase,\n extendedart,\n}\n","export enum Game {\n paper,\n arena,\n mtgo,\n}\n","export enum Layout {\n normal,\n split,\n flip,\n transform,\n meld,\n leveler,\n saga,\n adventure,\n planar,\n scheme,\n vanguard,\n token,\n double_faced_token,\n emblem,\n augment,\n host,\n art_series,\n double_sided,\n}\n","export enum Legality {\n legal,\n not_legal,\n restricted,\n banned,\n}\n","export enum PromoType {\n tourney,\n prerelease,\n datestamped,\n planeswalkerdeck,\n buyabox,\n judgegift,\n event,\n convention,\n starterdeck,\n instore,\n setpromo,\n fnm,\n openhouse,\n league,\n draftweekend,\n gameday,\n release,\n intropack,\n giftbox,\n duels,\n wizardsplaynetwork,\n premiereshop,\n playerrewards,\n gateway,\n arenaleague,\n}\n","export enum Rarity {\n common,\n uncommon,\n rare,\n mythic,\n}\n","export enum RelatedCardComponent {\n token,\n meld_part,\n meld_result,\n combo_piece,\n}\n","export enum SetType {\n core,\n expansion,\n masters,\n masterpiece,\n from_the_vault,\n spellbook,\n premium_deck,\n duel_deck,\n draft_innovation,\n treasure_chest,\n commander,\n planechase,\n archenemy,\n vanguard,\n funny,\n starter,\n box,\n promo,\n token,\n memorabilia,\n}\n","export enum Sort {\n name,\n set,\n released,\n rarity,\n color,\n usd,\n tix,\n eur,\n cmc,\n power,\n toughness,\n edhrec,\n artist,\n}\n","export enum SortDirection {\n auto,\n asc,\n desc,\n}\n","export enum UniqueStrategy {\n cards,\n art,\n prints,\n}\n","import MagicQuery from '../query/MagicQuery';\nimport { CardSymbol, ManaCost, ResultList } from '../types';\n\nclass Symbology extends MagicQuery {\n public async all(): Promise<CardSymbol[]> {\n return (await this.query<ResultList<CardSymbol>>('symbology'))?.data || [];\n }\n\n public async parseMana(shorthand: string): Promise<ManaCost | undefined> {\n return await this.query<ManaCost>('symbology/parse-mana', {\n cost: shorthand,\n });\n }\n}\n\nexport default new Symbology();\n","import { CardIdentifier } from '../types';\n\nexport class CardIdentifierBuilder {\n public static byId(id: string): CardIdentifier {\n return { id };\n }\n\n public static byIllustrationId(id: string): CardIdentifier {\n return { illustration_id: id };\n }\n\n public static byMtgoId(id: number): CardIdentifier {\n return { mtgo_id: id };\n }\n\n public static byMultiverseId(id: number): CardIdentifier {\n return { multiverse_id: id };\n }\n\n public static byName(name: string, set?: string): CardIdentifier {\n return { name, set };\n }\n\n public static byOracleId(id: string): CardIdentifier {\n return { oracle_id: id };\n }\n\n public static bySet(\n set: string,\n collectorNumber: string | number\n ): CardIdentifier {\n return { collector_number: `${collectorNumber}`, set };\n }\n}\n"],"names":["MagicPageResult","constructor","q","apiPath","query","post","this","_hasMore","count","hasMore","_count","all","r","result","next","push","get","limit","length","slice","results","has_more","Number","parseInt","total_cards","setNextPage","data","page","MagicQueryError","Error","super","details","Object","setPrototypeOf","prototype","MagicQuery","static","error","code","retry","canRetry","now","Date","timeSinceLastQuery","lastQuery","rateLimit","timeUntilNextQuery","sleep","ms","Promise","resolve","setTimeout","requestOptions","debounce","config","method","params","url","endpoint","Axios","request","e","response","retries","Array","isArray","join","attempts","tryQuery","timeout","autoCompleteName","name","byArenaId","id","byId","byMtgoId","byMultiverseId","byName","set","fuzzy","undefined","bySet","setCode","collectorNumber","lang","path","byTcgPlayerId","collection","identifiers","cards","i","collectionSection","random","search","options","artifactTypes","artistNames","cardNames","creatureTypes","enchantmentTypes","landTypes","loyalties","planeswalkerTypes","powers","spellTypes","toughnesses","watermarks","wordBank","homepageLinks","byCode","Border","BulkDataTypes","Colors","Format","FrameEffect","Game","Layout","Legality","PromoType","Rarity","RelatedCardComponent","SetType","Sort","SortDirection","UniqueStrategy","parseMana","shorthand","cost","illustration_id","mtgo_id","multiverse_id","oracle_id","collector_number"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scryfall-api",
3
- "version": "2.1.1",
3
+ "version": "2.2.0",
4
4
  "description": "A Node.js SDK for https://scryfall.com/docs/api written in Typescript.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -87,7 +87,7 @@
87
87
  "prettier --write"
88
88
  ]
89
89
  },
90
- "standard": {
90
+ "standard-version": {
91
91
  "releaseCommitMessageFormat": "chore(release): {{currentTag}} [skip ci]"
92
92
  }
93
93
  }