diff --git a/src/publishers/dlobPublisher.ts b/src/publishers/dlobPublisher.ts index 479ac26..9b01bdb 100644 --- a/src/publishers/dlobPublisher.ts +++ b/src/publishers/dlobPublisher.ts @@ -24,6 +24,7 @@ import { SubscriberLookup, getPhoenixSubscriber, getSerumSubscriber, + parsePositiveIntArray, sleep, } from '../utils/utils'; import { @@ -72,12 +73,12 @@ const WS_FALLBACK_FETCH_INTERVAL = 10_000; // comma separated list of perp market indexes to load: i.e. 0,1,2,3 const PERP_MARKETS_TO_LOAD = process.env.PERP_MARKETS_TO_LOAD - ? process.env.PERP_MARKETS_TO_LOAD.split(',').map((m) => parseInt(m)) + ? parsePositiveIntArray(process.env.PERP_MARKETS_TO_LOAD) : undefined; // comma separated list of spot market indexes to load: i.e. 0,1,2,3 const SPOT_MARKETS_TO_LOAD = process.env.SPOT_MARKETS_TO_LOAD - ? process.env.SPOT_MARKETS_TO_LOAD.split(',').map((m) => parseInt(m)) + ? parsePositiveIntArray(process.env.SPOT_MARKETS_TO_LOAD) : undefined; logger.info(`RPC endpoint: ${endpoint}`); diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 7d6e966..5f9db01 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -39,6 +39,17 @@ export function sleep(ms: number): Promise { return new Promise((resolve) => setTimeout(resolve, ms)); } +export function parsePositiveIntArray( + intArray: string, + separator = ',' +): number[] { + return intArray + .split(separator) + .map((s) => s.trim()) + .map((s) => parseInt(s)) + .filter((n) => !isNaN(n) && n > 0); +} + export const getOracleForMarket = ( driftClient: DriftClient, marketType: MarketType,