@skalenetwork/metaport
Version:
SKALE Metaport Widget
168 lines (167 loc) • 4.15 kB
JavaScript
import { B as l, f as w, s as y, i as p, I as h, h as g, j as k, k as O, m as L, H as m, o as E } from "./index-4375ce67.mjs";
import "react";
import "react/jsx-runtime";
import "react-dom";
class x extends l {
constructor({ callbackSelector: e, cause: r, data: n, extraData: c, sender: d, urls: t }) {
var i;
super(r.shortMessage || "An error occurred while fetching for an offchain result.", {
cause: r,
metaMessages: [
...r.metaMessages || [],
(i = r.metaMessages) != null && i.length ? "" : [],
"Offchain Gateway Call:",
t && [
" Gateway URL(s):",
...t.map((u) => ` ${w(u)}`)
],
` Sender: ${d}`,
` Data: ${n}`,
` Callback selector: ${e}`,
` Extra data: ${c}`
].flat()
}), Object.defineProperty(this, "name", {
enumerable: !0,
configurable: !0,
writable: !0,
value: "OffchainLookupError"
});
}
}
class M extends l {
constructor({ result: e, url: r }) {
super("Offchain gateway response is malformed. Response data must be a hex value.", {
metaMessages: [
`Gateway URL: ${w(r)}`,
`Response: ${y(e)}`
]
}), Object.defineProperty(this, "name", {
enumerable: !0,
configurable: !0,
writable: !0,
value: "OffchainLookupResponseMalformedError"
});
}
}
class R extends l {
constructor({ sender: e, to: r }) {
super("Reverted sender address does not match target contract address (`to`).", {
metaMessages: [
`Contract address: ${r}`,
`OffchainLookup sender address: ${e}`
]
}), Object.defineProperty(this, "name", {
enumerable: !0,
configurable: !0,
writable: !0,
value: "OffchainLookupSenderMismatchError"
});
}
}
function $(o, e) {
if (!p(o))
throw new h({ address: o });
if (!p(e))
throw new h({ address: e });
return o.toLowerCase() === e.toLowerCase();
}
const D = "0x556f1830", S = {
name: "OffchainLookup",
type: "error",
inputs: [
{
name: "sender",
type: "address"
},
{
name: "urls",
type: "string[]"
},
{
name: "callData",
type: "bytes"
},
{
name: "callbackFunction",
type: "bytes4"
},
{
name: "extraData",
type: "bytes"
}
]
};
async function T(o, { blockNumber: e, blockTag: r, data: n, to: c }) {
const { args: d } = g({
data: n,
abi: [S]
}), [t, i, u, a, s] = d;
try {
if (!$(c, t))
throw new R({ sender: t, to: c });
const f = await A({ data: u, sender: t, urls: i }), { data: b } = await k(o, {
blockNumber: e,
blockTag: r,
data: O([
a,
L([{ type: "bytes" }, { type: "bytes" }], [f, s])
]),
to: c
});
return b;
} catch (f) {
throw new x({
callbackSelector: a,
cause: f,
data: n,
extraData: s,
sender: t,
urls: i
});
}
}
async function A({ data: o, sender: e, urls: r }) {
var c;
let n = new Error("An unknown error occurred.");
for (let d = 0; d < r.length; d++) {
const t = r[d], i = t.includes("{data}") ? "GET" : "POST", u = i === "POST" ? { data: o, sender: e } : void 0;
try {
const a = await fetch(t.replace("{sender}", e).replace("{data}", o), {
body: JSON.stringify(u),
method: i
});
let s;
if ((c = a.headers.get("Content-Type")) != null && c.startsWith("application/json") ? s = (await a.json()).data : s = await a.text(), !a.ok) {
n = new m({
body: u,
details: s != null && s.error ? y(s.error) : a.statusText,
headers: a.headers,
status: a.status,
url: t
});
continue;
}
if (!E(s)) {
n = new M({
result: s,
url: t
});
continue;
}
return s;
} catch (a) {
n = new m({
body: u,
details: a.message,
url: t
});
}
}
throw n;
}
export {
A as ccipFetch,
T as offchainLookup,
S as offchainLookupAbiItem,
D as offchainLookupSignature
};