New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@swapkit/api

Package Overview
Dependencies
Maintainers
1
Versions
242
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@swapkit/api - npm Package Compare versions

Comparing version 1.0.0-rc.6 to 1.0.0-rc.7

445

dist/index.es.js

@@ -1,69 +0,408 @@

var A = /* @__PURE__ */ ((_) => (_.INVALID_INPUT_PARAMETERS = "1000", _.UNKNOWN_PROVIDERS = "1001", _.CANNOT_FIND_INBOUND_ADDRESS = "1002", _.NO_INBOUND_ADDRESSES = "1003", _.CHAIN_HALTED_OR_UNSUPPORTED = "1004", _.MISSING_INPUT_PARAMETER = "1005", _.INVALID_TYPE_GENERIC = "1100", _.INVALID_NUMBER_STRING = "1101", _.INVALID_NUMBER = "1102", _.INVALID_BOOLEAN = "1103", _.INVALID_OBJECT = "1104", _.INVALID_ARRAY = "1105", _.SELL_AMOUNT_MUST_BE_POSITIVE_INTEGER = "2000", _.SELL_BUY_ASSETS_ARE_THE_SAME = "2001", _.MISSING_SOURCE_ADDRESS_FOR_SYNTH = "2002", _.AFF_ADDRESS_AND_BPS_OR_NEITHER = "2003", _.AFF_ADDRESS_TOO_LONG = "2004", _.AFF_BPS_INTEGER_0_100 = "2005", _.SOURCE_ADDRESS_INVALID_FOR_SELL_CHAIN = "2006", _.DESTINATION_ADDRESS_INVALID_FOR_BUY_CHAIN = "2007", _.PREFERRED_PROFVIDER_NOT_SUPPORTED = "2008", _.DESTINATION_ADDRESS_SMART_CONTRACT = "2009", _.BUY_AMOUNT_MUST_BE_POSITIVE_INTEGER = "2010", _.SOURCE_ADDRESS_SMART_CONTRACT = "2011", _.INVALID_PROVIDER = "2100", _.MISSING_CROSS_CHAIN_PROVIDER = "2101", _.MISSING_AVAX_PROVIDER = "2102", _.MISSING_BSC_PROVIDER = "2103", _.MISSING_ETH_PROVIDER = "2104", _.INVALID_PROVIDER_FOR_SWAP_OUT = "2105", _.MISSING_ARB_PROVIDER = "2106", _.INVALID_CHAIN = "2200", _.INVALID_ASSET = "2201", _.INVALID_ASSET_IDENTIFIER = "2202", _.UNSUPPORTED_CHAIN = "2204", _.UNSUPPORTED_ASSET = "2203", _.UNSUPPORTED_ASSET_FOR_SWAPOUT = "2205", _.INVALID_SOURCE_ADDRESS = "2300", _.INVALID_DESTINATION_ADDRESS = "2301", _.THORNODE_QUOTE_GENERIC_ERROR = "3000", _.NOT_ENOUGH_SYNTH_BALANCE = "3001", _.SYNTH_MINTING_CAP_REACHED = "3002", _.INVALID_QUOTE_MODE = "4000", _.NO_QUOTES = "4001", _.SERVICE_UNAVAILABLE_GENERIC = "5000", _.MISSING_GAS_DATA_GENERIC = "5100", _.MISSING_TOKEN_INFO_GENERIC = "5200", _.CANT_FIND_TOKEN_LIST = "5201", _.NO_PRICE = "5202", _.PRICE_IS_STALE = "5203", _.ADDRESS_NOT_WHITELISTED = "6000", _.ADDRESS_ALREADY_CLAIMED = "6001", _.TEMPORARY_ERROR = "9999", _))(A || {});
A.INVALID_INPUT_PARAMETERS + "", A.UNKNOWN_PROVIDERS + "", A.CANNOT_FIND_INBOUND_ADDRESS + "", A.NO_INBOUND_ADDRESSES + "", A.CHAIN_HALTED_OR_UNSUPPORTED + "", A.MISSING_INPUT_PARAMETER + "", A.INVALID_TYPE_GENERIC + "", A.INVALID_NUMBER_STRING + "", A.INVALID_NUMBER + "", A.INVALID_BOOLEAN + "", A.INVALID_OBJECT + "", A.INVALID_ARRAY + "", A.SELL_AMOUNT_MUST_BE_POSITIVE_INTEGER + "", A.SELL_BUY_ASSETS_ARE_THE_SAME + "", A.MISSING_SOURCE_ADDRESS_FOR_SYNTH + "", A.AFF_ADDRESS_AND_BPS_OR_NEITHER + "", A.AFF_ADDRESS_TOO_LONG + "", A.AFF_BPS_INTEGER_0_100 + "", A.SOURCE_ADDRESS_INVALID_FOR_SELL_CHAIN + "", A.DESTINATION_ADDRESS_INVALID_FOR_BUY_CHAIN + "", A.PREFERRED_PROFVIDER_NOT_SUPPORTED + "", A.DESTINATION_ADDRESS_SMART_CONTRACT + "", A.BUY_AMOUNT_MUST_BE_POSITIVE_INTEGER + "", A.INVALID_PROVIDER + "", A.MISSING_CROSS_CHAIN_PROVIDER + "", A.MISSING_AVAX_PROVIDER + "", A.MISSING_BSC_PROVIDER + "", A.MISSING_ETH_PROVIDER + "", A.MISSING_ARB_PROVIDER + "", A.INVALID_PROVIDER_FOR_SWAP_OUT + "", A.INVALID_CHAIN + "", A.INVALID_ASSET + "", A.UNSUPPORTED_CHAIN + "", A.UNSUPPORTED_ASSET + "", A.UNSUPPORTED_ASSET_FOR_SWAPOUT + "", A.THORNODE_QUOTE_GENERIC_ERROR + "", A.INVALID_SOURCE_ADDRESS + "", A.INVALID_DESTINATION_ADDRESS + "", A.NOT_ENOUGH_SYNTH_BALANCE + "", A.SYNTH_MINTING_CAP_REACHED + "", A.INVALID_QUOTE_MODE + "", A.NO_QUOTES + "", A.SERVICE_UNAVAILABLE_GENERIC + "", A.MISSING_GAS_DATA_GENERIC + "", A.MISSING_TOKEN_INFO_GENERIC + "", A.CANT_FIND_TOKEN_LIST + "", A.NO_PRICE + "", A.PRICE_IS_STALE + "", A.ADDRESS_NOT_WHITELISTED + "", A.ADDRESS_ALREADY_CLAIMED + "";
var e = /* @__PURE__ */ ((_) => (_.Arbitrum = "ARB", _.Avalanche = "AVAX", _.Binance = "BNB", _.BinanceSmartChain = "BSC", _.Bitcoin = "BTC", _.BitcoinCash = "BCH", _.Cosmos = "GAIA", _.Dogecoin = "DOGE", _.Ethereum = "ETH", _.Kujira = "KUJI", _.Litecoin = "LTC", _.Maya = "MAYA", _.Optimism = "OP", _.Polygon = "MATIC", _.THORChain = "THOR", _))(e || {}), i = /* @__PURE__ */ ((_) => (_.Arbitrum = "42161", _.ArbitrumHex = "0xa4b1", _.Avalanche = "43114", _.AvalancheHex = "0xa86a", _.Binance = "Binance-Chain-Tigris", _.BinanceSmartChain = "56", _.BinanceSmartChainHex = "0x38", _.Bitcoin = "bitcoin", _.BitcoinCash = "bitcoincash", _.Cosmos = "cosmoshub-4", _.Dogecoin = "dogecoin", _.Kujira = "kaiyo-1", _.Ethereum = "1", _.EthereumHex = "0x1", _.Litecoin = "litecoin", _.Maya = "mayachain-mainnet-v1", _.MayaStagenet = "mayachain-stagenet-v1", _.Optimism = "10", _.OptimismHex = "0xa", _.Polygon = "137", _.PolygonHex = "0x89", _.THORChain = "thorchain-mainnet-v1", _.THORChainStagenet = "thorchain-stagenet-v2", _))(i || {}), D = /* @__PURE__ */ ((_) => (_.Arbitrum = "https://arb1.arbitrum.io/rpc", _.Avalanche = "https://node-router.thorswap.net/avalanche-c", _.Binance = "", _.BinanceSmartChain = "https://bsc-dataseed.binance.org", _.Bitcoin = "https://node-router.thorswap.net/bitcoin", _.BitcoinCash = "https://node-router.thorswap.net/bitcoin-cash", _.Cosmos = "https://node-router.thorswap.net/cosmos/rpc", _.Kujira = "https://rpc-kujira.synergynodes.com/", _.Dogecoin = "https://node-router.thorswap.net/dogecoin", _.Ethereum = "https://node-router.thorswap.net/ethereum", _.Litecoin = "https://node-router.thorswap.net/litecoin", _.Maya = "https://tendermint.mayachain.info", _.MayaStagenet = "https://stagenet.tendermint.mayachain.info", _.Optimism = "https://mainnet.optimism.io", _.Polygon = "https://polygon-rpc.com", _.THORChain = "https://rpc.thorswap.net", _.THORChainStagenet = "https://stagenet-rpc.ninerealms.com", _))(D || {}), T = /* @__PURE__ */ ((_) => (_.Cosmos = "https://node-router.thorswap.net/cosmos/rest", _.Kujira = "https://lcd-kujira.synergynodes.com/", _.MayanodeMainnet = "https://mayanode.mayachain.info", _.MayanodeStagenet = "https://stagenet.mayanode.mayachain.info", _.ThornodeMainnet = "https://thornode.thorswap.net", _.ThornodeStagenet = "https://stagenet-thornode.ninerealms.com", _.ThorswapApi = "https://api.thorswap.finance", _.ThorswapStatic = "https://static.thorswap.net", _))(T || {});
const r = Object.values(e), n = Object.keys(e), C = r.reduce(
(_, S) => {
const E = n.find((t) => e[t] === S);
return E && (_[S] = E), _;
var o = /* @__PURE__ */ ((t) => (t.INVALID_INPUT_PARAMETERS = "1000", t.UNKNOWN_PROVIDERS = "1001", t.CANNOT_FIND_INBOUND_ADDRESS = "1002", t.NO_INBOUND_ADDRESSES = "1003", t.CHAIN_HALTED_OR_UNSUPPORTED = "1004", t.MISSING_INPUT_PARAMETER = "1005", t.INVALID_TYPE_GENERIC = "1100", t.INVALID_NUMBER_STRING = "1101", t.INVALID_NUMBER = "1102", t.INVALID_BOOLEAN = "1103", t.INVALID_OBJECT = "1104", t.INVALID_ARRAY = "1105", t.SELL_AMOUNT_MUST_BE_POSITIVE_INTEGER = "2000", t.SELL_BUY_ASSETS_ARE_THE_SAME = "2001", t.MISSING_SOURCE_ADDRESS_FOR_SYNTH = "2002", t.AFF_ADDRESS_AND_BPS_OR_NEITHER = "2003", t.AFF_ADDRESS_TOO_LONG = "2004", t.AFF_BPS_INTEGER_0_100 = "2005", t.SOURCE_ADDRESS_INVALID_FOR_SELL_CHAIN = "2006", t.DESTINATION_ADDRESS_INVALID_FOR_BUY_CHAIN = "2007", t.PREFERRED_PROFVIDER_NOT_SUPPORTED = "2008", t.DESTINATION_ADDRESS_SMART_CONTRACT = "2009", t.BUY_AMOUNT_MUST_BE_POSITIVE_INTEGER = "2010", t.SOURCE_ADDRESS_SMART_CONTRACT = "2011", t.INVALID_PROVIDER = "2100", t.MISSING_CROSS_CHAIN_PROVIDER = "2101", t.MISSING_AVAX_PROVIDER = "2102", t.MISSING_BSC_PROVIDER = "2103", t.MISSING_ETH_PROVIDER = "2104", t.INVALID_PROVIDER_FOR_SWAP_OUT = "2105", t.MISSING_ARB_PROVIDER = "2106", t.INVALID_CHAIN = "2200", t.INVALID_ASSET = "2201", t.INVALID_ASSET_IDENTIFIER = "2202", t.UNSUPPORTED_CHAIN = "2204", t.UNSUPPORTED_ASSET = "2203", t.UNSUPPORTED_ASSET_FOR_SWAPOUT = "2205", t.INVALID_SOURCE_ADDRESS = "2300", t.INVALID_DESTINATION_ADDRESS = "2301", t.THORNODE_QUOTE_GENERIC_ERROR = "3000", t.NOT_ENOUGH_SYNTH_BALANCE = "3001", t.SYNTH_MINTING_CAP_REACHED = "3002", t.INVALID_QUOTE_MODE = "4000", t.NO_QUOTES = "4001", t.SERVICE_UNAVAILABLE_GENERIC = "5000", t.MISSING_GAS_DATA_GENERIC = "5100", t.MISSING_TOKEN_INFO_GENERIC = "5200", t.CANT_FIND_TOKEN_LIST = "5201", t.NO_PRICE = "5202", t.PRICE_IS_STALE = "5203", t.ADDRESS_NOT_WHITELISTED = "6000", t.ADDRESS_ALREADY_CLAIMED = "6001", t.TEMPORARY_ERROR = "9999", t))(o || {});
o.INVALID_INPUT_PARAMETERS + "", o.UNKNOWN_PROVIDERS + "", o.CANNOT_FIND_INBOUND_ADDRESS + "", o.NO_INBOUND_ADDRESSES + "", o.CHAIN_HALTED_OR_UNSUPPORTED + "", o.MISSING_INPUT_PARAMETER + "", o.INVALID_TYPE_GENERIC + "", o.INVALID_NUMBER_STRING + "", o.INVALID_NUMBER + "", o.INVALID_BOOLEAN + "", o.INVALID_OBJECT + "", o.INVALID_ARRAY + "", o.SELL_AMOUNT_MUST_BE_POSITIVE_INTEGER + "", o.SELL_BUY_ASSETS_ARE_THE_SAME + "", o.MISSING_SOURCE_ADDRESS_FOR_SYNTH + "", o.AFF_ADDRESS_AND_BPS_OR_NEITHER + "", o.AFF_ADDRESS_TOO_LONG + "", o.AFF_BPS_INTEGER_0_100 + "", o.SOURCE_ADDRESS_INVALID_FOR_SELL_CHAIN + "", o.DESTINATION_ADDRESS_INVALID_FOR_BUY_CHAIN + "", o.PREFERRED_PROFVIDER_NOT_SUPPORTED + "", o.DESTINATION_ADDRESS_SMART_CONTRACT + "", o.BUY_AMOUNT_MUST_BE_POSITIVE_INTEGER + "", o.INVALID_PROVIDER + "", o.MISSING_CROSS_CHAIN_PROVIDER + "", o.MISSING_AVAX_PROVIDER + "", o.MISSING_BSC_PROVIDER + "", o.MISSING_ETH_PROVIDER + "", o.MISSING_ARB_PROVIDER + "", o.INVALID_PROVIDER_FOR_SWAP_OUT + "", o.INVALID_CHAIN + "", o.INVALID_ASSET + "", o.UNSUPPORTED_CHAIN + "", o.UNSUPPORTED_ASSET + "", o.UNSUPPORTED_ASSET_FOR_SWAPOUT + "", o.THORNODE_QUOTE_GENERIC_ERROR + "", o.INVALID_SOURCE_ADDRESS + "", o.INVALID_DESTINATION_ADDRESS + "", o.NOT_ENOUGH_SYNTH_BALANCE + "", o.SYNTH_MINTING_CAP_REACHED + "", o.INVALID_QUOTE_MODE + "", o.NO_QUOTES + "", o.SERVICE_UNAVAILABLE_GENERIC + "", o.MISSING_GAS_DATA_GENERIC + "", o.MISSING_TOKEN_INFO_GENERIC + "", o.CANT_FIND_TOKEN_LIST + "", o.NO_PRICE + "", o.PRICE_IS_STALE + "", o.ADDRESS_NOT_WHITELISTED + "", o.ADDRESS_ALREADY_CLAIMED + "";
var l = /* @__PURE__ */ ((t) => (t.Arbitrum = "ARB", t.Avalanche = "AVAX", t.Binance = "BNB", t.BinanceSmartChain = "BSC", t.Bitcoin = "BTC", t.BitcoinCash = "BCH", t.Cosmos = "GAIA", t.Dogecoin = "DOGE", t.Ethereum = "ETH", t.Kujira = "KUJI", t.Litecoin = "LTC", t.Maya = "MAYA", t.Optimism = "OP", t.Polygon = "MATIC", t.THORChain = "THOR", t))(l || {}), C = /* @__PURE__ */ ((t) => (t.Arbitrum = "42161", t.ArbitrumHex = "0xa4b1", t.Avalanche = "43114", t.AvalancheHex = "0xa86a", t.Binance = "Binance-Chain-Tigris", t.BinanceSmartChain = "56", t.BinanceSmartChainHex = "0x38", t.Bitcoin = "bitcoin", t.BitcoinCash = "bitcoincash", t.Cosmos = "cosmoshub-4", t.Dogecoin = "dogecoin", t.Kujira = "kaiyo-1", t.Ethereum = "1", t.EthereumHex = "0x1", t.Litecoin = "litecoin", t.Maya = "mayachain-mainnet-v1", t.MayaStagenet = "mayachain-stagenet-v1", t.Optimism = "10", t.OptimismHex = "0xa", t.Polygon = "137", t.PolygonHex = "0x89", t.THORChain = "thorchain-mainnet-v1", t.THORChainStagenet = "thorchain-stagenet-v2", t))(C || {}), b = /* @__PURE__ */ ((t) => (t.Arbitrum = "https://arb1.arbitrum.io/rpc", t.Avalanche = "https://node-router.thorswap.net/avalanche-c", t.Binance = "", t.BinanceSmartChain = "https://bsc-dataseed.binance.org", t.Bitcoin = "https://node-router.thorswap.net/bitcoin", t.BitcoinCash = "https://node-router.thorswap.net/bitcoin-cash", t.Cosmos = "https://node-router.thorswap.net/cosmos/rpc", t.Kujira = "https://rpc-kujira.synergynodes.com/", t.Dogecoin = "https://node-router.thorswap.net/dogecoin", t.Ethereum = "https://node-router.thorswap.net/ethereum", t.Litecoin = "https://node-router.thorswap.net/litecoin", t.Maya = "https://tendermint.mayachain.info", t.MayaStagenet = "https://stagenet.tendermint.mayachain.info", t.Optimism = "https://mainnet.optimism.io", t.Polygon = "https://polygon-rpc.com", t.THORChain = "https://rpc.thorswap.net", t.THORChainStagenet = "https://stagenet-rpc.ninerealms.com", t))(b || {}), E = /* @__PURE__ */ ((t) => (t.Cosmos = "https://node-router.thorswap.net/cosmos/rest", t.Kujira = "https://lcd-kujira.synergynodes.com/", t.MayanodeMainnet = "https://mayanode.mayachain.info", t.MayanodeStagenet = "https://stagenet.mayanode.mayachain.info", t.ThornodeMainnet = "https://thornode.thorswap.net", t.ThornodeStagenet = "https://stagenet-thornode.ninerealms.com", t.ThorswapApi = "https://api.thorswap.finance", t.ThorswapStatic = "https://static.thorswap.net", t))(E || {});
const I = Object.values(l), V = Object.keys(l), f = I.reduce(
(t, e) => {
const s = V.find((r) => l[r] === e);
return s && (t[e] = s), t;
},
{}
);
r.reduce(
(_, S) => (_[S] = i[C[S]], _),
I.reduce(
(t, e) => (t[e] = C[f[e]], t),
{}
);
r.reduce(
(_, S) => (_[S] = D[C[S]], _),
I.reduce(
(t, e) => (t[e] = b[f[e]], t),
{}
);
r.reduce(
(_, S) => {
const E = `${C[S]}Hex`;
return _[S] = i[E], _;
I.reduce(
(t, e) => {
const s = `${f[e]}Hex`;
return t[e] = C[s], t;
},
{}
);
const O = (_) => ("recipientAddress" in _ && _.recipientAddress && (_.recipientAddress = _.recipientAddress.replace(/(bchtest:|bitcoincash:)/, "")), new URLSearchParams(_).toString()), I = {
CachedPrices: `${T.ThorswapApi}/tokenlist/cached-price`,
GasRates: `${T.ThorswapApi}/resource-worker/gasPrice/getAll`,
Quote: `${T.ThorswapApi}/aggregator/tokens/quote`,
Txn: `${T.ThorswapApi}/apiusage/v2/txn`,
TokenlistProviders: `${T.ThorswapApi}/tokenlist/providers`,
TokenList: `${T.ThorswapStatic}/token-list`,
Thorname: `${T.ThorswapApi}/thorname`
}, N = {
get: (_, S, E) => fetch(`${_}${S ? `?${O(S)}` : ""}`, {
referrer: "https://sk.thorswap.net"
}).then((t) => t.json()).catch((t) => {
var R;
return console.error(t), (R = E == null ? void 0 : E.onError) == null || R.call(E, t), Promise.reject(t);
}),
post: (_, S, E) => fetch(_, {
class D extends Error {
constructor(e, s, r) {
const i = e.status || e.status === 0 ? e.status : "", n = e.statusText || "", a = `${i} ${n}`.trim(), _ = a ? `status code ${a}` : "an unknown error";
super(`Request failed with ${_}`), Object.defineProperty(this, "response", {
enumerable: !0,
configurable: !0,
writable: !0,
value: void 0
}), Object.defineProperty(this, "request", {
enumerable: !0,
configurable: !0,
writable: !0,
value: void 0
}), Object.defineProperty(this, "options", {
enumerable: !0,
configurable: !0,
writable: !0,
value: void 0
}), this.name = "HTTPError", this.response = e, this.request = s, this.options = r;
}
}
class g extends Error {
constructor(e) {
super("Request timed out"), Object.defineProperty(this, "request", {
enumerable: !0,
configurable: !0,
writable: !0,
value: void 0
}), this.name = "TimeoutError", this.request = e;
}
}
const d = (t) => t !== null && typeof t == "object", T = (...t) => {
for (const e of t)
if ((!d(e) || Array.isArray(e)) && e !== void 0)
throw new TypeError("The `options` argument must be an object");
return O({}, ...t);
}, U = (t = {}, e = {}) => {
const s = new globalThis.Headers(t), r = e instanceof globalThis.Headers, i = new globalThis.Headers(e);
for (const [n, a] of i.entries())
r && a === "undefined" || a === void 0 ? s.delete(n) : s.set(n, a);
return s;
}, O = (...t) => {
let e = {}, s = {};
for (const r of t)
if (Array.isArray(r))
Array.isArray(e) || (e = []), e = [...e, ...r];
else if (d(r)) {
for (let [i, n] of Object.entries(r))
d(n) && i in e && (n = O(e[i], n)), e = { ...e, [i]: n };
d(r.headers) && (s = U(s, r.headers), e.headers = s);
}
return e;
}, B = (() => {
let t = !1, e = !1;
const s = typeof globalThis.ReadableStream == "function", r = typeof globalThis.Request == "function";
return s && r && (e = new globalThis.Request("https://empty.invalid", {
body: new globalThis.ReadableStream(),
method: "POST",
referrer: "https://sk.thorswap.net",
headers: { "Content-Type": "application/json", ...(E == null ? void 0 : E.headers) || {} },
body: typeof S == "string" ? S : O(S)
}).then((t) => t.json())
}, a = ({ tokens: _, ...S }) => {
const E = new URLSearchParams();
return _.filter((t, R, o) => o.findIndex((s) => s === t) === R).forEach((t) => E.append("tokens", JSON.stringify(t))), S.metadata && E.append("metadata", "true"), S.lookup && E.append("lookup", "true"), S.sparkline && E.append("sparkline", "true"), N.post(I.CachedPrices, E.toString(), {
// @ts-expect-error - Types are outdated.
get duplex() {
return t = !0, "half";
}
}).headers.has("Content-Type")), t && !e;
})(), H = typeof globalThis.AbortController == "function", v = typeof globalThis.ReadableStream == "function", M = typeof globalThis.FormData == "function", y = ["get", "post", "put", "patch", "head", "delete"], G = {
json: "application/json",
text: "text/*",
formData: "multipart/form-data",
arrayBuffer: "*/*",
blob: "*/*"
}, N = 2147483647, L = Symbol("stop"), F = {
json: !0,
parseJson: !0,
searchParams: !0,
prefixUrl: !0,
retry: !0,
timeout: !0,
hooks: !0,
throwHttpErrors: !0,
onDownloadProgress: !0,
fetch: !0
}, W = {
method: !0,
headers: !0,
body: !0,
mode: !0,
credentials: !0,
cache: !0,
redirect: !0,
referrer: !0,
referrerPolicy: !0,
integrity: !0,
keepalive: !0,
signal: !0,
window: !0,
dispatcher: !0,
duplex: !0
}, k = (t) => y.includes(t) ? t.toUpperCase() : t, q = ["get", "put", "head", "delete", "options", "trace"], x = [408, 413, 429, 500, 502, 503, 504], w = [413, 429, 503], m = {
limit: 2,
methods: q,
statusCodes: x,
afterStatusCodes: w,
maxRetryAfter: Number.POSITIVE_INFINITY,
backoffLimit: Number.POSITIVE_INFINITY,
delay: (t) => 0.3 * 2 ** (t - 1) * 1e3
}, j = (t = {}) => {
if (typeof t == "number")
return {
...m,
limit: t
};
if (t.methods && !Array.isArray(t.methods))
throw new Error("retry.methods must be an array");
if (t.statusCodes && !Array.isArray(t.statusCodes))
throw new Error("retry.statusCodes must be an array");
return {
...m,
...t,
afterStatusCodes: w
};
};
async function X(t, e, s, r) {
return new Promise((i, n) => {
const a = setTimeout(() => {
s && s.abort(), n(new g(t));
}, r.timeout);
r.fetch(t, e).then(i).catch(n).then(() => {
clearTimeout(a);
});
});
}
async function Y(t, { signal: e }) {
return new Promise((s, r) => {
e && (e.throwIfAborted(), e.addEventListener("abort", i, { once: !0 }));
function i() {
clearTimeout(n), r(e.reason);
}
const n = setTimeout(() => {
e == null || e.removeEventListener("abort", i), s();
}, t);
});
}
const $ = (t, e) => {
const s = {};
for (const r in e)
!(r in W) && !(r in F) && !(r in t) && (s[r] = e[r]);
return s;
};
class c {
static create(e, s) {
const r = new c(e, s), i = async () => {
if (typeof r._options.timeout == "number" && r._options.timeout > N)
throw new RangeError(`The \`timeout\` option cannot be greater than ${N}`);
await Promise.resolve();
let _ = await r._fetch();
for (const u of r._options.hooks.afterResponse) {
const A = await u(r.request, r._options, r._decorateResponse(_.clone()));
A instanceof globalThis.Response && (_ = A);
}
if (r._decorateResponse(_), !_.ok && r._options.throwHttpErrors) {
let u = new D(_, r.request, r._options);
for (const A of r._options.hooks.beforeError)
u = await A(u);
throw u;
}
if (r._options.onDownloadProgress) {
if (typeof r._options.onDownloadProgress != "function")
throw new TypeError("The `onDownloadProgress` option must be a function");
if (!v)
throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");
return r._stream(_.clone(), r._options.onDownloadProgress);
}
return _;
}, a = r._options.retry.methods.includes(r.request.method.toLowerCase()) ? r._retry(i) : i();
for (const [_, u] of Object.entries(G))
a[_] = async () => {
r.request.headers.set("accept", r.request.headers.get("accept") || u);
const R = (await a).clone();
if (_ === "json") {
if (R.status === 204 || (await R.clone().arrayBuffer()).byteLength === 0)
return "";
if (s.parseJson)
return s.parseJson(await R.text());
}
return R[_]();
};
return a;
}
// eslint-disable-next-line complexity
constructor(e, s = {}) {
if (Object.defineProperty(this, "request", {
enumerable: !0,
configurable: !0,
writable: !0,
value: void 0
}), Object.defineProperty(this, "abortController", {
enumerable: !0,
configurable: !0,
writable: !0,
value: void 0
}), Object.defineProperty(this, "_retryCount", {
enumerable: !0,
configurable: !0,
writable: !0,
value: 0
}), Object.defineProperty(this, "_input", {
enumerable: !0,
configurable: !0,
writable: !0,
value: void 0
}), Object.defineProperty(this, "_options", {
enumerable: !0,
configurable: !0,
writable: !0,
value: void 0
}), this._input = e, this._options = {
// TODO: credentials can be removed when the spec change is implemented in all browsers. Context: https://www.chromestatus.com/feature/4539473312350208
credentials: this._input.credentials || "same-origin",
...s,
headers: U(this._input.headers, s.headers),
hooks: O({
beforeRequest: [],
beforeRetry: [],
beforeError: [],
afterResponse: []
}, s.hooks),
method: k(s.method ?? this._input.method),
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
prefixUrl: String(s.prefixUrl || ""),
retry: j(s.retry),
throwHttpErrors: s.throwHttpErrors !== !1,
timeout: s.timeout ?? 1e4,
fetch: s.fetch ?? globalThis.fetch.bind(globalThis)
}, typeof this._input != "string" && !(this._input instanceof URL || this._input instanceof globalThis.Request))
throw new TypeError("`input` must be a string, URL, or Request");
if (this._options.prefixUrl && typeof this._input == "string") {
if (this._input.startsWith("/"))
throw new Error("`input` must not begin with a slash when using `prefixUrl`");
this._options.prefixUrl.endsWith("/") || (this._options.prefixUrl += "/"), this._input = this._options.prefixUrl + this._input;
}
if (H) {
if (this.abortController = new globalThis.AbortController(), this._options.signal) {
const r = this._options.signal;
this._options.signal.addEventListener("abort", () => {
this.abortController.abort(r.reason);
});
}
this._options.signal = this.abortController.signal;
}
if (B && (this._options.duplex = "half"), this.request = new globalThis.Request(this._input, this._options), this._options.searchParams) {
const i = "?" + (typeof this._options.searchParams == "string" ? this._options.searchParams.replace(/^\?/, "") : new URLSearchParams(this._options.searchParams).toString()), n = this.request.url.replace(/(?:\?.*?)?(?=#|$)/, i);
(M && this._options.body instanceof globalThis.FormData || this._options.body instanceof URLSearchParams) && !(this._options.headers && this._options.headers["content-type"]) && this.request.headers.delete("content-type"), this.request = new globalThis.Request(new globalThis.Request(n, { ...this.request }), this._options);
}
this._options.json !== void 0 && (this._options.body = JSON.stringify(this._options.json), this.request.headers.set("content-type", this._options.headers.get("content-type") ?? "application/json"), this.request = new globalThis.Request(this.request, { body: this._options.body }));
}
_calculateRetryDelay(e) {
if (this._retryCount++, this._retryCount < this._options.retry.limit && !(e instanceof g)) {
if (e instanceof D) {
if (!this._options.retry.statusCodes.includes(e.response.status))
return 0;
const r = e.response.headers.get("Retry-After");
if (r && this._options.retry.afterStatusCodes.includes(e.response.status)) {
let i = Number(r);
return Number.isNaN(i) ? i = Date.parse(r) - Date.now() : i *= 1e3, this._options.retry.maxRetryAfter !== void 0 && i > this._options.retry.maxRetryAfter ? 0 : i;
}
if (e.response.status === 413)
return 0;
}
const s = this._options.retry.delay(this._retryCount);
return Math.min(this._options.retry.backoffLimit, s);
}
return 0;
}
_decorateResponse(e) {
return this._options.parseJson && (e.json = async () => this._options.parseJson(await e.text())), e;
}
async _retry(e) {
try {
return await e();
} catch (s) {
const r = Math.min(this._calculateRetryDelay(s), N);
if (r !== 0 && this._retryCount > 0) {
await Y(r, { signal: this._options.signal });
for (const i of this._options.hooks.beforeRetry)
if (await i({
request: this.request,
options: this._options,
error: s,
retryCount: this._retryCount
}) === L)
return;
return this._retry(e);
}
throw s;
}
}
async _fetch() {
for (const s of this._options.hooks.beforeRequest) {
const r = await s(this.request, this._options);
if (r instanceof Request) {
this.request = r;
break;
}
if (r instanceof Response)
return r;
}
const e = $(this.request, this._options);
return this._options.timeout === !1 ? this._options.fetch(this.request.clone(), e) : X(this.request.clone(), e, this.abortController, this._options);
}
/* istanbul ignore next */
_stream(e, s) {
const r = Number(e.headers.get("content-length")) || 0;
let i = 0;
return e.status === 204 ? (s && s({ percent: 1, totalBytes: r, transferredBytes: i }, new Uint8Array()), new globalThis.Response(null, {
status: e.status,
statusText: e.statusText,
headers: e.headers
})) : new globalThis.Response(new globalThis.ReadableStream({
async start(n) {
const a = e.body.getReader();
s && s({ percent: 0, transferredBytes: 0, totalBytes: r }, new Uint8Array());
async function _() {
const { done: u, value: A } = await a.read();
if (u) {
n.close();
return;
}
if (s) {
i += A.byteLength;
const R = r === 0 ? 0 : i / r;
s({ percent: R, transferredBytes: i, totalBytes: r }, A);
}
n.enqueue(A), await _();
}
await _();
}
}), {
status: e.status,
statusText: e.statusText,
headers: e.headers
});
}
}
/*! MIT License © Sindre Sorhus */
const p = (t) => {
const e = (s, r) => c.create(s, T(t, r));
for (const s of y)
e[s] = (r, i) => c.create(r, T(t, i, { method: s }));
return e.create = (s) => p(T(s)), e.extend = (s) => p(T(t, s)), e.stop = L, e;
}, K = p(), J = K, h = {
CachedPrices: `${E.ThorswapApi}/tokenlist/cached-price`,
GasRates: `${E.ThorswapApi}/resource-worker/gasPrice/getAll`,
Quote: `${E.ThorswapApi}/aggregator/tokens/quote`,
Txn: `${E.ThorswapApi}/apiusage/v2/txn`,
TokenlistProviders: `${E.ThorswapApi}/tokenlist/providers`,
TokenList: `${E.ThorswapStatic}/token-list`,
Thorname: `${E.ThorswapApi}/thorname`
}, Q = typeof window < "u" ? {} : { referrer: "https://sk.thorswap.net", referer: "https://sk.thorswap.net" }, P = J.create({ headers: Q }), S = {
get: (t, e) => P.get(t, e).json(),
post: (t, e) => P.post(t, e).json()
}, z = ({ tokens: t, ...e }) => {
const s = new URLSearchParams();
return t.filter((r, i, n) => n.findIndex((a) => a === r) === i).forEach((r) => s.append("tokens", JSON.stringify(r))), e.metadata && s.append("metadata", "true"), e.lookup && s.append("lookup", "true"), e.sparkline && s.append("sparkline", "true"), S.post(h.CachedPrices, {
body: s.toString(),
headers: { "Content-Type": "application/x-www-form-urlencoded" }
});
}, U = {
getCachedPrices: a,
getQuote: (_) => N.get(I.Quote, _),
getGasRates: () => N.get(I.GasRates),
getTxnDetails: (_) => N.get(I.Txn, { txHash: _ }),
getTokenlistProviders: () => N.get(I.TokenlistProviders),
getTokenList: (_) => N.get(`${I.TokenList}/${_}.json`),
getThornameAddresses: (_) => N.get(`${I.Thorname}/${_}`),
getThornameRegisteredChains: (_) => N.get(`${I.Thorname}/chains/${_}`),
getThornameRlookup: (_, S) => N.get(`${I.Thorname}/rlookup`, { address: _, chain: S })
}, ot = {
getCachedPrices: z,
getQuote: (t) => S.get(h.Quote, { searchParams: t }),
getGasRates: () => S.get(h.GasRates),
getTxnDetails: (t) => S.get(h.Txn, { searchParams: t }),
getTokenlistProviders: () => S.get(h.TokenlistProviders),
getTokenList: (t) => S.get(`${h.TokenList}/${t}.json`),
getThornameAddresses: (t) => S.get(`${h.Thorname}/${t}`),
getThornameRegisteredChains: (t) => S.get(`${h.Thorname}/chains/${t}`),
getThornameRlookup: (t, e) => S.get(`${h.Thorname}/rlookup`, { searchParams: { address: t, chain: e } })
};
var P = /* @__PURE__ */ ((_) => (_.SWAP_TC_TO_TC = "SWAP:TC-TC", _.SWAP_ETH_TO_TC = "SWAP:ERC20-TC", _.SWAP_TC_TO_ETH = "SWAP:TC-ERC20", _.SWAP_ETH_TO_ETH = "SWAP:ERC20-ERC20", _.SWAP_AVAX_TO_TC = "SWAP:AVAX-TC", _.SWAP_TC_TO_AVAX = "SWAP:TC-AVAX", _.SWAP_AVAX_TO_AVAX = "SWAP:AVAX-AVAX", _.SWAP_ETH_TO_AVAX = "SWAP:ETH-AVAX", _.SWAP_AVAX_TO_ETH = "SWAP:AVAX-ETH", _.SWAP_TC_TO_GAIA = "SWAP:TC-GAIA", _.SWAP_GAIA_TO_TC = "SWAP:GAIA-TC", _.SWAP_TC_TO_BNB = "SWAP:TC-BNB", _.SWAP_BNB_TO_TC = "SWAP:BNB-TC", _.SWAP_TC_TO_BTC = "SWAP:TC-BTC", _.SWAP_BTC_TO_TC = "SWAP:BTC-TC", _.SWAP_TC_TO_BCH = "SWAP:TC-BCH", _.SWAP_BCH_TO_TC = "SWAP:BCH-TC", _.SWAP_TC_TO_LTC = "SWAP:TC-LTC", _.SWAP_LTC_TO_TC = "SWAP:LTC-TC", _.SWAP_TC_TO_DOGE = "SWAP:TC-DOGE", _.SWAP_DOGE_TO_TC = "SWAP:DOGE-TC", _.TC_STATUS = "TC:STATUS", _.TC_TRANSFER = "TC:TRANSFER", _.TC_DEPOSIT = "TC:DEPOSIT", _.TC_SEND = "TC:SEND", _.TC_SWITCH = "TC:SWITCH", _.TC_LP_ADD = "TC:ADDLIQUIDITY", _.TC_LP_WITHDRAW = "TC:WITHDRAW", _.TC_TNS_CREATE = "TC:TNS-CREATE", _.TC_TNS_EXTEND = "TC:TNS-EXTEND", _.TC_TNS_UPDATE = "TC:TNS-UPDATE", _.TC_SAVINGS_ADD = "TC:ADDSAVINGS", _.TC_SAVINGS_WITHDRAW = "TC:WITHDRAWSAVINGS", _.TC_LENDING_OPEN = "TC:LENDINGOPEN", _.TC_LENDING_CLOSE = "TC:LENDINGCLOSE", _.ETH_APPROVAL = "ETH:APPROVAL", _.ETH_STATUS = "ETH:STATUS", _.ETH_TRANSFER_TO_TC = "ETH:TRANSFER:IN", _.ETH_TRANSFER_FROM_TC = "ETH:TRANSFER:OUT", _.AVAX_APPROVAL = "AVAX:APPROVAL", _.AVAX_STATUS = "AVAX:STATUS", _.AVAX_TRANSFER_TO_TC = "AVAX:TRANSFER:IN", _.AVAX_TRANSFER_FROM_TC = "AVAX:TRANSFER:OUT", _.BSC_APPROVAL = "BSC:APPROVAL", _.BSC_STATUS = "BSC:STATUS", _.BSC_TRANSFER_TO_TC = "BSC:TRANSFER:IN", _.BSC_TRANSFER_FROM_TC = "BSC:TRANSFER:OUT", _.APPROVAL = "APPROVAL", _.STATUS = "STATUS", _.TRANSFER_TO_TC = "TRANSFER:IN", _.TRANSFER_FROM_TC = "TRANSFER:OUT", _.UNSUPPORTED = "UNSUPPORTED", _.TC_LENDING = "TC:LENDING", _))(P || {}), d = /* @__PURE__ */ ((_) => (_.PENDING = "pending", _.SUCCESS = "success", _.CANCELLED = "cancelled", _.REFUNDED = "refunded", _.REPLACED = "replaced", _.ERROR = "error", _.UNKNOWN = "unknown", _.NOT_STARTED = "not_started", _.NOT_FOUND = "not_found", _.RETRIES_EXCEEDED = "retries_exceeded", _.STREAMING = "streaming", _))(d || {}), h = /* @__PURE__ */ ((_) => (_[_.NOT_STARTED = 0] = "NOT_STARTED", _[_.SUCCESS = 1] = "SUCCESS", _[_.REFUNDED = 2] = "REFUNDED", _))(h || {});
var Z = /* @__PURE__ */ ((t) => (t.SWAP_TC_TO_TC = "SWAP:TC-TC", t.SWAP_ETH_TO_TC = "SWAP:ERC20-TC", t.SWAP_TC_TO_ETH = "SWAP:TC-ERC20", t.SWAP_ETH_TO_ETH = "SWAP:ERC20-ERC20", t.SWAP_AVAX_TO_TC = "SWAP:AVAX-TC", t.SWAP_TC_TO_AVAX = "SWAP:TC-AVAX", t.SWAP_AVAX_TO_AVAX = "SWAP:AVAX-AVAX", t.SWAP_ETH_TO_AVAX = "SWAP:ETH-AVAX", t.SWAP_AVAX_TO_ETH = "SWAP:AVAX-ETH", t.SWAP_TC_TO_GAIA = "SWAP:TC-GAIA", t.SWAP_GAIA_TO_TC = "SWAP:GAIA-TC", t.SWAP_TC_TO_BNB = "SWAP:TC-BNB", t.SWAP_BNB_TO_TC = "SWAP:BNB-TC", t.SWAP_TC_TO_BTC = "SWAP:TC-BTC", t.SWAP_BTC_TO_TC = "SWAP:BTC-TC", t.SWAP_TC_TO_BCH = "SWAP:TC-BCH", t.SWAP_BCH_TO_TC = "SWAP:BCH-TC", t.SWAP_TC_TO_LTC = "SWAP:TC-LTC", t.SWAP_LTC_TO_TC = "SWAP:LTC-TC", t.SWAP_TC_TO_DOGE = "SWAP:TC-DOGE", t.SWAP_DOGE_TO_TC = "SWAP:DOGE-TC", t.TC_STATUS = "TC:STATUS", t.TC_TRANSFER = "TC:TRANSFER", t.TC_DEPOSIT = "TC:DEPOSIT", t.TC_SEND = "TC:SEND", t.TC_SWITCH = "TC:SWITCH", t.TC_LP_ADD = "TC:ADDLIQUIDITY", t.TC_LP_WITHDRAW = "TC:WITHDRAW", t.TC_TNS_CREATE = "TC:TNS-CREATE", t.TC_TNS_EXTEND = "TC:TNS-EXTEND", t.TC_TNS_UPDATE = "TC:TNS-UPDATE", t.TC_SAVINGS_ADD = "TC:ADDSAVINGS", t.TC_SAVINGS_WITHDRAW = "TC:WITHDRAWSAVINGS", t.TC_LENDING_OPEN = "TC:LENDINGOPEN", t.TC_LENDING_CLOSE = "TC:LENDINGCLOSE", t.ETH_APPROVAL = "ETH:APPROVAL", t.ETH_STATUS = "ETH:STATUS", t.ETH_TRANSFER_TO_TC = "ETH:TRANSFER:IN", t.ETH_TRANSFER_FROM_TC = "ETH:TRANSFER:OUT", t.AVAX_APPROVAL = "AVAX:APPROVAL", t.AVAX_STATUS = "AVAX:STATUS", t.AVAX_TRANSFER_TO_TC = "AVAX:TRANSFER:IN", t.AVAX_TRANSFER_FROM_TC = "AVAX:TRANSFER:OUT", t.BSC_APPROVAL = "BSC:APPROVAL", t.BSC_STATUS = "BSC:STATUS", t.BSC_TRANSFER_TO_TC = "BSC:TRANSFER:IN", t.BSC_TRANSFER_FROM_TC = "BSC:TRANSFER:OUT", t.APPROVAL = "APPROVAL", t.STATUS = "STATUS", t.TRANSFER_TO_TC = "TRANSFER:IN", t.TRANSFER_FROM_TC = "TRANSFER:OUT", t.UNSUPPORTED = "UNSUPPORTED", t.TC_LENDING = "TC:LENDING", t))(Z || {}), tt = /* @__PURE__ */ ((t) => (t.PENDING = "pending", t.SUCCESS = "success", t.CANCELLED = "cancelled", t.REFUNDED = "refunded", t.REPLACED = "replaced", t.ERROR = "error", t.UNKNOWN = "unknown", t.NOT_STARTED = "not_started", t.NOT_FOUND = "not_found", t.RETRIES_EXCEEDED = "retries_exceeded", t.STREAMING = "streaming", t))(tt || {}), et = /* @__PURE__ */ ((t) => (t[t.NOT_STARTED = 0] = "NOT_STARTED", t[t.SUCCESS = 1] = "SUCCESS", t[t.REFUNDED = 2] = "REFUNDED", t))(et || {});
export {
h as StreamingSwapProgressStatus,
U as SwapKitApi,
P as TransactionType,
d as TxStatus
et as StreamingSwapProgressStatus,
ot as SwapKitApi,
Z as TransactionType,
tt as TxStatus
};

5

package.json
{
"author": "swapkit-oss-team",
"dependencies": {
"@swapkit/types": "1.0.0-rc.6"
"ky": "1.1.3",
"@swapkit/types": "1.0.0-rc.7"
},

@@ -39,3 +40,3 @@ "description": "SwapKit Lib swapkit-api",

"types": "./dist/index.d.ts",
"version": "1.0.0-rc.6",
"version": "1.0.0-rc.7",
"scripts": {

@@ -42,0 +43,0 @@ "build": "vite build",

@@ -1,2 +0,2 @@

import { ApiEndpoints, FetchWrapper } from './fetchWrapper.ts';
import { ApiEndpoints, RequestClient } from './fetchWrapper.ts';
import type {

@@ -23,3 +23,4 @@ CachedPricesParams,

return FetchWrapper.post<CachedPricesResponse[]>(ApiEndpoints.CachedPrices, body.toString(), {
return RequestClient.post<CachedPricesResponse[]>(ApiEndpoints.CachedPrices, {
body: body.toString(),
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },

@@ -31,15 +32,17 @@ });

getCachedPrices,
getQuote: (params: QuoteParams) => FetchWrapper.get<QuoteResponse>(ApiEndpoints.Quote, params),
getGasRates: () => FetchWrapper.get<GasRatesResponse>(ApiEndpoints.GasRates),
getTxnDetails: (txHash: string) => FetchWrapper.get<TxnResponse>(ApiEndpoints.Txn, { txHash }),
getQuote: (params: QuoteParams) =>
RequestClient.get<QuoteResponse>(ApiEndpoints.Quote, { searchParams: params }),
getGasRates: () => RequestClient.get<GasRatesResponse>(ApiEndpoints.GasRates),
getTxnDetails: (txHash: string) =>
RequestClient.get<TxnResponse>(ApiEndpoints.Txn, { searchParams: txHash }),
getTokenlistProviders: () =>
FetchWrapper.get<TokenlistProvidersResponse>(ApiEndpoints.TokenlistProviders),
RequestClient.get<TokenlistProvidersResponse>(ApiEndpoints.TokenlistProviders),
getTokenList: (tokenlist: string) =>
FetchWrapper.get(`${ApiEndpoints.TokenList}/${tokenlist}.json`),
RequestClient.get(`${ApiEndpoints.TokenList}/${tokenlist}.json`),
getThornameAddresses: (address: string) =>
FetchWrapper.get<ThornameResponse>(`${ApiEndpoints.Thorname}/${address}`),
RequestClient.get<ThornameResponse>(`${ApiEndpoints.Thorname}/${address}`),
getThornameRegisteredChains: (address: string) =>
FetchWrapper.get<string[]>(`${ApiEndpoints.Thorname}/chains/${address}`),
RequestClient.get<string[]>(`${ApiEndpoints.Thorname}/chains/${address}`),
getThornameRlookup: (address: string, chain: string) =>
FetchWrapper.get(`${ApiEndpoints.Thorname}/rlookup`, { address, chain }),
RequestClient.get(`${ApiEndpoints.Thorname}/rlookup`, { searchParams: { address, chain } }),
};
import { ApiUrl } from '@swapkit/types';
import type { Options } from 'ky';
import ky from 'ky';
import type { ApiParams } from './types/index.ts';
type RequestConfig = {
onError?: (error: any) => void;
headers?: Record<string, string>;
};
const paramsToString = (params: { [key: string]: any }) => {
if ('recipientAddress' in params && params.recipientAddress) {
params.recipientAddress = params.recipientAddress.replace(/(bchtest:|bitcoincash:)/, '');
}
return new URLSearchParams(params).toString();
};
/**

@@ -31,20 +18,13 @@ * Api Wrapper helpers

export const FetchWrapper = {
get: <T>(url: string, params?: ApiParams, config?: RequestConfig) =>
fetch(`${url}${params ? `?${paramsToString(params)}` : ''}`, {
referrer: 'https://sk.thorswap.net',
})
.then((res) => res.json() as Promise<T>)
.catch((error) => {
console.error(error);
config?.onError?.(error);
return Promise.reject(error);
}),
post: <T>(url: string, params: ApiParams | string, config?: RequestConfig) =>
fetch(url, {
method: 'POST',
referrer: 'https://sk.thorswap.net',
headers: { 'Content-Type': 'application/json', ...(config?.headers || {}) },
body: typeof params === 'string' ? params : paramsToString(params),
}).then((res) => res.json() as Promise<T>),
const headers =
typeof window !== 'undefined'
? {}
: { referrer: 'https://sk.thorswap.net', referer: 'https://sk.thorswap.net' };
const kyClient = ky.create({ headers });
export const RequestClient = {
get: <T>(url: string | URL | Request, options?: Options) => kyClient.get(url, options).json<T>(),
post: <T>(url: string | URL | Request, options?: Options) =>
kyClient.post(url, options).json<T>(),
};

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc