@bcswaper/apis
Version:
bcswaper apis
1 lines • 1.02 kB
JavaScript
import{conerr}from"../utils";import{ClientSettings}from"../context";import{reverseResolution}from"./okxContext";export class CandlesHandler{constructor(e,t){this.symbol=e,this.clientCallBackFuncs=t,this.candleMap=new Map}async initialize(e,t){let n=[];this.candleMap.set(e,n),t?.forEach((e=>{const t=this.convertCandle(e);n.push(t)}))}async resolve(e,t){if(0===t?.length)return;const n=t[0],r=this.candleMap.get(e)||[];if(0==r?.length)return void conerr(`no initialize candles for symbol ${this.symbol}/${e}`);const s=this.convertCandle(n);if(r[0].startedAt===s.startedAt?r[0]=s:(r.unshift(s),r.length>ClientSettings.ListLenths&&r.pop()),this.clientCallBackFuncs.candleFunc){const t=reverseResolution(e);if(!t)return void conerr("resolution converted error: ",e);await this.clientCallBackFuncs.candleFunc(s,t)}}getCandles(e){return this.candleMap.get(e)||[]}convertCandle(e){return{startedAt:e[0],open:Number(e[1]),high:Number(e[2]),low:Number(e[3]),close:Number(e[4]),baseTokenVolume:Number(e[5]),usdVolume:Number(e[5])}}}