dexpaprika-sdk
Version:
JavaScript SDK for the DexPaprika API
115 lines (114 loc) • 4.51 kB
JavaScript
;
// 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);
}