Some checks failed
CI / Lint (pull_request) Has been cancelled
CI / Schema map up to date (pull_request) Has been cancelled
CI / Forbidden patterns (9 checks) (pull_request) Has been cancelled
CI / Migrations apply (node-pg-migrate) (pull_request) Has been cancelled
Visual diff / Should run? (pull_request) Has been cancelled
CI / Unit tests (vitest) (pull_request) Has been cancelled
Convoy metrics gate / Require role-event telemetry on convoy PRs (pull_request) Has been cancelled
PR Health rollup / Aggregate gate status (pull_request) Has been cancelled
Preview smoke / Should run? (pull_request) Has been cancelled
Preview smoke / Playwright smoke (pull_request) Has been cancelled
Visual diff / Screenshot diff (pull_request) Has been cancelled
Add pricing schema, free API integrations (MTG bulk, TCGdex, Foolio), valuation and sort-by-price, card detail pricing UI, and nearby store discovery via home zip and OSM geo clients. Co-authored-by: Cursor <cursoragent@cursor.com>
32 lines
1 KiB
JavaScript
32 lines
1 KiB
JavaScript
/**
|
|
* @param {{ name?: string, game?: string, set_name?: string, setName?: string }} card
|
|
* @returns {string}
|
|
*/
|
|
export function buildTcgplayerUrl(card) {
|
|
const name = card.name || '';
|
|
const game = (card.game || 'mtg').toLowerCase();
|
|
return `https://www.tcgplayer.com/search/${game}/product?productName=${encodeURIComponent(name)}`;
|
|
}
|
|
|
|
/**
|
|
* @param {{ name?: string, game?: string, set_name?: string, setName?: string }} card
|
|
* @returns {string}
|
|
*/
|
|
export function buildEbayUrl(card) {
|
|
const name = card.name || '';
|
|
const game = card.game || '';
|
|
const setName = card.set_name || card.setName || '';
|
|
const query = [name, setName, game].filter(Boolean).join(' ');
|
|
return `https://www.ebay.com/sch/i.html?_nkw=${encodeURIComponent(query)}`;
|
|
}
|
|
|
|
/**
|
|
* @param {{ name?: string, game?: string, set_name?: string, setName?: string }} card
|
|
* @returns {{ tcgplayer: string, ebay: string }}
|
|
*/
|
|
export function buildOutboundLinks(card) {
|
|
return {
|
|
tcgplayer: buildTcgplayerUrl(card),
|
|
ebay: buildEbayUrl(card),
|
|
};
|
|
}
|