scryfall-api 4.0.2 → 4.0.4
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.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/dist/scryfall-api.cjs +4 -7
- package/dist/scryfall-api.d.cts +1 -0
- package/dist/scryfall-api.d.ts +1 -0
- package/dist/scryfall-api.js +4 -7
- package/dist/scryfall-api.min.cjs +1 -1
- package/dist/scryfall-api.min.js +1 -1
- package/package.json +8 -8
package/LICENSE
CHANGED
package/README.md
CHANGED
package/dist/scryfall-api.cjs
CHANGED
|
@@ -79,8 +79,7 @@ function createDebounceFetcher(fetcher2 = fetch) {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
// src/fetcher/retry.fetcher.ts
|
|
82
|
-
var defaultCanRetry =
|
|
83
|
-
const object = await response.json();
|
|
82
|
+
var defaultCanRetry = (object) => {
|
|
84
83
|
const status = "status" in object ? Number(object.status) : void 0;
|
|
85
84
|
if (status && status >= 500) {
|
|
86
85
|
return true;
|
|
@@ -108,7 +107,7 @@ function createRetryFetcher({ canRetry = defaultCanRetry, maxAttempts = 3 } = {}
|
|
|
108
107
|
}
|
|
109
108
|
throw new UnknownScryfallError(`Request failed with status ${response.status.toFixed(0)}`);
|
|
110
109
|
}
|
|
111
|
-
if (canRetry(
|
|
110
|
+
if (canRetry(object)) {
|
|
112
111
|
return retryFetcher(...arguments_);
|
|
113
112
|
}
|
|
114
113
|
if (code && details && status) {
|
|
@@ -174,11 +173,9 @@ var MagicPageResult = class {
|
|
|
174
173
|
constructor(apiPath, query) {
|
|
175
174
|
this.apiPath = apiPath;
|
|
176
175
|
this.query = query;
|
|
177
|
-
this.#hasMore = true;
|
|
178
|
-
this.#count = 0;
|
|
179
176
|
}
|
|
180
|
-
#count;
|
|
181
|
-
#hasMore;
|
|
177
|
+
#count = 0;
|
|
178
|
+
#hasMore = true;
|
|
182
179
|
get count() {
|
|
183
180
|
return this.#count;
|
|
184
181
|
}
|
package/dist/scryfall-api.d.cts
CHANGED
package/dist/scryfall-api.d.ts
CHANGED
package/dist/scryfall-api.js
CHANGED
|
@@ -44,8 +44,7 @@ function createDebounceFetcher(fetcher2 = fetch) {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
// src/fetcher/retry.fetcher.ts
|
|
47
|
-
var defaultCanRetry =
|
|
48
|
-
const object = await response.json();
|
|
47
|
+
var defaultCanRetry = (object) => {
|
|
49
48
|
const status = "status" in object ? Number(object.status) : void 0;
|
|
50
49
|
if (status && status >= 500) {
|
|
51
50
|
return true;
|
|
@@ -73,7 +72,7 @@ function createRetryFetcher({ canRetry = defaultCanRetry, maxAttempts = 3 } = {}
|
|
|
73
72
|
}
|
|
74
73
|
throw new UnknownScryfallError(`Request failed with status ${response.status.toFixed(0)}`);
|
|
75
74
|
}
|
|
76
|
-
if (canRetry(
|
|
75
|
+
if (canRetry(object)) {
|
|
77
76
|
return retryFetcher(...arguments_);
|
|
78
77
|
}
|
|
79
78
|
if (code && details && status) {
|
|
@@ -139,11 +138,9 @@ var MagicPageResult = class {
|
|
|
139
138
|
constructor(apiPath, query) {
|
|
140
139
|
this.apiPath = apiPath;
|
|
141
140
|
this.query = query;
|
|
142
|
-
this.#hasMore = true;
|
|
143
|
-
this.#count = 0;
|
|
144
141
|
}
|
|
145
|
-
#count;
|
|
146
|
-
#hasMore;
|
|
142
|
+
#count = 0;
|
|
143
|
+
#hasMore = true;
|
|
147
144
|
get count() {
|
|
148
145
|
return this.#count;
|
|
149
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var b=Object.defineProperty;var
|
|
1
|
+
"use strict";var b=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var D=(s,e)=>{for(var t in e)b(s,t,{get:e[t],enumerable:!0})},j=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of O(e))!v.call(s,o)&&o!==t&&b(s,o,{get:()=>e[o],enumerable:!(n=E(e,o))||n.enumerable});return s};var Q=s=>j(b({},"__esModule",{value:!0}),s);var Y={};D(Y,{CardIdentifierBuilder:()=>m,Cards:()=>P,Catalogs:()=>R,InvalidScryfallArgumentError:()=>d,MagicPageResult:()=>l,Rulings:()=>S,ScryfallError:()=>u,Sets:()=>L,SymbologyApi:()=>N,UnknownScryfallError:()=>p});module.exports=Q(Y);var d=class extends Error{};var u=class extends Error{constructor(t,n,o,a,c){super(n);this.code=t;this.status=o;this.type=a;this.warnings=c}};var p=class extends Error{};var h=100,q=100;async function z(s=0){return new Promise(e=>{setTimeout(e,s)})}async function $(){let s=Date.now(),e=s-h;if(e>=q)h=s;else{let t=q-e;h+=t,await z(t)}}function w(s=fetch){return async function(...t){return await $(),s(...t)}}var A=s=>{let e="status"in s?Number(s.status):void 0;if(e&&e>=500)return!0;let t="code"in s&&typeof s.code=="string"?s.code:void 0;return t!=="not_found"&&t!=="bad_request"};function x({canRetry:s=A,maxAttempts:e=3}={},t=fetch){let n=0;return async function o(...a){n++;let c=await t(...a);if(c.ok)return c;let i=await c.json(),f="code"in i&&typeof i.code=="string"?i.code:void 0,y="status"in i?Number(i.status):void 0,g="details"in i&&typeof i.details=="string"?i.details:void 0,_="type"in i&&typeof i.type=="string"?i.type:void 0,k="warnings"in i&&Array.isArray(i.warnings)?i.warnings:void 0;if(n>=e)throw f&&g&&y?new u(f,g,y,_,k):new p(`Request failed with status ${c.status.toFixed(0)}`);if(s(i))return o(...a);throw f&&g&&y?new u(f,g,y,_,k):new p(`Request failed with status ${c.status.toFixed(0)}`)}}var U=w(x()),B="https://api.scryfall.com",G=/^\d{4}-\d{2}-\d{2}?$/,J=(s,e)=>typeof e=="string"&&G.test(e)?new Date(e):e;async function r(s,e,t){let n="";typeof s=="number"||typeof s=="string"?n=s:s&&(n=s.join("/"));let o=new URL(`${B}/${String(n)}`);if(e)for(let[a,c]of Object.entries(e))c!==void 0&&o.searchParams.append(a,c.toString());try{let a={method:t?"POST":"GET"};t&&(a.body=JSON.stringify(t),a.headers={"Content-Type":"application/json"});let i=await(await U(o,a)).text();return JSON.parse(i,J)}catch(a){if(a instanceof u&&(a.warnings&&console.warn(a.warnings),a.code==="not_found"||a.code==="bad_request"))return;throw a}}var l=class{constructor(e,t){this.apiPath=e;this.query=t}#t=0;#e=!0;get count(){return this.#t}get hasMore(){return this.#e}async all(){let e=[];for(;this.#e;){let t=await this.next();e.push(...t)}return e}async get(e){let t=[];for(;this.#e;){let n=await this.next();if(t.push(...n),t.length===e)return t;if(t.length>e)return t.slice(0,e)}return t}async next(){let e=await r(this.apiPath,this.query);return this.#e=e?.has_more??!1,this.#t=Number.parseInt(e?.total_cards?.toFixed(0)??"0",10),this.#e&&this.setNextPage(),e?.data??[]}async page(e){return this.query.page=e,this.next()}setNextPage(){this.query.page+=1}};var C=class{async autoCompleteName(e){return(await r("cards/autocomplete",{q:e}))?.data??[]}async byArenaId(e){return r(["cards/arena",e])}async byId(e){return r(["cards",e])}async byMtgoId(e){return r(["cards/mtgo",e])}async byMultiverseId(e){return r(["cards/multiverse",e])}async byName(e,t,n=!1){let o=n,a=t;return typeof t=="boolean"&&(o=t,a=void 0),r("cards/named",{[o?"fuzzy":"exact"]:e,set:a})}async bySet(e,t,n){let o=["cards",e,t];return n&&o.push(n),r(o)}async byTcgPlayerId(e){return r(["cards/tcgplayer",e])}async collection(...e){let t=[];for(let n=0;n<e.length;n+=75){let o={identifiers:e.slice(n,n+75)},a=await r("cards/collection",void 0,o);t.push(...a?.data??[])}return t}async random(){return r("cards/random")}search(e,t){return new l("cards/search",{q:e,...typeof t=="number"?{page:t}:{...t,page:t?.page??1}})}},V=new C,P=V;var m=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 t?{name:e,set:t}:{name:e}}static byOracleId(e){return{oracle_id:e}}static bySet(e,t){return{collector_number:String(t),set:e}}};var T=class{async artifactTypes(){return(await r("catalog/artifact-types"))?.data??[]}async artistNames(){return(await r("catalog/artist-names"))?.data??[]}async cardNames(){return(await r("catalog/card-names"))?.data??[]}async creatureTypes(){return(await r("catalog/creature-types"))?.data??[]}async enchantmentTypes(){return(await r("catalog/enchantment-types"))?.data??[]}async landTypes(){return(await r("catalog/land-types"))?.data??[]}async loyalties(){return(await r("catalog/loyalties"))?.data??[]}async planeswalkerTypes(){return(await r("catalog/planeswalker-types"))?.data??[]}async powers(){return(await r("catalog/powers"))?.data??[]}async spellTypes(){return(await r("catalog/spell-types"))?.data??[]}async toughnesses(){return(await r("catalog/toughnesses"))?.data??[]}async watermarks(){return(await r("catalog/watermarks"))?.data??[]}async wordBank(){return(await r("catalog/word-bank"))?.data??[]}},X=new T,R=X;var I=class{async byArenaId(e){return(await r(["cards/arena",e,"rulings"]))?.data??[]}async byId(e){return(await r(["cards",e,"rulings"]))?.data??[]}async byMtgoId(e){return(await r(["cards/mtgo",e,"rulings"]))?.data??[]}async byMultiverseId(e){return(await r(["cards/multiverse",e,"rulings"]))?.data??[]}async bySet(e,t){return(await r(["cards",e,String(t),"rulings"]))?.data??[]}},H=new I,S=H;var F=class{async all(){return(await r("sets"))?.data??[]}async byCode(e){return await r(["sets",e])}async byId(e){return r(["sets",e])}async byTcgPlayerId(e){return r(["sets/tcgplayer",e])}},K=new F,L=K;var M=class{async all(){return(await r("symbology"))?.data??[]}async parseMana(e){if(!e||typeof e!="string")throw new d("shorthand must be a string");return await r("symbology/parse-mana",{cost:e})??{cmc:0,colorless:!1,colors:[],cost:"",monocolored:!1,multicolored:!1,object:"mana_cost"}}},W=new M,N=W;0&&(module.exports={CardIdentifierBuilder,Cards,Catalogs,InvalidScryfallArgumentError,MagicPageResult,Rulings,ScryfallError,Sets,SymbologyApi,UnknownScryfallError});
|
package/dist/scryfall-api.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var d=class extends Error{};var u=class extends Error{constructor(t,n,i,a,c){super(n);this.code=t;this.status=i;this.type=a;this.warnings=c}};var p=class extends Error{};var b=100,F=100;async function
|
|
1
|
+
var d=class extends Error{};var u=class extends Error{constructor(t,n,i,a,c){super(n);this.code=t;this.status=i;this.type=a;this.warnings=c}};var p=class extends Error{};var b=100,F=100;async function q(s=0){return new Promise(e=>{setTimeout(e,s)})}async function E(){let s=Date.now(),e=s-b;if(e>=F)b=s;else{let t=F-e;b+=t,await q(t)}}function h(s=fetch){return async function(...t){return await E(),s(...t)}}var O=s=>{let e="status"in s?Number(s.status):void 0;if(e&&e>=500)return!0;let t="code"in s&&typeof s.code=="string"?s.code:void 0;return t!=="not_found"&&t!=="bad_request"};function w({canRetry:s=O,maxAttempts:e=3}={},t=fetch){let n=0;return async function i(...a){n++;let c=await t(...a);if(c.ok)return c;let o=await c.json(),f="code"in o&&typeof o.code=="string"?o.code:void 0,y="status"in o?Number(o.status):void 0,g="details"in o&&typeof o.details=="string"?o.details:void 0,I="type"in o&&typeof o.type=="string"?o.type:void 0,S="warnings"in o&&Array.isArray(o.warnings)?o.warnings:void 0;if(n>=e)throw f&&g&&y?new u(f,g,y,I,S):new p(`Request failed with status ${c.status.toFixed(0)}`);if(s(o))return i(...a);throw f&&g&&y?new u(f,g,y,I,S):new p(`Request failed with status ${c.status.toFixed(0)}`)}}var v=h(w()),D="https://api.scryfall.com",j=/^\d{4}-\d{2}-\d{2}?$/,Q=(s,e)=>typeof e=="string"&&j.test(e)?new Date(e):e;async function r(s,e,t){let n="";typeof s=="number"||typeof s=="string"?n=s:s&&(n=s.join("/"));let i=new URL(`${D}/${String(n)}`);if(e)for(let[a,c]of Object.entries(e))c!==void 0&&i.searchParams.append(a,c.toString());try{let a={method:t?"POST":"GET"};t&&(a.body=JSON.stringify(t),a.headers={"Content-Type":"application/json"});let o=await(await v(i,a)).text();return JSON.parse(o,Q)}catch(a){if(a instanceof u&&(a.warnings&&console.warn(a.warnings),a.code==="not_found"||a.code==="bad_request"))return;throw a}}var l=class{constructor(e,t){this.apiPath=e;this.query=t}#t=0;#e=!0;get count(){return this.#t}get hasMore(){return this.#e}async all(){let e=[];for(;this.#e;){let t=await this.next();e.push(...t)}return e}async get(e){let t=[];for(;this.#e;){let n=await this.next();if(t.push(...n),t.length===e)return t;if(t.length>e)return t.slice(0,e)}return t}async next(){let e=await r(this.apiPath,this.query);return this.#e=e?.has_more??!1,this.#t=Number.parseInt(e?.total_cards?.toFixed(0)??"0",10),this.#e&&this.setNextPage(),e?.data??[]}async page(e){return this.query.page=e,this.next()}setNextPage(){this.query.page+=1}};var x=class{async autoCompleteName(e){return(await r("cards/autocomplete",{q:e}))?.data??[]}async byArenaId(e){return r(["cards/arena",e])}async byId(e){return r(["cards",e])}async byMtgoId(e){return r(["cards/mtgo",e])}async byMultiverseId(e){return r(["cards/multiverse",e])}async byName(e,t,n=!1){let i=n,a=t;return typeof t=="boolean"&&(i=t,a=void 0),r("cards/named",{[i?"fuzzy":"exact"]:e,set:a})}async bySet(e,t,n){let i=["cards",e,t];return n&&i.push(n),r(i)}async byTcgPlayerId(e){return r(["cards/tcgplayer",e])}async collection(...e){let t=[];for(let n=0;n<e.length;n+=75){let i={identifiers:e.slice(n,n+75)},a=await r("cards/collection",void 0,i);t.push(...a?.data??[])}return t}async random(){return r("cards/random")}search(e,t){return new l("cards/search",{q:e,...typeof t=="number"?{page:t}:{...t,page:t?.page??1}})}},z=new x,L=z;var m=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 t?{name:e,set:t}:{name:e}}static byOracleId(e){return{oracle_id:e}}static bySet(e,t){return{collector_number:String(t),set:e}}};var C=class{async artifactTypes(){return(await r("catalog/artifact-types"))?.data??[]}async artistNames(){return(await r("catalog/artist-names"))?.data??[]}async cardNames(){return(await r("catalog/card-names"))?.data??[]}async creatureTypes(){return(await r("catalog/creature-types"))?.data??[]}async enchantmentTypes(){return(await r("catalog/enchantment-types"))?.data??[]}async landTypes(){return(await r("catalog/land-types"))?.data??[]}async loyalties(){return(await r("catalog/loyalties"))?.data??[]}async planeswalkerTypes(){return(await r("catalog/planeswalker-types"))?.data??[]}async powers(){return(await r("catalog/powers"))?.data??[]}async spellTypes(){return(await r("catalog/spell-types"))?.data??[]}async toughnesses(){return(await r("catalog/toughnesses"))?.data??[]}async watermarks(){return(await r("catalog/watermarks"))?.data??[]}async wordBank(){return(await r("catalog/word-bank"))?.data??[]}},$=new C,M=$;var P=class{async byArenaId(e){return(await r(["cards/arena",e,"rulings"]))?.data??[]}async byId(e){return(await r(["cards",e,"rulings"]))?.data??[]}async byMtgoId(e){return(await r(["cards/mtgo",e,"rulings"]))?.data??[]}async byMultiverseId(e){return(await r(["cards/multiverse",e,"rulings"]))?.data??[]}async bySet(e,t){return(await r(["cards",e,String(t),"rulings"]))?.data??[]}},A=new P,N=A;var T=class{async all(){return(await r("sets"))?.data??[]}async byCode(e){return await r(["sets",e])}async byId(e){return r(["sets",e])}async byTcgPlayerId(e){return r(["sets/tcgplayer",e])}},U=new T,_=U;var R=class{async all(){return(await r("symbology"))?.data??[]}async parseMana(e){if(!e||typeof e!="string")throw new d("shorthand must be a string");return await r("symbology/parse-mana",{cost:e})??{cmc:0,colorless:!1,colors:[],cost:"",monocolored:!1,multicolored:!1,object:"mana_cost"}}},B=new R,k=B;export{m as CardIdentifierBuilder,L as Cards,M as Catalogs,d as InvalidScryfallArgumentError,l as MagicPageResult,N as Rulings,u as ScryfallError,_ as Sets,k as SymbologyApi,p as UnknownScryfallError};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scryfall-api",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.4",
|
|
4
4
|
"description": "A Javascript library for https://scryfall.com/docs/api written in Typescript.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"magic",
|
|
@@ -49,16 +49,16 @@
|
|
|
49
49
|
"lint": "eslint .",
|
|
50
50
|
"lint:fix": "eslint --fix .",
|
|
51
51
|
"prepublishOnly": "tsup",
|
|
52
|
-
"test": "bun test",
|
|
52
|
+
"test": "bun test --timeout 50000",
|
|
53
53
|
"typecheck": "tsc --noEmit"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
-
"@changesets/cli": "2.
|
|
57
|
-
"@hexadrop/eslint-config": "0.
|
|
56
|
+
"@changesets/cli": "2.29.7",
|
|
57
|
+
"@hexadrop/eslint-config": "0.1.9",
|
|
58
58
|
"@hexadrop/tsconfig": "0.0.5",
|
|
59
|
-
"@types/bun": "1.2.
|
|
60
|
-
"eslint": "9.
|
|
61
|
-
"tsup": "8.
|
|
62
|
-
"typescript": "5.
|
|
59
|
+
"@types/bun": "1.2.23",
|
|
60
|
+
"eslint": "9.37.0",
|
|
61
|
+
"tsup": "8.5.0",
|
|
62
|
+
"typescript": "5.9.3"
|
|
63
63
|
}
|
|
64
64
|
}
|