veilix-sdk 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3658,7 +3658,7 @@ var WITHDRAW_CIRCUIT_SHA256 = {
3658
3658
  zkey: "64a4d915099f6fe6bfa06e151c254843be8773c7991c742260019dc5184e5d82"
3659
3659
  };
3660
3660
  var CIRCUIT_CDN_PACKAGE = "veilix-sdk";
3661
- var CIRCUIT_CDN_VERSION = "0.0.3";
3661
+ var CIRCUIT_CDN_VERSION = "0.0.4";
3662
3662
  function resolveCircuitPathsFromBase(base) {
3663
3663
  const root = base.endsWith("/") ? base : `${base}/`;
3664
3664
  return {
@@ -12573,6 +12573,52 @@ function formatNoteForDisplay(note, segmentLen = 8) {
12573
12573
  (p) => p.length > segmentLen * 2 ? p.slice(0, segmentLen) + "\u2026" + p.slice(-segmentLen) : p
12574
12574
  ).join("-");
12575
12575
  }
12576
+ async function readOracleGatewayUrls(queue) {
12577
+ const oracleKeys = await queue.fetchOracleKeys();
12578
+ if (oracleKeys.length === 0) return [];
12579
+ const rows = await sb.Oracle.loadMany(queue.program, oracleKeys);
12580
+ return rows.map(
12581
+ (row) => row ? Buffer.from(row.gatewayUri).toString("utf8").replace(/\0+$/, "").trim() : ""
12582
+ ).filter((url) => url.length > 0);
12583
+ }
12584
+ async function firstHealthyGatewayUrl(urls) {
12585
+ try {
12586
+ return await Promise.any(
12587
+ urls.map(async (url) => {
12588
+ const response = await fetch(`${url.replace(/\/$/, "")}/gateway/api/v1/test`, {
12589
+ signal: AbortSignal.timeout(8e3)
12590
+ });
12591
+ if (!response.ok) {
12592
+ throw new Error(`gateway ${url} returned ${response.status}`);
12593
+ }
12594
+ return url;
12595
+ })
12596
+ );
12597
+ } catch (error) {
12598
+ const reason = error instanceof Error ? error.message : "unknown error";
12599
+ throw new Error(`veilix-sdk: no healthy Switchboard gateway (${reason})`);
12600
+ }
12601
+ }
12602
+ function crossbarForQueue(queue) {
12603
+ const client = new CrossbarClient("https://crossbar.switchboard.xyz");
12604
+ const fetchGateway = client.fetchGateway.bind(client);
12605
+ client.fetchGateway = async (network) => {
12606
+ try {
12607
+ return await fetchGateway(network);
12608
+ } catch (error) {
12609
+ const message = error instanceof Error ? error.message : "";
12610
+ if (!message.includes("No gateways available")) {
12611
+ throw error;
12612
+ }
12613
+ const urls = await readOracleGatewayUrls(queue);
12614
+ if (urls.length === 0) {
12615
+ throw error;
12616
+ }
12617
+ return new sb.Gateway(await firstHealthyGatewayUrl(urls));
12618
+ }
12619
+ };
12620
+ return client;
12621
+ }
12576
12622
  function getRangeRiskScoreJob(address) {
12577
12623
  return OracleJob.fromObject({
12578
12624
  tasks: [
@@ -12601,7 +12647,7 @@ async function getOracleQuote(payer, addressToCheck) {
12601
12647
  solanaRPCUrl: rpcUrl,
12602
12648
  queueAddress: getDepositQueueAddress()
12603
12649
  });
12604
- const crossbarClient = CrossbarClient.default();
12650
+ const crossbarClient = crossbarForQueue(queue);
12605
12651
  const feed = {
12606
12652
  name: "Risk Score",
12607
12653
  jobs: [getRangeRiskScoreJob(addressToCheck)],
@@ -12625,7 +12671,7 @@ function getProgramId() {
12625
12671
  }
12626
12672
  return _programId;
12627
12673
  }
12628
- var CONFIG_SEED = Buffer.from("veilix-config");
12674
+ var CONFIG_SEED = Buffer.from("config");
12629
12675
  function getPoolPDA(denominationLamports) {
12630
12676
  const buf = Buffer.alloc(8);
12631
12677
  buf.writeBigUInt64BE(BigInt(denominationLamports));