57 lines
1.0 KiB
JavaScript
57 lines
1.0 KiB
JavaScript
import {XMLParser} from 'fast-xml-parser'
|
|
|
|
/**
|
|
* @typedef {{
|
|
* id: string,
|
|
* slots: number,
|
|
* name: string,
|
|
* query: string
|
|
* }} XMLDumpCard
|
|
*/
|
|
|
|
/**
|
|
* @typedef {{
|
|
* order: {
|
|
* details: { quantity: number },
|
|
* fronts: { card: Array<XMLDumpCard> },
|
|
* backs: { card: Array<XMLDumpCard> },
|
|
* cardback: string
|
|
* }
|
|
* }} XMLDump
|
|
*/
|
|
|
|
/**
|
|
* @typedef {{ dpi: number, extension: string }} Card
|
|
*/
|
|
|
|
/**
|
|
* @param {String | Uint8Array} xml
|
|
* @returns {XMLDump}
|
|
*/
|
|
const readDump = xml => {
|
|
const parser = new XMLParser()
|
|
return parser.parse(xml, false)
|
|
}
|
|
|
|
/**
|
|
* @param {Array<string>} ids
|
|
* @returns {Promise<{[key: string]: Card}>}
|
|
*/
|
|
const cards = async (...ids) =>
|
|
fetch(
|
|
'https://mpcfill.com/2/cards/',
|
|
{
|
|
method: 'POST',
|
|
body: JSON.stringify({
|
|
cardIdentifiers: ids
|
|
}),
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
}
|
|
}
|
|
)
|
|
.then(/** @returns {Promise<{results: {[key: string]: Card}}>} */ a => a.json())
|
|
.then(a => a.results)
|
|
|
|
export { cards, readDump }
|