@363045841yyt/klinechart-core 0.8.3 → 0.8.5

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.
Files changed (63) hide show
  1. package/dist/config/chartSettings.d.ts +1 -1
  2. package/dist/config/chartSettings.d.ts.map +1 -1
  3. package/dist/config/chartSettings.js +8 -4
  4. package/dist/config/chartSettings.js.map +1 -1
  5. package/dist/controllers/createChartController.d.ts +1 -1
  6. package/dist/controllers/createChartController.d.ts.map +1 -1
  7. package/dist/controllers/createChartController.js +13 -1
  8. package/dist/controllers/createChartController.js.map +1 -1
  9. package/dist/controllers/index.d.ts +1 -0
  10. package/dist/controllers/index.d.ts.map +1 -1
  11. package/dist/controllers/index.js +1 -0
  12. package/dist/controllers/index.js.map +1 -1
  13. package/dist/controllers/types.d.ts +3 -1
  14. package/dist/controllers/types.d.ts.map +1 -1
  15. package/dist/data-fetchers/dataBuffer.d.ts.map +1 -1
  16. package/dist/data-fetchers/dataBuffer.js +1 -4
  17. package/dist/data-fetchers/dataBuffer.js.map +1 -1
  18. package/dist/data-fetchers/gotdx.d.ts.map +1 -1
  19. package/dist/data-fetchers/gotdx.js +1 -0
  20. package/dist/data-fetchers/gotdx.js.map +1 -1
  21. package/dist/engine/data/chartDataManager.js +1 -1
  22. package/dist/engine/data/chartDataManager.js.map +1 -1
  23. package/dist/engine/indicators/registerBuiltins.d.ts +2 -40
  24. package/dist/engine/indicators/registerBuiltins.d.ts.map +1 -1
  25. package/dist/engine/indicators/registerBuiltins.js +55 -42
  26. package/dist/engine/indicators/registerBuiltins.js.map +1 -1
  27. package/dist/engine/renderers/Indicator/index.d.ts +0 -39
  28. package/dist/engine/renderers/Indicator/index.d.ts.map +1 -1
  29. package/dist/engine/renderers/Indicator/index.js +0 -78
  30. package/dist/engine/renderers/Indicator/index.js.map +1 -1
  31. package/dist/engine/renderers/Indicator/indicatorCatalog.d.ts +1 -3
  32. package/dist/engine/renderers/Indicator/indicatorCatalog.d.ts.map +1 -1
  33. package/dist/engine/renderers/Indicator/indicatorCatalog.js +27 -17
  34. package/dist/engine/renderers/Indicator/indicatorCatalog.js.map +1 -1
  35. package/dist/mcp/chartBridge.d.ts +3 -0
  36. package/dist/mcp/chartBridge.d.ts.map +1 -1
  37. package/dist/mcp/chartBridge.js +13 -1
  38. package/dist/mcp/chartBridge.js.map +1 -1
  39. package/dist/utils/kLineDraw/axis.js +1 -1
  40. package/dist/utils/kLineDraw/axis.js.map +1 -1
  41. package/dist/version.d.ts +1 -1
  42. package/dist/version.js +1 -1
  43. package/package.json +3 -2
  44. package/src/config/chartSettings.ts +14 -10
  45. package/src/controllers/createChartController.ts +13 -1
  46. package/src/controllers/index.ts +1 -0
  47. package/src/controllers/types.ts +3 -1
  48. package/src/data-fetchers/__tests__/dataBuffer.test.ts +1 -1
  49. package/src/data-fetchers/dataBuffer.ts +1 -4
  50. package/src/data-fetchers/gotdx.ts +2 -0
  51. package/src/engine/__tests__/chart.dpr.test.ts +6 -1
  52. package/src/engine/data/chartDataManager.ts +1 -1
  53. package/src/engine/indicators/__tests__/chartIndicatorManager.test.ts +6 -1
  54. package/src/engine/indicators/__tests__/registerBuiltins.test.ts +6 -2
  55. package/src/engine/indicators/__tests__/scheduler.test.ts +8 -3
  56. package/src/engine/indicators/__tests__/stateComposer.test.ts +6 -2
  57. package/src/engine/indicators/registerBuiltins.ts +58 -42
  58. package/src/engine/renderers/Indicator/__tests__/createSubIndicatorRenderer.test.ts +6 -2
  59. package/src/engine/renderers/Indicator/index.ts +0 -92
  60. package/src/engine/renderers/Indicator/indicatorCatalog.ts +28 -19
  61. package/src/mcp/chartBridge.ts +18 -1
  62. package/src/utils/kLineDraw/axis.ts +1 -1
  63. package/src/version.ts +1 -1
@@ -6,6 +6,7 @@ export interface ChartBridgeOptions {
6
6
  sessionId?: string
7
7
  autoReconnect?: boolean
8
8
  reconnectDelay?: number
9
+ maxReconnectDelay?: number
9
10
  heartbeatInterval?: number
10
11
  wsImpl?: new (url: string) => WebSocket
11
12
  }
@@ -22,6 +23,7 @@ export class ChartBridge {
22
23
  readonly sessionId: string
23
24
  private readonly autoReconnect: boolean
24
25
  private readonly reconnectDelay: number
26
+ private readonly maxReconnectDelay: number
25
27
  private readonly heartbeatInterval: number
26
28
  private readonly onToolCall: ToolCallHandler
27
29
 
@@ -29,6 +31,7 @@ export class ChartBridge {
29
31
  private ws: WebSocket | null = null
30
32
  private reconnectTimer: ReturnType<typeof setTimeout> | null = null
31
33
  private heartbeatTimer: ReturnType<typeof setInterval> | null = null
34
+ private _reconnectAttempt = 0
32
35
  private destroyed = false
33
36
 
34
37
  private listeners = new Map<ChartBridgeEvent, Set<MessageHandler>>()
@@ -42,6 +45,7 @@ export class ChartBridge {
42
45
  this.sessionId = options.sessionId ?? crypto.randomUUID()
43
46
  this.autoReconnect = options.autoReconnect ?? true
44
47
  this.reconnectDelay = options.reconnectDelay ?? 3000
48
+ this.maxReconnectDelay = options.maxReconnectDelay ?? 30_000
45
49
  this.heartbeatInterval = options.heartbeatInterval ?? 30_000
46
50
  this.onToolCall = options.onToolCall
47
51
  this.wsImpl = options.wsImpl ?? WebSocket
@@ -59,6 +63,7 @@ export class ChartBridge {
59
63
  const ws = new this.wsImpl(this.wsUrl)
60
64
 
61
65
  ws.onopen = () => {
66
+ this._reconnectAttempt = 0
62
67
  this.ws = ws
63
68
  console.info(
64
69
  `[ChartBridge] WS opened → sending register (sessionId=${this.sessionId})`,
@@ -115,6 +120,7 @@ export class ChartBridge {
115
120
 
116
121
  destroy(): void {
117
122
  this.destroyed = true
123
+ this._reconnectAttempt = 0
118
124
  this.disconnect()
119
125
  this.listeners.clear()
120
126
  }
@@ -188,11 +194,22 @@ export class ChartBridge {
188
194
 
189
195
  private scheduleReconnect(): void {
190
196
  this.cancelReconnect()
197
+ const base = this.reconnectDelay
198
+ const attempt = this._reconnectAttempt
199
+ const exponential = Math.min(base * Math.pow(2, attempt), this.maxReconnectDelay)
200
+ const jitter = 0.5 + Math.random() * 0.5
201
+ const delay = Math.round(exponential * jitter)
202
+
203
+ this._reconnectAttempt = attempt + 1
204
+ console.info(
205
+ `[ChartBridge] reconnect scheduled in ${delay}ms (attempt ${attempt + 1})`,
206
+ )
207
+
191
208
  this.reconnectTimer = setTimeout(() => {
192
209
  if (!this.destroyed) {
193
210
  this.connect()
194
211
  }
195
- }, this.reconnectDelay)
212
+ }, delay)
196
213
  }
197
214
 
198
215
  private cancelReconnect(): void {
@@ -505,7 +505,7 @@ export function drawAxisPriceLabel(ctx: CanvasRenderingContext2D, opts: AxisPric
505
505
 
506
506
  const centerX = x + width / 2
507
507
  ctx.fillStyle = textColor
508
- ctx.fillText(priceText, roundToPhysicalPixel(centerX, dpr), alignToPhysicalPixelCenter(yy, dpr))
508
+ ctx.fillText(priceText, roundToPhysicalPixel(centerX, dpr), roundToPhysicalPixel(yy, dpr) + 1)
509
509
 
510
510
  ctx.restore()
511
511
  }
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = "0.8.3"
1
+ export const VERSION = "0.8.5"