From 677de70372f132a10782e3c1c1cfff70caa1232a Mon Sep 17 00:00:00 2001 From: Jack Waller Date: Fri, 2 May 2025 12:16:36 +1000 Subject: [PATCH 1/2] fix: null check on switchboard oracles --- package.json | 5 +++- src/index.ts | 5 ++-- yarn.lock | 75 ++++++++-------------------------------------------- 3 files changed, 18 insertions(+), 67 deletions(-) diff --git a/package.json b/package.json index 92695ed..7a79491 100644 --- a/package.json +++ b/package.json @@ -75,5 +75,8 @@ "lint": "eslint . --ext ts --quiet", "lint:fix": "eslint . --ext ts --fix", "playground": "ts-node src/playground.ts" - } + }, + "resolutions": { + "rpc-websockets": "^10.0.0" + } } diff --git a/src/index.ts b/src/index.ts index 6fc4c8b..494e957 100644 --- a/src/index.ts +++ b/src/index.ts @@ -564,6 +564,7 @@ const main = async (): Promise => { const oracleData = isSpot ? driftClient.getOracleDataForSpotMarket(normedMarketIndex) : driftClient.getOracleDataForPerpMarket(normedMarketIndex); + l2Formatted = { bids: [], asks: [], @@ -577,8 +578,8 @@ const main = async (): Promise => { slot: oracleData.slot.toNumber(), confidence: oracleData.confidence.toNumber(), hasSufficientNumberOfDataPoints: true, - twap: oracleData.twap.toNumber(), - twapConfidence: oracleData.twapConfidence.toNumber(), + twap: oracleData.twap?.toNumber(), + twapConfidence: oracleData.twapConfidence?.toNumber(), }, ts: Date.now(), marketSlot: dlobProvider.getSlot(), diff --git a/yarn.lock b/yarn.lock index fb731dc..52a4177 100644 --- a/yarn.lock +++ b/yarn.lock @@ -280,7 +280,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.0" -"@babel/runtime@^7.10.5", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2": +"@babel/runtime@^7.10.5", "@babel/runtime@^7.12.5": version "7.20.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA== @@ -424,7 +424,7 @@ kuler "^2.0.0" "@drift-labs/sdk@file:./drift-common/protocol/sdk", "@drift-labs/sdk@file:drift-common/protocol/sdk": - version "2.119.0-beta.1" + version "2.121.0-beta.5" dependencies: "@coral-xyz/anchor" "0.29.0" "@coral-xyz/anchor-30" "npm:@coral-xyz/anchor@0.30.1" @@ -437,7 +437,8 @@ "@pythnetwork/pyth-solana-receiver" "0.7.0" "@solana/spl-token" "0.3.7" "@solana/web3.js" "1.92.3" - "@switchboard-xyz/on-demand" "2.4.0" + "@switchboard-xyz/common" "3.0.14" + "@switchboard-xyz/on-demand" "2.4.1" "@triton-one/yellowstone-grpc" "1.3.0" anchor-bankrun "0.3.0" nanoid "3.3.4" @@ -454,7 +455,7 @@ "@drift/common@file:./drift-common/common-ts": version "1.0.0" dependencies: - "@drift-labs/sdk" "file:../../Library/Caches/Yarn/v6/npm-@drift-common-1.0.0-68e1e38e-7515-4dc7-b4b3-7b77289d5127-1744653239790/node_modules/@drift/protocol/sdk" + "@drift-labs/sdk" "file:../Library/Caches/Yarn/v6/npm-@drift-common-1.0.0-1145c8b5-7a48-454b-b012-5ee43299f489-1746151901191/node_modules/@drift/protocol/sdk" "@jest/globals" "29.3.1" "@slack/web-api" "6.4.0" "@solana/spl-token" "0.3.8" @@ -2162,7 +2163,7 @@ dependencies: tslib "^2.4.0" -"@switchboard-xyz/common@>=3.0.0": +"@switchboard-xyz/common@3.0.14", "@switchboard-xyz/common@>=3.0.0": version "3.0.14" resolved "https://registry.yarnpkg.com/@switchboard-xyz/common/-/common-3.0.14.tgz#5b363995bd0fefa22198286992dbe54f3e544b08" integrity sha512-LpxzEywO0DjPYIgPzQYkf32C7agwW4YRsPN6BcIvYrw0iJdDMtPZ3SQfIGHLSlD1fwvn2KLUYuGaKegeq4aBTw== @@ -2178,10 +2179,10 @@ protobufjs "^7.4.0" yaml "^2.6.1" -"@switchboard-xyz/on-demand@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@switchboard-xyz/on-demand/-/on-demand-2.4.0.tgz#adb5beaa113fcf3729ffa40bc30f7369900817c2" - integrity sha512-TtBw4CceI44NIWLJzHKTRdSqgIHr34UxUxRhp0r0P7Y1peIXgeJpmzx2Na18dH2XjcsTRcN/5U9Kdfm5bdf0+A== +"@switchboard-xyz/on-demand@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@switchboard-xyz/on-demand/-/on-demand-2.4.1.tgz#3db64b0596d9daa0b010ee44193d5512e0ba512d" + integrity sha512-eSlBp+c8lxpcSgh0/2xK8OaLHPziTSZlcs8V96gZGdiCJz1KgWJRNE1qnIJDOwaGdFecZdwcmajfQRtLRLED3w== dependencies: "@coral-xyz/anchor-30" "npm:@coral-xyz/anchor@0.30.1" "@isaacs/ttlcache" "^1.4.1" @@ -5845,20 +5846,7 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rpc-websockets@7.5.1, rpc-websockets@^7.5.1: - version "7.5.1" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.5.1.tgz#e0a05d525a97e7efc31a0617f093a13a2e10c401" - integrity sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w== - dependencies: - "@babel/runtime" "^7.17.2" - eventemitter3 "^4.0.7" - uuid "^8.3.2" - ws "^8.5.0" - optionalDependencies: - bufferutil "^4.0.1" - utf-8-validate "^5.0.2" - -rpc-websockets@^10.0.0: +rpc-websockets@7.5.1, rpc-websockets@^10.0.0, rpc-websockets@^7.5.0, rpc-websockets@^7.5.1, rpc-websockets@^8.0.1, rpc-websockets@^9.0.2: version "10.0.0" resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-10.0.0.tgz#51ac56503114cce2b7a8d2c3669b8e7a52395c50" integrity sha512-ci68pI2x0TZdrRbpFx8oiBosNUKR1a2Y9kADVwwhX6UUq+B1E9oqNXnxq20WvTwR7+3Dsow1qAtU8pPGoZE4sw== @@ -5874,47 +5862,6 @@ rpc-websockets@^10.0.0: bufferutil "^4.0.1" utf-8-validate "^5.0.2" -rpc-websockets@^7.5.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.5.0.tgz#bbeb87572e66703ff151e50af1658f98098e2748" - integrity sha512-9tIRi1uZGy7YmDjErf1Ax3wtqdSSLIlnmL5OtOzgd5eqPKbsPpwDP5whUDO2LQay3Xp0CcHlcNSGzacNRluBaQ== - dependencies: - "@babel/runtime" "^7.17.2" - eventemitter3 "^4.0.7" - uuid "^8.3.2" - ws "^8.5.0" - optionalDependencies: - bufferutil "^4.0.1" - utf-8-validate "^5.0.2" - -rpc-websockets@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-8.0.2.tgz#c91cb680d6806101bdf7862897bcc43732e20da6" - integrity sha512-QZ8lneJTtIZTf9JBcdUn/im2qDynWRYPKtmF6P9DqtdzqSLebcllYWVQr5aQacAp7LBYPReOW9Ses98dNfO7cA== - dependencies: - eventemitter3 "^4.0.7" - uuid "^8.3.2" - ws "^8.5.0" - optionalDependencies: - bufferutil "^4.0.1" - utf-8-validate "^5.0.2" - -rpc-websockets@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.2.tgz#4c1568d00b8100f997379a363478f41f8f4b242c" - integrity sha512-YzggvfItxMY3Lwuax5rC18inhbjJv9Py7JXRHxTIi94JOLrqBsSsUUc5bbl5W6c11tXhdfpDPK0KzBhoGe8jjw== - dependencies: - "@swc/helpers" "^0.5.11" - "@types/uuid" "^8.3.4" - "@types/ws" "^8.2.2" - buffer "^6.0.3" - eventemitter3 "^5.0.1" - uuid "^8.3.2" - ws "^8.5.0" - optionalDependencies: - bufferutil "^4.0.1" - utf-8-validate "^5.0.2" - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" From a34dd1716eeabbf63fa56348f9d406a91fb2470c Mon Sep 17 00:00:00 2001 From: Jack Waller Date: Fri, 2 May 2025 12:35:58 +1000 Subject: [PATCH 2/2] chore: fix null check on batch call also --- src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index 494e957..536580d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -693,8 +693,8 @@ const main = async (): Promise => { slot: oracleData.slot.toNumber(), confidence: oracleData.confidence.toNumber(), hasSufficientNumberOfDataPoints: true, - twap: oracleData.twap.toNumber(), - twapConfidence: oracleData.twapConfidence.toNumber(), + twap: oracleData.twap?.toNumber(), + twapConfidence: oracleData.twapConfidence?.toNumber(), }, ts: Date.now(), marketSlot: dlobProvider.getSlot(),