@ledgerhq/ledger-cal-service
Version:
Ledger CAL service client
67 lines • 2.7 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.findToken = exports.findCachedToken = exports.NoTokenFound = void 0;
const live_network_1 = __importDefault(require("@ledgerhq/live-network"));
const cache_1 = require("@ledgerhq/live-network/cache");
const common_1 = require("./common");
const live_env_1 = require("@ledgerhq/live-env");
const OUTPUT_FILTER = "id,name,network,network_family,network_type,exchange_app_config_serialized,live_signature,ticker,decimals,blockchain_name,chain_id,contract_address,descriptor,descriptor_exchange_app,units,symbol";
class NoTokenFound extends Error {
constructor() {
super();
this.name = "NoTokenFound";
}
}
exports.NoTokenFound = NoTokenFound;
exports.findCachedToken = (0, cache_1.makeLRUCache)(async (filter, opt) => findToken(filter, opt), filter => ("blockchain" in filter ? filter.blockchain + filter.ticker : filter.id), (0, cache_1.hours)(1));
async function findToken(filter, { env = "prod", signatureKind = "prod", ref = (0, live_env_1.getEnv)("CAL_REF") || undefined, } = common_1.DEFAULT_OPTION) {
let params = {
output: OUTPUT_FILTER,
ref,
};
if ("blockchain" in filter) {
params = {
...params,
blockchain_name: filter.blockchain,
ticker: filter.ticker,
};
}
else {
params = {
...params,
id: filter.id,
};
}
// https://github.com/LedgerHQ/crypto-assets-service/blob/master/modules/service/src/main/scala/co/ledger/cal/service/api/ApiCALService.scala#L259
const { data } = await (0, live_network_1.default)({
url: `${(0, common_1.getCALDomain)(env)}/v1/tokens`,
params,
});
if (!data.length) {
throw new NoTokenFound();
}
return {
id: data[0].id,
chainId: data[0]?.chain_id,
contractAddress: data[0]?.contract_address,
config: data[0].descriptor_exchange_app.data,
decimals: data[0].decimals,
name: data[0].name,
network: data[0].network,
family: data[0].network_family,
networkType: data[0].network_type,
signature: data[0].descriptor_exchange_app.signatures[signatureKind],
symbol: data[0].symbol,
ticker: data[0].ticker,
units: data[0].units,
descriptor: {
data: data[0].descriptor.data,
signature: data[0].descriptor.signatures[signatureKind],
},
};
}
exports.findToken = findToken;
//# sourceMappingURL=tokens.js.map