scryfall-client
Version:
A module for making requests to scryfall
804 lines (780 loc) • 25.2 kB
JavaScript
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
default: () => src_default
});
module.exports = __toCommonJS(src_exports);
// src/models/singular-entity.ts
var SingularEntity = class {
constructor(scryfallObject) {
Object.assign(this, scryfallObject);
}
};
// src/models/card.ts
var SCRYFALL_CARD_BACK_IMAGE_URL = "http://cards.scryfall.io/back.png";
var Card = class extends SingularEntity {
_tokens;
_hasTokens;
_isDoublesided;
constructor(scryfallObject) {
super(scryfallObject);
this._tokens = (this.all_parts || []).filter(function(part) {
return part.component === "token";
});
this._hasTokens = Boolean(this._tokens.length);
this.card_faces = this.card_faces || [
{
object: "card_face"
}
];
this.card_faces.forEach((face) => {
face.artist = face.artist || this.artist;
face.color_indicator = face.color_indicator || this.color_indicator;
face.colors = face.colors || this.colors;
face.flavor_text = face.flavor_text || this.flavor_text;
face.flavor_name = face.flavor_name || this.flavor_name;
face.illustration_id = face.illustration_id || this.illustration_id;
face.image_uris = face.image_uris || this.image_uris;
face.loyalty = face.loyalty || this.loyalty;
face.mana_cost = face.mana_cost || this.mana_cost;
face.name = face.name || this.name;
face.oracle_id = face.oracle_id || this.oracle_id;
face.oracle_text = face.oracle_text || this.oracle_text;
face.power = face.power || this.power;
face.printed_name = face.printed_name || this.printed_name;
face.printed_text = face.printed_text || this.printed_text;
face.printed_type_line = face.printed_type_line || this.printed_type_line;
face.toughness = face.toughness || this.toughness;
face.type_line = face.type_line || this.type_line;
face.watermark = face.watermark || this.watermark;
if (face.oracle_text && face.oracle_text.toLowerCase().indexOf("token") > -1) {
this._hasTokens = true;
}
});
this.booster = this.booster || false;
this.content_warning = this.content_warning || false;
if (this.card_faces.length > 1 && this.card_faces[0].flavor_name) {
this.flavor_name = this.card_faces.map((face) => face.flavor_name).join(" // ");
}
this._isDoublesided = this.layout === "transform" || this.layout === "double_faced_token";
}
getRulings() {
return get(this.rulings_uri);
}
getSet() {
return get(this.set_uri);
}
getPrints() {
return get(this.prints_search_uri);
}
isLegal(format) {
const legality = this.legalities[format];
return legality === "legal" || legality === "restricted";
}
getImage(type = "normal") {
const imageObject = this.card_faces[0].image_uris;
if (!imageObject) {
throw new Error("Could not find image uris for card.");
}
return imageObject[type];
}
getBackImage(type = "normal") {
if (!this._isDoublesided) {
return SCRYFALL_CARD_BACK_IMAGE_URL;
}
const imageObject = this.card_faces[1].image_uris;
if (!imageObject) {
throw new Error(
"An unexpected error occured when attempting to show back side of card."
);
}
return imageObject[type];
}
getPrice(type) {
const prices = this.prices;
if (!type) {
return prices.usd || prices.usd_foil || prices.usd_etched || prices.eur || prices.eur_foil || prices.tix || "";
}
return prices[type] || "";
}
getTokens() {
if (!this._hasTokens) {
return Promise.resolve([]);
}
return Promise.all(
this._tokens.map((token) => {
return get(token.uri);
})
).then((tokens) => {
if (tokens.length > 0) {
return tokens;
}
return this.getPrints().then((prints) => {
const printWithTokens = prints.find((print) => {
return print._tokens.length > 0;
});
if (printWithTokens) {
return printWithTokens.getTokens();
}
return [];
});
});
}
getTaggerUrl() {
return "https://tagger.scryfall.com/card/" + this.set + "/" + this.collector_number;
}
};
var card_default = Card;
// src/models/array-like.ts
var ArrayLike = class extends Array {
constructor(scryfallObject) {
super();
Object.setPrototypeOf(this, new.target.prototype);
const data = scryfallObject.data;
this.push(...data);
}
// built-in methods will use this as the constructor
static get [Symbol.species]() {
return Array;
}
};
// src/models/catalog.ts
var Catalog = class extends ArrayLike {
// From https://scryfall.com/docs/api/catalogs
// omitting data since it becomes an entry in the array like structure
object;
uri;
// A link to the current catalog on Scryfall’s API.
total_values;
// The number of items in the data array.
constructor(scrfallResponse) {
super(scrfallResponse);
this.object = scrfallResponse.object;
this.uri = scrfallResponse.uri;
this.total_values = scrfallResponse.total_values;
}
};
// src/models/list.ts
var List = class extends ArrayLike {
// From https://scryfall.com/docs/api/lists
// omitting data since it becomes an entry in the array like structure
object;
has_more;
// True if this List is paginated and there is a page beyond the current page.
next_page;
// If there is a page beyond the current page, this field will contain a full API URI to that page. You may submit a HTTP GET request to that URI to continue paginating forward on this List.
total_cards;
// If this is a list of Card objects, this field will contain the total number of cards found across all pages.
warnings;
// An array of human-readable warnings issued when generating this list, as strings. Warnings are non-fatal issues that the API discovered with your input. In general, they indicate that the List will not contain the all of the information you requested. You should fix the warnings and re-submit your request.
not_found;
// An array of card collection identifiers that could not be found
constructor(scrfallResponse) {
super(scrfallResponse);
this.object = scrfallResponse.object;
this.has_more = scrfallResponse.has_more;
this.next_page = scrfallResponse.next_page;
this.total_cards = scrfallResponse.total_cards;
this.warnings = scrfallResponse.warnings || [];
this.not_found = scrfallResponse.not_found || [];
}
next() {
if (!this.has_more || !this.next_page) {
return Promise.reject(new Error("No additional pages."));
}
return get(this.next_page);
}
};
// src/models/magic-set.ts
var MagicSet = class extends SingularEntity {
constructor(scryfallObject) {
super(scryfallObject);
}
getCards() {
return get(this.search_uri);
}
};
var magic_set_default = MagicSet;
// src/models/generic-scryfall-response.ts
var GenericScryfallResponse = class extends SingularEntity {
};
// src/lib/wrap-scryfall-response.ts
var transformFunction;
var noopTransformFunction = (text) => {
return text;
};
function setTextTransform(func) {
transformFunction = func;
}
function resetTextTransform() {
setTextTransform(noopTransformFunction);
}
resetTextTransform();
function wrapScryfallResponse(response) {
if (typeof response === "string") {
return transformFunction(response);
}
if (!response || typeof response !== "object") {
return response;
}
if (response.object === "list" || response.object === "catalog") {
response.data = response.data.map(wrapScryfallResponse);
if (response.object === "list") {
return new List(response);
} else if (response.object === "catalog") {
return new Catalog(response);
}
}
Object.keys(response).forEach(function(key) {
response[key] = wrapScryfallResponse(response[key]);
});
if (response.object === "card") {
return new card_default(response);
} else if (response.object === "set") {
return new magic_set_default(response);
} else if (response.object) {
return new GenericScryfallResponse(response);
}
return response;
}
var wrap_scryfall_response_default = wrapScryfallResponse;
// src/lib/api-request/get-url.ts
var SCRYFALL_API_ENDPOINT = "https://api.scryfall.com/";
function stringifyParams(params) {
return Object.keys(params).reduce((accum, param) => {
if (accum) {
accum += "&";
}
return accum += `${param}=${params[param]}`;
}, "");
}
function isFullScryfallUrl(url) {
return url.indexOf(SCRYFALL_API_ENDPOINT) === 0;
}
function endpointBeginsWithSlash(endpoint) {
return endpoint.indexOf("/") === 0;
}
function getBaseUrl(endpoint) {
if (isFullScryfallUrl(endpoint)) {
return endpoint;
}
if (endpointBeginsWithSlash(endpoint)) {
endpoint = endpoint.substring(1);
}
return SCRYFALL_API_ENDPOINT + endpoint;
}
function getUrl(endpoint, query) {
let url = getBaseUrl(endpoint);
if (query) {
const queryParams = stringifyParams(query);
if (url.indexOf("?") > -1) {
url += "&";
} else {
url += "?";
}
url += queryParams;
}
return url;
}
// src/lib/api-request/task.ts
var Task = class {
taskFn;
pendingPromise;
resolve;
reject;
constructor(fn) {
this.taskFn = fn;
this.pendingPromise = new Promise((resolve, reject) => {
this.resolve = resolve;
this.reject = reject;
});
}
getPromise() {
return this.pendingPromise;
}
start() {
return Promise.resolve().then(() => {
return this.taskFn();
}).then((result) => {
if (this.resolve) {
this.resolve(result);
}
}).catch((err) => {
if (this.reject) {
this.reject(err);
}
});
}
};
// src/lib/api-request/enque-task.ts
var DEFAULT_SCRYFALL_DESIGNATED_WAIT_TIME = 100;
var taskCurrentlyInProgress = false;
var queue = [];
var delayTime = DEFAULT_SCRYFALL_DESIGNATED_WAIT_TIME;
function delayForScryfallDesignatedTime() {
return new Promise(function(resolve) {
setTimeout(resolve, delayTime);
});
}
function setTaskDelayTime(time) {
delayTime = time;
}
function resetTaskDelayTime() {
delayTime = DEFAULT_SCRYFALL_DESIGNATED_WAIT_TIME;
}
function checkForEnquedTasks(recursiveCheck) {
if (queue.length > 0) {
const nextTask = queue.shift();
if (!nextTask) {
taskCurrentlyInProgress = false;
return;
}
delayForScryfallDesignatedTime().then(() => {
taskCurrentlyInProgress = true;
nextTask.start().then(() => {
checkForEnquedTasks();
});
});
} else if (recursiveCheck) {
taskCurrentlyInProgress = false;
} else {
delayForScryfallDesignatedTime().then(() => {
checkForEnquedTasks(true);
});
}
}
function enqueTask(task) {
const handler = new Task(task);
if (!taskCurrentlyInProgress) {
taskCurrentlyInProgress = true;
handler.start().then(() => {
checkForEnquedTasks();
});
} else {
queue.push(handler);
}
return handler.getPromise();
}
// src/models/scryfall-error.ts
var ExtendableError = class extends Error {
constructor(message) {
super(message);
Object.setPrototypeOf(this, new.target.prototype);
this.name = this.constructor.name;
if (typeof Error.captureStackTrace === "function") {
Error.captureStackTrace(this, this.constructor);
} else {
this.stack = new Error(message).stack;
}
}
};
var ScryfallError = class extends ExtendableError {
thrownError;
status;
code;
details;
type;
warnings;
constructor(scryfallResponse) {
const message = scryfallResponse.message || scryfallResponse.details;
super(message);
Object.assign(this, scryfallResponse);
}
};
var scryfall_error_default = ScryfallError;
// src/lib/api-request/user-agent.ts
var userAgent = "";
function getUserAgent() {
return userAgent;
}
function setUserAgent(agent) {
userAgent = agent;
}
// src/lib/api-request/send-request.ts
function makeRequest({ url, method, body }) {
return fetch(url, {
method,
headers: {
Accept: "application/json",
"Content-Type": "application/json",
"User-Agent": getUserAgent()
},
body: body ? JSON.stringify(body) : void 0
}).then((res) => res.json());
}
async function sendRequest(options) {
const response = await makeRequest(options);
if (response.object === "error") {
return Promise.reject(new scryfall_error_default(response));
}
return response;
}
// src/lib/api-request/send-request-to-api.ts
function sendRequestToApi(options) {
const url = getUrl(options.endpoint, options.query);
return enqueTask(() => {
return sendRequest({
url,
method: options.method,
body: options.body
});
}).then((response) => {
try {
return wrap_scryfall_response_default(response);
} catch (err) {
return Promise.reject(
new scryfall_error_default({
message: "Something went wrong when wrapping the response from Scryfall",
thrownError: err
})
);
}
}).catch((err) => {
if (!(err instanceof scryfall_error_default)) {
err = new scryfall_error_default({
message: "An unexpected error occurred when requesting resources from Scryfall.",
status: err.status,
originalError: err
});
}
return Promise.reject(err);
});
}
// src/lib/api-request/index.ts
function get(url, query) {
return sendRequestToApi({
endpoint: url,
method: "get",
query
});
}
function post(url, body) {
return sendRequestToApi({
endpoint: url,
method: "post",
body
});
}
// src/lib/convert-symbols-to-emoji.ts
function createEmojiFunction(converter) {
return function(text) {
return text.replace(/{(.)(\/(.))?}/g, converter);
};
}
var slack = createEmojiFunction(":mana-$1$3:");
var discord = createEmojiFunction(":mana$1$3:");
// src/api-routes/cards.ts
function search(searchString, options = {}) {
const query = {
q: searchString,
...options
};
return get("/cards/search", query);
}
function getCardNamed(name, options = {}) {
const kind = options.kind || "fuzzy";
const query = {
[kind]: name
};
if (options.set) {
query.set = options.set;
}
return get("/cards/named", query);
}
function autocomplete(searchString, options = {}) {
const query = {
q: searchString,
...options
};
return get("/cards/autocomplete", query);
}
function random(searchString) {
if (!searchString) {
return get("/cards/random");
}
return get("/cards/random", {
q: searchString
});
}
function getCollection(identifiers) {
const idBatches = identifiers.reduce(
(array, entry, i) => {
if (i % 75 !== 0) {
return array;
}
return array.concat([identifiers.slice(i, i + 75)]);
},
[]
);
return Promise.all(
idBatches.map(
(ids) => post("/cards/collection", {
identifiers: ids
})
)
).then((collectionResults) => {
const warnings = [];
const notFound = [];
collectionResults.forEach((result) => {
const list = result;
warnings.push(...list.warnings);
notFound.push(...list.not_found);
});
const collection = collectionResults.flat();
return new List({
object: "list",
warnings,
not_found: notFound,
data: collection
});
});
}
function getCardBySetCodeAndCollectorNumber(code, collectorNumber, lang) {
let url = `/cards/${code}/${collectorNumber}`;
if (lang) {
url += `/${lang}`;
}
return get(url);
}
function getCardByMultiverseId(id) {
return get(`/cards/multiverse/${id}`);
}
function getCardByMtgoId(id) {
return get(`/cards/mtgo/${id}`);
}
function getCardByArenaId(id) {
return get(`/cards/arena/${id}`);
}
function getCardByTcgPlayerId(id) {
return get(`/cards/tcgplayer/${id}`);
}
function getCardByScryfallId(id) {
return get(`/cards/${id}`);
}
function getCard(idOrName, kind = "scryfall") {
const value = String(idOrName);
switch (kind) {
case "multiverse":
return getCardByMultiverseId(value);
case "arena":
return getCardByArenaId(value);
case "mtgo":
return getCardByMtgoId(value);
case "tcg":
return getCardByTcgPlayerId(value);
case "exactName":
return getCardNamed(value, { kind: "exact" });
case "name":
case "fuzzyName":
return getCardNamed(value, { kind: "fuzzy" });
case "id":
case "scryfall":
default:
return getCardByScryfallId(value);
}
}
// src/api-routes/sets.ts
function getSets() {
return get("/sets");
}
function getSet(setCodeOrId) {
return get(`/sets/${setCodeOrId}`);
}
function getSetByTcgId(tcgId) {
return get(`/sets/tcgplayer/${tcgId}`);
}
// src/api-routes/catalog.ts
function getCatalog(catalog) {
return get(`/catalog/${catalog}`);
}
// src/lib/fixtures/symbology.ts
var symbology_default = {
"0": "https://svgs.scryfall.io/card-symbols/0.svg",
"1": "https://svgs.scryfall.io/card-symbols/1.svg",
"2": "https://svgs.scryfall.io/card-symbols/2.svg",
"3": "https://svgs.scryfall.io/card-symbols/3.svg",
"4": "https://svgs.scryfall.io/card-symbols/4.svg",
"5": "https://svgs.scryfall.io/card-symbols/5.svg",
"6": "https://svgs.scryfall.io/card-symbols/6.svg",
"7": "https://svgs.scryfall.io/card-symbols/7.svg",
"8": "https://svgs.scryfall.io/card-symbols/8.svg",
"9": "https://svgs.scryfall.io/card-symbols/9.svg",
"10": "https://svgs.scryfall.io/card-symbols/10.svg",
"11": "https://svgs.scryfall.io/card-symbols/11.svg",
"12": "https://svgs.scryfall.io/card-symbols/12.svg",
"13": "https://svgs.scryfall.io/card-symbols/13.svg",
"14": "https://svgs.scryfall.io/card-symbols/14.svg",
"15": "https://svgs.scryfall.io/card-symbols/15.svg",
"16": "https://svgs.scryfall.io/card-symbols/16.svg",
"17": "https://svgs.scryfall.io/card-symbols/17.svg",
"18": "https://svgs.scryfall.io/card-symbols/18.svg",
"19": "https://svgs.scryfall.io/card-symbols/19.svg",
"20": "https://svgs.scryfall.io/card-symbols/20.svg",
"100": "https://svgs.scryfall.io/card-symbols/100.svg",
"1000000": "https://svgs.scryfall.io/card-symbols/1000000.svg",
"T": "https://svgs.scryfall.io/card-symbols/T.svg",
"Q": "https://svgs.scryfall.io/card-symbols/Q.svg",
"E": "https://svgs.scryfall.io/card-symbols/E.svg",
"P": "https://svgs.scryfall.io/card-symbols/P.svg",
"PW": "https://svgs.scryfall.io/card-symbols/WP.svg",
"CHAOS": "https://svgs.scryfall.io/card-symbols/CHAOS.svg",
"A": "https://svgs.scryfall.io/card-symbols/A.svg",
"TK": "https://svgs.scryfall.io/card-symbols/TK.svg",
"X": "https://svgs.scryfall.io/card-symbols/X.svg",
"Y": "https://svgs.scryfall.io/card-symbols/Y.svg",
"Z": "https://svgs.scryfall.io/card-symbols/Z.svg",
"\xBD": "https://svgs.scryfall.io/card-symbols/HALF.svg",
"\u221E": "https://svgs.scryfall.io/card-symbols/INFINITY.svg",
"WU": "https://svgs.scryfall.io/card-symbols/WU.svg",
"UW": "https://svgs.scryfall.io/card-symbols/WU.svg",
"WB": "https://svgs.scryfall.io/card-symbols/WB.svg",
"BW": "https://svgs.scryfall.io/card-symbols/WB.svg",
"BR": "https://svgs.scryfall.io/card-symbols/BR.svg",
"RB": "https://svgs.scryfall.io/card-symbols/BR.svg",
"BG": "https://svgs.scryfall.io/card-symbols/BG.svg",
"GB": "https://svgs.scryfall.io/card-symbols/BG.svg",
"UB": "https://svgs.scryfall.io/card-symbols/UB.svg",
"BU": "https://svgs.scryfall.io/card-symbols/UB.svg",
"UR": "https://svgs.scryfall.io/card-symbols/UR.svg",
"RU": "https://svgs.scryfall.io/card-symbols/UR.svg",
"RG": "https://svgs.scryfall.io/card-symbols/RG.svg",
"GR": "https://svgs.scryfall.io/card-symbols/RG.svg",
"RW": "https://svgs.scryfall.io/card-symbols/RW.svg",
"WR": "https://svgs.scryfall.io/card-symbols/RW.svg",
"GW": "https://svgs.scryfall.io/card-symbols/GW.svg",
"WG": "https://svgs.scryfall.io/card-symbols/GW.svg",
"GU": "https://svgs.scryfall.io/card-symbols/GU.svg",
"UG": "https://svgs.scryfall.io/card-symbols/GU.svg",
"BGP": "https://svgs.scryfall.io/card-symbols/BGP.svg",
"GBP": "https://svgs.scryfall.io/card-symbols/BGP.svg",
"BRP": "https://svgs.scryfall.io/card-symbols/BRP.svg",
"RBP": "https://svgs.scryfall.io/card-symbols/BRP.svg",
"GUP": "https://svgs.scryfall.io/card-symbols/GUP.svg",
"UGP": "https://svgs.scryfall.io/card-symbols/GUP.svg",
"GWP": "https://svgs.scryfall.io/card-symbols/GWP.svg",
"WGP": "https://svgs.scryfall.io/card-symbols/GWP.svg",
"RGP": "https://svgs.scryfall.io/card-symbols/RGP.svg",
"GRP": "https://svgs.scryfall.io/card-symbols/RGP.svg",
"RWP": "https://svgs.scryfall.io/card-symbols/RWP.svg",
"WRP": "https://svgs.scryfall.io/card-symbols/RWP.svg",
"UBP": "https://svgs.scryfall.io/card-symbols/UBP.svg",
"BUP": "https://svgs.scryfall.io/card-symbols/UBP.svg",
"URP": "https://svgs.scryfall.io/card-symbols/URP.svg",
"RUP": "https://svgs.scryfall.io/card-symbols/URP.svg",
"WBP": "https://svgs.scryfall.io/card-symbols/WBP.svg",
"BWP": "https://svgs.scryfall.io/card-symbols/WBP.svg",
"WUP": "https://svgs.scryfall.io/card-symbols/WUP.svg",
"UWP": "https://svgs.scryfall.io/card-symbols/WUP.svg",
"CW": "https://svgs.scryfall.io/card-symbols/CW.svg",
"CU": "https://svgs.scryfall.io/card-symbols/CU.svg",
"CB": "https://svgs.scryfall.io/card-symbols/CB.svg",
"CR": "https://svgs.scryfall.io/card-symbols/CR.svg",
"CG": "https://svgs.scryfall.io/card-symbols/CG.svg",
"2W": "https://svgs.scryfall.io/card-symbols/2W.svg",
"W2": "https://svgs.scryfall.io/card-symbols/2W.svg",
"2U": "https://svgs.scryfall.io/card-symbols/2U.svg",
"U2": "https://svgs.scryfall.io/card-symbols/2U.svg",
"2B": "https://svgs.scryfall.io/card-symbols/2B.svg",
"B2": "https://svgs.scryfall.io/card-symbols/2B.svg",
"2R": "https://svgs.scryfall.io/card-symbols/2R.svg",
"R2": "https://svgs.scryfall.io/card-symbols/2R.svg",
"2G": "https://svgs.scryfall.io/card-symbols/2G.svg",
"G2": "https://svgs.scryfall.io/card-symbols/2G.svg",
"H": "https://svgs.scryfall.io/card-symbols/H.svg",
"WP": "https://svgs.scryfall.io/card-symbols/WP.svg",
"UP": "https://svgs.scryfall.io/card-symbols/UP.svg",
"PU": "https://svgs.scryfall.io/card-symbols/UP.svg",
"BP": "https://svgs.scryfall.io/card-symbols/BP.svg",
"PB": "https://svgs.scryfall.io/card-symbols/BP.svg",
"RP": "https://svgs.scryfall.io/card-symbols/RP.svg",
"PR": "https://svgs.scryfall.io/card-symbols/RP.svg",
"GP": "https://svgs.scryfall.io/card-symbols/GP.svg",
"PG": "https://svgs.scryfall.io/card-symbols/GP.svg",
"CP": "https://svgs.scryfall.io/card-symbols/CP.svg",
"HW": "https://svgs.scryfall.io/card-symbols/HW.svg",
"HR": "https://svgs.scryfall.io/card-symbols/HR.svg",
"W": "https://svgs.scryfall.io/card-symbols/W.svg",
"U": "https://svgs.scryfall.io/card-symbols/U.svg",
"B": "https://svgs.scryfall.io/card-symbols/B.svg",
"R": "https://svgs.scryfall.io/card-symbols/R.svg",
"G": "https://svgs.scryfall.io/card-symbols/G.svg",
"C": "https://svgs.scryfall.io/card-symbols/C.svg",
"S": "https://svgs.scryfall.io/card-symbols/S.svg",
"L": "https://svgs.scryfall.io/card-symbols/L.svg",
"D": "https://svgs.scryfall.io/card-symbols/D.svg"
};
// src/index.ts
function setTextTransform2(func) {
setTextTransform(func);
}
function slackify() {
setTextTransform(slack);
}
function discordify() {
setTextTransform(discord);
}
function resetTextTransform2() {
resetTextTransform();
}
function setApiRequestDelayTime(waitTime) {
setTaskDelayTime(waitTime);
}
function resetApiRequestDelayTime() {
resetTaskDelayTime();
}
function getSymbolUrl(symbol) {
const match = symbol.match(/{?([^{}]+)}?/);
const character = (match ? match[1] : symbol).toUpperCase().replace(/\//g, "");
const url = symbology_default[character];
if (!url) {
throw new Error(
`Symbol "${symbol}" not found. The scryfall-client module may need an update.`
);
}
return url;
}
function wrap(body) {
return wrap_scryfall_response_default(body);
}
var src_default = {
setUserAgent,
setApiRequestDelayTime,
resetApiRequestDelayTime,
setTextTransform: setTextTransform2,
slackify,
discordify,
resetTextTransform: resetTextTransform2,
getSymbolUrl,
get,
post,
wrap,
getSets,
getSet,
getSetByTcgId,
search,
autocomplete,
random,
getCollection,
getCard,
getCardNamed,
getCardBySetCodeAndCollectorNumber,
getCatalog
};