@baron1996/klinecharts-runtime 0.7.2 → 0.8.0

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.
package/README.md CHANGED
@@ -4,7 +4,7 @@ Browser editing runtime and standard annotation toolbar for deterministic KLineC
4
4
  ChartScene files.
5
5
 
6
6
  ```bash
7
- npm install --save-exact @baron1996/kline-scene-schema@0.6.0 @baron1996/klinecharts-runtime@0.7.2
7
+ npm install --save-exact @baron1996/kline-scene-schema@0.6.0 @baron1996/klinecharts-runtime@0.8.0
8
8
  ```
9
9
 
10
10
  ```ts
@@ -1,5 +1,5 @@
1
- import type { ChartScene, Drawing } from '@baron1996/kline-scene-schema';
2
- import type { EngineDrawingSnapshot, EnginePixelCoordinate, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
1
+ import type { ChartScene, Drawing, MarketData } from '@baron1996/kline-scene-schema';
2
+ import type { EngineHistoricalDataCommitResult, EngineDrawingSnapshot, EnginePixelCoordinate, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
3
3
  import type { HostActionDescriptor, RuntimeCapabilityDescriptor } from './runtime-capability-descriptor.js';
4
4
  /** 公共 Drawing 能力;工具栏与所有正式交互式图表 Runtime 共用。 */
5
5
  export interface DrawingRuntimeCapability {
@@ -35,4 +35,9 @@ export interface RuntimeAuxiliaryCapability {
35
35
  };
36
36
  requestHostAction(actionId: string, drawingId?: string | null): void;
37
37
  }
38
+ /** 由宿主接管网络请求的更早行情能力。 */
39
+ export interface HistoricalDataRuntimeCapability {
40
+ commitHistoricalData(requestId: string, data: readonly MarketData[], hasMore: boolean): EngineHistoricalDataCommitResult;
41
+ rejectHistoricalData(requestId: string, message: string): boolean;
42
+ }
38
43
  //# sourceMappingURL=capabilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/drawing/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,OAAO,EACP,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACX,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EACX,oBAAoB,EACpB,2BAA2B,EAC3B,MAAM,oCAAoC,CAAC;AAG5C,8CAA8C;AAC9C,MAAM,WAAW,wBAAwB;IACxC,YAAY,CACX,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EACrB,OAAO,CAAC,EAAE;QACT,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;KACrD,GACC,MAAM,CAAC;IACV,YAAY,IAAI,SAAS,qBAAqB,EAAE,CAAC;IACjD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAC;IAC1D,mBAAmB,CAClB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GACvB,qBAAqB,CAAC;IACzB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAAC;IACnE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAAC;IAC3C,cAAc,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAAC;CAC5D;AAED,MAAM,WAAW,0BAA0B;IAC1C,8BAA8B,CAAC,OAAO,CAAC,EAAE;QACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;KACvD,GAAG,2BAA2B,CAAC;IAChC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG;QAClC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;QACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACxE,yBAAyB,CACxB,YAAY,EAAE,sBAAsB,GAClC;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;CACrE"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/drawing/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,OAAO,EACP,UAAU,EACV,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACX,gCAAgC,EAChC,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EACX,oBAAoB,EACpB,2BAA2B,EAC3B,MAAM,oCAAoC,CAAC;AAG5C,8CAA8C;AAC9C,MAAM,WAAW,wBAAwB;IACxC,YAAY,CACX,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EACrB,OAAO,CAAC,EAAE;QACT,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;KACrD,GACC,MAAM,CAAC;IACV,YAAY,IAAI,SAAS,qBAAqB,EAAE,CAAC;IACjD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAC;IAC1D,mBAAmB,CAClB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GACvB,qBAAqB,CAAC;IACzB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAAC;IACnE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAAC;IAC3C,cAAc,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAAC;CAC5D;AAED,MAAM,WAAW,0BAA0B;IAC1C,8BAA8B,CAAC,OAAO,CAAC,EAAE;QACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;KACvD,GAAG,2BAA2B,CAAC;IAChC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG;QAClC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;QACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACxE,yBAAyB,CACxB,YAAY,EAAE,sBAAsB,GAClC;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;CACrE;AAED,wBAAwB;AACxB,MAAM,WAAW,+BAA+B;IAC/C,oBAAoB,CACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,UAAU,EAAE,EAC3B,OAAO,EAAE,OAAO,GACd,gCAAgC,CAAC;IACpC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CAClE"}
@@ -3,13 +3,18 @@ import { type DrawingEnginePort, type DrawingProjectionPolicy } from '@baron1996
3
3
  export interface SceneRuntimeRegistration {
4
4
  readonly sceneKind: 'chart' | 'time-series';
5
5
  parseScene(value: unknown): ChartScene | TimeSeriesScene;
6
- createAdapter(container: HTMLElement, workspace: DrawableWorkspaceDocument): Promise<DrawingEnginePort>;
6
+ createAdapter(container: HTMLElement, workspace: DrawableWorkspaceDocument, options?: SceneRuntimeAdapterOptions): Promise<DrawingEnginePort>;
7
7
  createPolicy(): DrawingProjectionPolicy;
8
8
  readonly defaultTarget: {
9
9
  readonly paneRole: string;
10
10
  readonly yAxisRole: 'primary';
11
11
  };
12
12
  }
13
+ export interface SceneRuntimeAdapterOptions {
14
+ readonly historicalDataLoading?: {
15
+ readonly hasMore: boolean;
16
+ };
17
+ }
13
18
  export declare function registerSceneRuntime(registration: SceneRuntimeRegistration): void;
14
19
  export declare function getSceneRuntime(kind: 'chart' | 'time-series'): SceneRuntimeRegistration;
15
20
  //# sourceMappingURL=scene-runtime-factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scene-runtime-factory.d.ts","sourceRoot":"","sources":["../../src/drawing/scene-runtime-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,yBAAyB,EACzB,eAAe,EACf,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAKN,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,aAAa,CAAC;IAC5C,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,eAAe,CAAC;IACzD,aAAa,CACZ,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,yBAAyB,GAClC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,YAAY,IAAI,uBAAuB,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;KAC9B,CAAC;CACF;AAID,wBAAgB,oBAAoB,CACnC,YAAY,EAAE,wBAAwB,GACpC,IAAI,CAEN;AAED,wBAAgB,eAAe,CAC9B,IAAI,EAAE,OAAO,GAAG,aAAa,GAC3B,wBAAwB,CAM1B"}
1
+ {"version":3,"file":"scene-runtime-factory.d.ts","sourceRoot":"","sources":["../../src/drawing/scene-runtime-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,yBAAyB,EACzB,eAAe,EACf,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAKN,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,aAAa,CAAC;IAC5C,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,eAAe,CAAC;IACzD,aAAa,CACZ,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,yBAAyB,EACpC,OAAO,CAAC,EAAE,0BAA0B,GAClC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,YAAY,IAAI,uBAAuB,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;KAC9B,CAAC;CACF;AAED,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,qBAAqB,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAC/D;AAID,wBAAgB,oBAAoB,CACnC,YAAY,EAAE,wBAAwB,GACpC,IAAI,CAEN;AAED,wBAAgB,eAAe,CAC9B,IAAI,EAAE,OAAO,GAAG,aAAa,GAC3B,wBAAwB,CAM1B"}
@@ -14,7 +14,7 @@ export function getSceneRuntime(kind) {
14
14
  registerSceneRuntime({
15
15
  sceneKind: 'chart',
16
16
  parseScene: (value) => parseChartScene(value),
17
- createAdapter: (container, workspace) => KLineChartsSceneAdapter.createWorkspace(container, workspace),
17
+ createAdapter: (container, workspace, options) => KLineChartsSceneAdapter.createWorkspace(container, workspace, options),
18
18
  createPolicy: () => new KLineDrawingProjectionPolicy(),
19
19
  defaultTarget: { paneRole: 'candle', yAxisRole: 'primary' },
20
20
  });
@@ -1,5 +1,6 @@
1
1
  import type { ChartScene, DrawingDocument, TimeSeriesScene } from '@baron1996/kline-scene-schema';
2
2
  import type { EngineDrawingSnapshot } from '@baron1996/klinecharts-adapter';
3
+ import type { EngineHistoricalDataRequest } from '@baron1996/klinecharts-adapter';
3
4
  import type { ActiveMainSeriesType } from '@baron1996/klinecharts-adapter';
4
5
  export declare const WORKSPACE_EVENT_PROTOCOL: "@baron1996/drawable-workspace-events";
5
6
  export declare const WORKSPACE_EVENT_PROTOCOL_VERSION: "1.0.0";
@@ -42,6 +43,18 @@ export type WorkspaceRuntimeEvent = ({
42
43
  } | {
43
44
  readonly type: 'scene-replaced';
44
45
  readonly scene: WorkspaceSceneSnapshot;
46
+ } | ({
47
+ readonly type: 'historical-data-requested';
48
+ } & EngineHistoricalDataRequest) | {
49
+ readonly type: 'historical-data-appended';
50
+ readonly requestId: string;
51
+ readonly addedCount: number;
52
+ readonly totalCount: number;
53
+ readonly hasMore: boolean;
54
+ } | {
55
+ readonly type: 'historical-data-rejected';
56
+ readonly requestId: string;
57
+ readonly message: string;
45
58
  } | {
46
59
  readonly type: 'value-axis-scale-changed';
47
60
  readonly scale: 'linear' | 'logarithmic';
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-events.d.ts","sourceRoot":"","sources":["../../src/drawing/workspace-events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-events.d.ts","sourceRoot":"","sources":["../../src/drawing/workspace-events.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import type { ChartScene, DrawableWorkspaceDocument, Drawing, DrawingDocument, TimeSeriesScene } from '@baron1996/kline-scene-schema';
2
- import type { EngineDrawingSnapshot, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
3
- import type { DrawingRuntimeCapability, RuntimeAuxiliaryCapability } from './capabilities.js';
1
+ import type { ChartScene, DrawableWorkspaceDocument, Drawing, DrawingDocument, MarketData, TimeSeriesScene } from '@baron1996/kline-scene-schema';
2
+ import type { EngineDrawingSnapshot, EngineHistoricalDataCommitResult, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
3
+ import type { DrawingRuntimeCapability, HistoricalDataRuntimeCapability, RuntimeAuxiliaryCapability } from './capabilities.js';
4
4
  import type { HostActionDescriptor, RuntimeCapabilityDescriptor } from './runtime-capability-descriptor.js';
5
5
  import { DrawingSessionController } from './session-controller.js';
6
6
  import { type WorkspaceRuntimeListener } from './workspace-events.js';
@@ -8,8 +8,11 @@ export interface DrawableWorkspaceRuntimeOptions {
8
8
  readonly commitMode: 'immediate' | 'host-confirmed';
9
9
  readonly onEvent?: WorkspaceRuntimeListener;
10
10
  readonly hostActions?: readonly HostActionDescriptor[];
11
+ readonly historicalDataLoading?: {
12
+ readonly hasMore: boolean;
13
+ };
11
14
  }
12
- export interface DrawableWorkspaceRuntimeHandle extends DrawingRuntimeCapability, RuntimeAuxiliaryCapability {
15
+ export interface DrawableWorkspaceRuntimeHandle extends DrawingRuntimeCapability, HistoricalDataRuntimeCapability, RuntimeAuxiliaryCapability {
13
16
  }
14
17
  /**
15
18
  * 组合 Scene Adapter、Drawing 会话与公共能力的工作区 Runtime。
@@ -58,6 +61,8 @@ export declare class DrawableWorkspaceRuntime implements DrawableWorkspaceRuntim
58
61
  readonly activeType: string;
59
62
  };
60
63
  replaceScene(scene: ChartScene | TimeSeriesScene): ChartScene | TimeSeriesScene;
64
+ commitHistoricalData(requestId: string, data: readonly MarketData[], hasMore: boolean): EngineHistoricalDataCommitResult;
65
+ rejectHistoricalData(requestId: string, message: string): boolean;
61
66
  commitDrawingChange(requestId: string, canonicalHash: string): boolean;
62
67
  rejectDrawingChange(requestId: string): boolean;
63
68
  requestHostAction(actionId: string, drawingId?: string | null): void;
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-runtime.d.ts","sourceRoot":"","sources":["../../src/drawing/workspace-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-runtime.d.ts","sourceRoot":"","sources":["../../src/drawing/workspace-runtime.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,8 @@ export class DrawableWorkspaceRuntime {
53
53
  /** 宿主确认策略在 Runtime 生命周期内不可切换。 */
54
54
  #commitMode;
55
55
  #listeners = new Set();
56
+ /** 释放历史行情请求订阅,避免 Runtime 销毁后宿主收到旧请求。 */
57
+ #unsubscribeHistoricalData;
56
58
  #sequence = 0;
57
59
  #destroyed = false;
58
60
  #scene;
@@ -81,11 +83,25 @@ export class DrawableWorkspaceRuntime {
81
83
  if (options.onEvent !== undefined) {
82
84
  this.#listeners.add(options.onEvent);
83
85
  }
86
+ const historicalDataPort = this.#historicalDataPort();
87
+ this.#unsubscribeHistoricalData = options.historicalDataLoading === undefined
88
+ ? undefined
89
+ : historicalDataPort?.subscribeHistoricalDataRequests((request) => {
90
+ this.#emit({ type: 'historical-data-requested', ...request });
91
+ });
84
92
  }
85
93
  static async create(container, value, options) {
86
94
  const workspace = parseDrawableWorkspaceDocument(value);
95
+ if (options.historicalDataLoading !== undefined &&
96
+ workspace.scene.kind !== 'chart') {
97
+ throw new Error('HISTORICAL_DATA_UNSUPPORTED: only chart Workspaces support historical data loading.');
98
+ }
87
99
  const registration = getSceneRuntime(workspace.scene.kind);
88
- const engine = await registration.createAdapter(container, workspace);
100
+ const engine = await registration.createAdapter(container, workspace, {
101
+ ...(options.historicalDataLoading === undefined
102
+ ? {}
103
+ : { historicalDataLoading: options.historicalDataLoading }),
104
+ });
89
105
  return new DrawableWorkspaceRuntime(container, workspace, engine, options);
90
106
  }
91
107
  /** 跨周期等宿主编排只能连接显式 host-confirmed Runtime。 */
@@ -266,6 +282,36 @@ export class DrawableWorkspaceRuntime {
266
282
  this.#emit({ type: 'scene-replaced', scene: { kind: this.#sceneKind(), document: applied } });
267
283
  return structuredClone(applied);
268
284
  }
285
+ commitHistoricalData(requestId, data, hasMore) {
286
+ this.#assertUsable();
287
+ const port = this.#requireHistoricalDataPort();
288
+ const current = parseChartScene(this.#scene);
289
+ const candidate = parseChartScene({
290
+ ...structuredClone(current),
291
+ data: [...structuredClone(data), ...structuredClone(current.data)],
292
+ });
293
+ const result = this.#session.replaceProjectionScene({ kind: 'chart', document: candidate }, () => port.commitHistoricalData(requestId, data, hasMore));
294
+ this.#scene = result.scene;
295
+ this.#emit({
296
+ type: 'historical-data-appended',
297
+ requestId,
298
+ addedCount: result.addedCount,
299
+ totalCount: result.scene.data.length,
300
+ hasMore: result.hasMore,
301
+ });
302
+ return {
303
+ ...result,
304
+ scene: structuredClone(result.scene),
305
+ };
306
+ }
307
+ rejectHistoricalData(requestId, message) {
308
+ this.#assertUsable();
309
+ const rejected = this.#requireHistoricalDataPort().rejectHistoricalData(requestId);
310
+ if (rejected) {
311
+ this.#emit({ type: 'historical-data-rejected', requestId, message });
312
+ }
313
+ return rejected;
314
+ }
269
315
  commitDrawingChange(requestId, canonicalHash) {
270
316
  return this.#session.commitDrawingChange(requestId, canonicalHash);
271
317
  }
@@ -284,6 +330,7 @@ export class DrawableWorkspaceRuntime {
284
330
  return;
285
331
  }
286
332
  this.#destroyed = true;
333
+ this.#unsubscribeHistoricalData?.();
287
334
  this.#session.destroy();
288
335
  this.#engine.dispose();
289
336
  this.#listeners.clear();
@@ -324,6 +371,21 @@ export class DrawableWorkspaceRuntime {
324
371
  #sceneKind() {
325
372
  return 'panes' in this.#scene ? 'chart' : 'time-series';
326
373
  }
374
+ #historicalDataPort() {
375
+ const candidate = this.#engine;
376
+ return (typeof candidate.subscribeHistoricalDataRequests === 'function' &&
377
+ typeof candidate.commitHistoricalData === 'function' &&
378
+ typeof candidate.rejectHistoricalData === 'function')
379
+ ? candidate
380
+ : undefined;
381
+ }
382
+ #requireHistoricalDataPort() {
383
+ const port = this.#historicalDataPort();
384
+ if (port === undefined) {
385
+ throw new Error('HISTORICAL_DATA_UNSUPPORTED: the current Scene Adapter has no historical data port.');
386
+ }
387
+ return port;
388
+ }
327
389
  #emit(event) {
328
390
  const envelope = deepFreeze({
329
391
  protocol: WORKSPACE_EVENT_PROTOCOL,
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Web Runtime npm 包版本;ChartScene runtimeVersion 是独立的数据契约版本。 */
2
- export declare const WEB_RUNTIME_PACKAGE_VERSION: "0.7.2";
2
+ export declare const WEB_RUNTIME_PACKAGE_VERSION: "0.8.0";
3
3
  export { SUPPORTED_OVERLAYS } from '@baron1996/klinecharts-adapter';
4
4
  export * from './cross-period/coordinator.js';
5
5
  export * from './drawing/capabilities.js';
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Web Runtime npm 包版本;ChartScene runtimeVersion 是独立的数据契约版本。 */
2
- export const WEB_RUNTIME_PACKAGE_VERSION = '0.7.2';
2
+ export const WEB_RUNTIME_PACKAGE_VERSION = '0.8.0';
3
3
  export { SUPPORTED_OVERLAYS } from '@baron1996/klinecharts-adapter';
4
4
  export * from './cross-period/coordinator.js';
5
5
  export * from './drawing/capabilities.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baron1996/klinecharts-runtime",
3
- "version": "0.7.2",
3
+ "version": "0.8.0",
4
4
  "description": "Web runtime for deterministic KLineCharts scenes.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@baron1996/kline-scene-schema": "0.6.0",
43
- "@baron1996/klinecharts-adapter": "0.6.0",
43
+ "@baron1996/klinecharts-adapter": "0.8.0",
44
44
  "@js-temporal/polyfill": "0.5.1"
45
45
  }
46
46
  }