deckhearth/lib/pricing/outbound-links.js
Randall Stillwell d0468015eb
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
feat(pricing): convoy for online prices and local stores
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>
2026-09-08 22:47:46 -05:00

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),
};
}