@forgecharts/sdk 1.5.54 → 1.5.55

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.
@@ -1 +1 @@
1
- {"version":3,"file":"TimeScale.d.ts","sourceRoot":"","sources":["../../src/core/TimeScale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC9G,OAAO,EAAY,YAAY,EAAyB,MAAM,oBAAoB,CAAC;AAEnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAIjD;;;;;;;;GAQG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,mEAAmE;IACnE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAa;IACzC,uFAAuF;IACvF,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,0FAA0F;IAC1F,gBAAgB,EAAE,cAAc,EAAE,CAAM;IACxC,yEAAyE;IACzE,gBAAgB,SAAM;IAGtB,4EAA4E;IAC5E,OAAO,CAAC,SAAS,CAAgB;IACjC;kFAC8E;IAC9E,OAAO,CAAC,YAAY,CAAK;gBAEb,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,gBAAqB;IAenF,IAAI,YAAY,IAAI,SAAS,CAE5B;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,eAAe,IAAI,SAAS,CAE/B;IAED,qFAAqF;IACrF,IAAI,QAAQ,IAAI,SAAS,MAAM,EAAE,CAEhC;IAED,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAIvC,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAIjC;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAkBvC;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA4BjC;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAiBhC,sEAAsE;IACtE,IAAI,YAAY,IAAI,OAAO,CAE1B;IAID;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAYlD;;;OAGG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAY/C;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAE,MAA0B,GAAG,IAAI;IA0BnF;;OAEG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAOlC;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IASvC,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA8K1E;;;OAGG;IACH,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAoBhG,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,aAAa;CAsBtB;AAGD,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"TimeScale.d.ts","sourceRoot":"","sources":["../../src/core/TimeScale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC9G,OAAO,EAAY,YAAY,EAAyB,MAAM,oBAAoB,CAAC;AAEnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAIjD;;;;;;;;GAQG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,mEAAmE;IACnE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAa;IACzC,uFAAuF;IACvF,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,0FAA0F;IAC1F,gBAAgB,EAAE,cAAc,EAAE,CAAM;IACxC,yEAAyE;IACzE,gBAAgB,SAAM;IAGtB,4EAA4E;IAC5E,OAAO,CAAC,SAAS,CAAgB;IACjC;kFAC8E;IAC9E,OAAO,CAAC,YAAY,CAAK;gBAEb,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,gBAAqB;IAenF,IAAI,YAAY,IAAI,SAAS,CAE5B;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,eAAe,IAAI,SAAS,CAE/B;IAED,qFAAqF;IACrF,IAAI,QAAQ,IAAI,SAAS,MAAM,EAAE,CAEhC;IAED,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAIvC,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAIjC;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAkBvC;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA4BjC;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAiBhC,sEAAsE;IACtE,IAAI,YAAY,IAAI,OAAO,CAE1B;IAID;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAYlD;;;OAGG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAY/C;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAE,MAA0B,GAAG,IAAI;IA0BnF;;OAEG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAOlC;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IASvC,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAuM1E;;;OAGG;IACH,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAoBhG,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,aAAa;CAsBtB;AAGD,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatafeedConnector.d.ts","sourceRoot":"","sources":["../../src/datafeed/DatafeedConnector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AA0DhD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACnE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClE,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,iFAAiF;IACjF,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IACzC,wFAAwF;IACxF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IAEzD;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,UAAU,CAAS;IAE3B,oEAAoE;IACpE,OAAO,CAAC,cAAc,CAAS;IAC/B,6FAA6F;IAC7F,OAAO,CAAC,cAAc,CAAS;IAC/B,gFAAgF;IAChF,OAAO,CAAC,eAAe,CAAK;IAC5B;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAAuB;IAC9C;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAa;IAErC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAA8C;gBAE3D,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB;IAQ/E;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IA2KnD;;;;OAIG;IACH,UAAU,IAAI,IAAI;IAIlB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAKrD;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAOf;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IA0G3D,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,aAAa;CAoBtB"}
1
+ {"version":3,"file":"DatafeedConnector.d.ts","sourceRoot":"","sources":["../../src/datafeed/DatafeedConnector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AA2EhD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACnE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClE,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,iFAAiF;IACjF,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IACzC,wFAAwF;IACxF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IAEzD;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,UAAU,CAAS;IAE3B,oEAAoE;IACpE,OAAO,CAAC,cAAc,CAAS;IAC/B,6FAA6F;IAC7F,OAAO,CAAC,cAAc,CAAS;IAC/B,gFAAgF;IAChF,OAAO,CAAC,eAAe,CAAK;IAC5B;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAAuB;IAC9C;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAa;IAErC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAA8C;gBAE3D,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB;IAQ/E;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAuNnD;;;;OAIG;IACH,UAAU,IAAI,IAAI;IAIlB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAKrD;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAOf;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IA0G3D,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,aAAa;CAoBtB"}
package/dist/index.js CHANGED
@@ -483,9 +483,17 @@ var TimeScale = class {
483
483
  const toIdx = this.timeToIndex(this._visibleRange.to);
484
484
  const idxSpan = toIdx - fromIdx;
485
485
  const idxStep = Math.max(1, Math.round(idxSpan / approxTicks));
486
- const span = this._visibleRange.to - this._visibleRange.from;
487
- const step = this._niceTimeStep(span / approxTicks);
488
486
  const startIdx = Math.ceil(fromIdx / idxStep) * idxStep;
487
+ const _tickDeltas = [];
488
+ for (let i = Math.max(0, startIdx); i + idxStep <= Math.min(toIdx, this._barTimes.length - 1); i += idxStep) {
489
+ const a = this._barTimes[Math.round(i)];
490
+ const b = this._barTimes[Math.round(i + idxStep)];
491
+ if (a != null && b != null && b > a) _tickDeltas.push(b - a);
492
+ if (_tickDeltas.length >= 12) break;
493
+ }
494
+ _tickDeltas.sort((p, q) => p - q);
495
+ const _perTick = _tickDeltas.length > 0 ? _tickDeltas[Math.floor(_tickDeltas.length / 2)] : (this._visibleRange.to - this._visibleRange.from) / approxTicks;
496
+ const step = this._niceTimeStep(_perTick);
489
497
  for (let i = startIdx; i <= toIdx; i += idxStep) {
490
498
  const bIdx = Math.round(i);
491
499
  if (bIdx < 0) continue;
@@ -5785,8 +5793,16 @@ var PixiGridRenderer = class {
5785
5793
  const idxStep = Math.max(1, Math.round(rawIdxStep));
5786
5794
  const barTimes = this._timeScale.barTimes;
5787
5795
  const startIdx = Math.ceil(fromIdx / idxStep) * idxStep;
5788
- const span = timeTo - timeFrom;
5789
- const step = this._niceTimeStep(span / approxTicks);
5796
+ const _tickDeltas = [];
5797
+ for (let i = Math.max(0, startIdx); i + idxStep <= Math.min(toIdx, barTimes.length - 1); i += idxStep) {
5798
+ const a = barTimes[Math.round(i)];
5799
+ const b = barTimes[Math.round(i + idxStep)];
5800
+ if (a != null && b != null && b > a) _tickDeltas.push(b - a);
5801
+ if (_tickDeltas.length >= 12) break;
5802
+ }
5803
+ _tickDeltas.sort((p, q) => p - q);
5804
+ const _perTick = _tickDeltas.length > 0 ? _tickDeltas[Math.floor(_tickDeltas.length / 2)] : (timeTo - timeFrom) / approxTicks;
5805
+ const step = this._niceTimeStep(_perTick);
5790
5806
  for (let i = startIdx; i <= toIdx; i += idxStep) {
5791
5807
  const bIdx = Math.round(i);
5792
5808
  if (bIdx < 0) continue;
@@ -10344,6 +10360,29 @@ function _historyWindow(tf) {
10344
10360
  return 500 * (parseTfSeconds(tf) ?? 3600);
10345
10361
  }
10346
10362
  var BATCH_SUPPRESSION_MS = 1e4;
10363
+ var TF_SECONDS = {
10364
+ "1s": 1,
10365
+ "5s": 5,
10366
+ "10s": 10,
10367
+ "15s": 15,
10368
+ "30s": 30,
10369
+ "1m": 60,
10370
+ "3m": 180,
10371
+ "5m": 300,
10372
+ "15m": 900,
10373
+ "30m": 1800,
10374
+ "1h": 3600,
10375
+ "2h": 7200,
10376
+ "4h": 14400,
10377
+ "6h": 21600,
10378
+ "8h": 28800,
10379
+ "12h": 43200,
10380
+ "1D": 86400,
10381
+ "3D": 259200,
10382
+ "1W": 604800,
10383
+ "1M": 2592e3
10384
+ };
10385
+ var LIVE_GAP_REPAIR_DELAY_MS = 3e3;
10347
10386
  function _pageSize(tf) {
10348
10387
  return 500 * (parseTfSeconds(tf) ?? 3600);
10349
10388
  }
@@ -10471,15 +10510,36 @@ var DatafeedConnector = class {
10471
10510
  this._batchSafetyTimer = null;
10472
10511
  }, BATCH_SUPPRESSION_MS);
10473
10512
  }
10513
+ const tfSec = TF_SECONDS[timeframe] ?? 0;
10514
+ let lastSeenBarTime = lastBarTime ?? 0;
10515
+ let repairTimer = null;
10516
+ const repairGap = (fromTime, toTime) => {
10517
+ if (repairTimer) clearTimeout(repairTimer);
10518
+ repairTimer = setTimeout(() => {
10519
+ repairTimer = null;
10520
+ if (this._activeUID !== uid || this._destroyed) return;
10521
+ void this._datafeed.getHistoricalBars(symbol, timeframe, fromTime, toTime).then(({ bars: filled }) => {
10522
+ if (this._activeUID !== uid || filled.length === 0) return;
10523
+ engine.backfillGap(filled);
10524
+ }).catch(() => {
10525
+ });
10526
+ }, LIVE_GAP_REPAIR_DELAY_MS);
10527
+ };
10474
10528
  this._datafeed.subscribeBars(symbol, timeframe, (bar) => {
10475
- if (this._activeUID === uid) {
10476
- engine.applyLiveUpdate(bar);
10529
+ if (this._activeUID !== uid) return;
10530
+ const t = bar.time;
10531
+ if (tfSec > 0 && lastSeenBarTime > 0 && t > lastSeenBarTime + tfSec) {
10532
+ repairGap(lastSeenBarTime, t);
10477
10533
  }
10534
+ if (t > lastSeenBarTime) lastSeenBarTime = t;
10535
+ engine.applyLiveUpdate(bar);
10478
10536
  }, uid, lastBarTime, (bars) => {
10479
10537
  this._clearBatchTimer();
10480
10538
  batchPending = false;
10481
10539
  if (this._activeUID === uid) {
10482
10540
  engine.backfillGap(bars);
10541
+ const newest = bars.length > 0 ? bars[bars.length - 1].time : 0;
10542
+ if (newest > lastSeenBarTime) lastSeenBarTime = newest;
10483
10543
  }
10484
10544
  fireLoaded();
10485
10545
  });
@@ -25516,7 +25576,7 @@ var demonstrationTool = {
25516
25576
  };
25517
25577
 
25518
25578
  // src/version.ts
25519
- var FORGECHARTS_VERSION = "1.5.54" ;
25579
+ var FORGECHARTS_VERSION = "1.5.55" ;
25520
25580
 
25521
25581
  // src/compatibility.ts
25522
25582
  var MIN_KIT_API = 1;