UNPKG

dexpaprika-sdk

Version:
115 lines (114 loc) 4.51 kB
"use strict"; // Shared, pure helpers for the unified search endpoints // (/networks/{network}/pools/search and /networks/{network}/tokens/search). // // The search endpoints return HTTP 400 on legacy sort-field values and legacy // filter param names, so every value/name coming from the public option types // (which stay backward-compatible) must be mapped to its canonical form here. Object.defineProperty(exports, "__esModule", { value: true }); exports.mapPoolSortField = mapPoolSortField; exports.mapTokenSortField = mapTokenSortField; exports.mapPoolFilterParams = mapPoolFilterParams; exports.mapTokenFilterParams = mapTokenFilterParams; // --------------------------------------------------------------------------- // Sort-field value mapping (legacy or canonical -> canonical order_by value). // --------------------------------------------------------------------------- // Pools: legacy aliases plus canonical pass-through. Unknown -> default. const POOL_SORT_FIELD_MAP = { // legacy -> canonical volume_usd: 'volume_usd_24h', transactions: 'txns_24h', last_price_change_usd_24h: 'price_change_percentage_24h', volume_24h: 'volume_usd_24h', volume_7d: 'volume_usd_7d', volume_30d: 'volume_usd_30d', liquidity: 'liquidity_usd', // canonical pass-through volume_usd_24h: 'volume_usd_24h', volume_usd_7d: 'volume_usd_7d', volume_usd_30d: 'volume_usd_30d', liquidity_usd: 'liquidity_usd', txns_24h: 'txns_24h', created_at: 'created_at', price_usd: 'price_usd', price_change_percentage_24h: 'price_change_percentage_24h', }; // Tokens: legacy aliases plus canonical pass-through. Unknown -> default. // Note: tokens/search returns 400 on price ordering, so price_usd folds to the // default volume_usd_24h. const TOKEN_SORT_FIELD_MAP = { // legacy -> canonical volume_24h: 'volume_usd_24h', txns: 'txns_24h', price_change: 'price_change_percentage_24h', fdv: 'fdv_usd', volume_7d: 'volume_usd_7d', volume_30d: 'volume_usd_30d', price_usd: 'volume_usd_24h', // canonical pass-through volume_usd_24h: 'volume_usd_24h', volume_usd_7d: 'volume_usd_7d', volume_usd_30d: 'volume_usd_30d', liquidity_usd: 'liquidity_usd', txns_24h: 'txns_24h', fdv_usd: 'fdv_usd', created_at: 'created_at', price_change_percentage_24h: 'price_change_percentage_24h', }; const DEFAULT_SORT_FIELD = 'volume_usd_24h'; /** * Map a pool sort field (legacy or canonical) to the canonical order_by value * accepted by /networks/{network}/pools/search. Unknown or missing -> default. */ function mapPoolSortField(value) { var _a; if (!value) return DEFAULT_SORT_FIELD; return (_a = POOL_SORT_FIELD_MAP[value]) !== null && _a !== void 0 ? _a : DEFAULT_SORT_FIELD; } /** * Map a token sort field (legacy or canonical) to the canonical order_by value * accepted by /networks/{network}/tokens/search. Unknown or missing -> default. */ function mapTokenSortField(value) { var _a; if (!value) return DEFAULT_SORT_FIELD; return (_a = TOKEN_SORT_FIELD_MAP[value]) !== null && _a !== void 0 ? _a : DEFAULT_SORT_FIELD; } // --------------------------------------------------------------------------- // Filter param NAME mapping (legacy query param name -> canonical search param). // Unmapped names pass through unchanged. // --------------------------------------------------------------------------- const POOL_FILTER_PARAM_MAP = { volume_24h_min: 'volume_usd_24h_min', volume_24h_max: 'volume_usd_24h_max', volume_7d_min: 'volume_usd_7d_min', volume_7d_max: 'volume_usd_7d_max', }; const TOKEN_FILTER_PARAM_MAP = { volume_24h_min: 'volume_usd_24h_min', volume_24h_max: 'volume_usd_24h_max', }; function remapKeys(params, map) { var _a; const out = {}; for (const [key, value] of Object.entries(params)) { out[(_a = map[key]) !== null && _a !== void 0 ? _a : key] = value; } return out; } /** * Rename legacy pool filter param names to the canonical pools/search names. * Names not in the map (e.g. liquidity_usd_min, txns_24h_min) pass through. */ function mapPoolFilterParams(params) { return remapKeys(params, POOL_FILTER_PARAM_MAP); } /** * Rename legacy token filter param names to the canonical tokens/search names. * Names not in the map (e.g. liquidity_usd_min, fdv_min) pass through. */ function mapTokenFilterParams(params) { return remapKeys(params, TOKEN_FILTER_PARAM_MAP); }