velo-plot 1.15.0 → 1.19.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/dist/{ChartCore-BimVvUEg.js → ChartCore-DQ691eXH.js} +1523 -996
- package/dist/ChartCore-DQ691eXH.js.map +1 -0
- package/dist/assets/downsample.worker-C70QJ04y.js +2 -0
- package/dist/assets/downsample.worker-C70QJ04y.js.map +1 -0
- package/dist/assets/indicator.worker-bv0zC4EX.js +2 -0
- package/dist/assets/indicator.worker-bv0zC4EX.js.map +1 -0
- package/dist/core/OverlayRenderer.d.ts +2 -0
- package/dist/core/chart/ChartAlerts.d.ts +42 -0
- package/dist/core/chart/ChartCore.d.ts +19 -1
- package/dist/core/chart/ChartRenderLoop.d.ts +4 -2
- package/dist/core/chart/ChartRenderer.d.ts +3 -2
- package/dist/core/chart/candlestickMarkers.d.ts +23 -0
- package/dist/core/chart/heikinAshi.d.ts +10 -0
- package/dist/core/chart/series/types.d.ts +2 -2
- package/dist/core/chart/types.d.ts +7 -0
- package/dist/core/indicator/addIndicator.d.ts +36 -0
- package/dist/core/indicator/index.d.ts +2 -0
- package/dist/core/indicator/indicatorPresets.d.ts +37 -0
- package/dist/core/series/Series.d.ts +3 -0
- package/dist/core/stacked/types.d.ts +8 -0
- package/dist/core/time/TimeScale.d.ts +31 -0
- package/dist/createStackedChart-BPooTQ9z.js +1164 -0
- package/dist/createStackedChart-BPooTQ9z.js.map +1 -0
- package/dist/gpu/adapter/gpuRenderer.d.ts +21 -0
- package/dist/gpu/backends/webgpu/WebGPUBackend.d.ts +2 -1
- package/dist/gpuRenderer-BpaMYz-k.js +1848 -0
- package/dist/gpuRenderer-BpaMYz-k.js.map +1 -0
- package/dist/index-D7dTq6VB.js +503 -0
- package/dist/index-D7dTq6VB.js.map +1 -0
- package/dist/{index-Ce2JgkH_.js → index-DoYxf1cV.js} +86 -43
- package/dist/{index-Ce2JgkH_.js.map → index-DoYxf1cV.js.map} +1 -1
- package/dist/{index.core-C_-CFftD.js → index.core-BtGFYMOu.js} +2 -2
- package/dist/{index.core-C_-CFftD.js.map → index.core-BtGFYMOu.js.map} +1 -1
- package/dist/index.d.ts +12 -4
- package/dist/indicators--eJGmVox.js +302 -0
- package/dist/indicators--eJGmVox.js.map +1 -0
- package/dist/plugins/analysis.js +530 -807
- package/dist/plugins/analysis.js.map +1 -1
- package/dist/plugins/caching.js +26 -21
- package/dist/plugins/caching.js.map +1 -1
- package/dist/plugins/drawing-tools/index.d.ts +16 -0
- package/dist/plugins/gpu.js +202 -1895
- package/dist/plugins/gpu.js.map +1 -1
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/keyboard/index.d.ts +1 -7
- package/dist/plugins/keyboard.js +1 -1
- package/dist/plugins/lazy-load/types.d.ts +7 -0
- package/dist/plugins/lazy-load.js +131 -108
- package/dist/plugins/lazy-load.js.map +1 -1
- package/dist/plugins/replay/index.d.ts +19 -0
- package/dist/plugins/virtualization/types.d.ts +12 -0
- package/dist/plugins/virtualization.js +1 -1
- package/dist/pool-15HMCNv8.js +88 -0
- package/dist/pool-15HMCNv8.js.map +1 -0
- package/dist/react.js +2 -2
- package/dist/renderer/CandlestickRenderer.d.ts +1 -1
- package/dist/renderer/ChartSeriesRenderer.d.ts +6 -0
- package/dist/renderer/GpuChartRenderer.d.ts +23 -0
- package/dist/renderer/index.d.ts +3 -0
- package/dist/renderer/spike/WebGLGridSpike.d.ts +40 -0
- package/dist/testing/baselines/v1.15.0.json.d.ts +51 -0
- package/dist/testing/gridSpikeBenchmark.d.ts +49 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/rendererBenchmark.d.ts +13 -0
- package/dist/testing/stage1BrowserBench.d.ts +42 -0
- package/dist/types.d.ts +21 -1
- package/dist/velo-plot.full.js +1322 -789
- package/dist/velo-plot.full.js.map +1 -1
- package/dist/velo-plot.js +20 -20
- package/dist/workers/downsample.d.ts +38 -0
- package/dist/workers/downsampleAsync.d.ts +6 -0
- package/dist/workers/indicator.worker.d.ts +32 -0
- package/dist/workers/indicatorsAsync.d.ts +26 -0
- package/dist/workers/pool.d.ts +36 -0
- package/package.json +11 -1
- package/dist/ChartCore-BimVvUEg.js.map +0 -1
- package/dist/createStackedChart-CjsKcOvX.js +0 -1088
- package/dist/createStackedChart-CjsKcOvX.js.map +0 -1
- package/dist/index-ChgIdk3N.js +0 -229
- package/dist/index-ChgIdk3N.js.map +0 -1
package/dist/velo-plot.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { A as r,
|
|
2
|
-
import { E as
|
|
3
|
-
import { h as
|
|
1
|
+
import { A as r, D as s, h as t, x as n, u as i, L as g, n as o, N as c, a3 as l, S as E, c as m, N as u, a2 as T, o as A, y as N, f, j as L, z as P, t as d } from "./ChartCore-DQ691eXH.js";
|
|
2
|
+
import { E as S } from "./axisFormat-B7o_uIEA.js";
|
|
3
|
+
import { h as x, f as C, c as I, d as M, g as R, r as _ } from "./index.core-BtGFYMOu.js";
|
|
4
4
|
export {
|
|
5
5
|
r as AnimationEngine,
|
|
6
6
|
s as DARK_THEME,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
t as DEFAULT_ANIMATION_CONFIG,
|
|
8
|
+
n as DEFAULT_THEME,
|
|
9
|
+
S as EventEmitter,
|
|
10
10
|
i as LIGHT_THEME,
|
|
11
11
|
g as LinearScale,
|
|
12
|
-
|
|
12
|
+
o as LogScale,
|
|
13
13
|
c as NativeWebGLRenderer,
|
|
14
|
-
|
|
14
|
+
l as PluginManagerImpl,
|
|
15
15
|
E as Series,
|
|
16
16
|
m as createChart,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
x as createConfigurablePlugin,
|
|
18
|
+
u as createNativeRenderer,
|
|
19
|
+
C as createPlugin,
|
|
20
|
+
T as createPluginContext,
|
|
21
|
+
I as createRenderer,
|
|
22
22
|
A as createScale,
|
|
23
23
|
N as createTheme,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
M as definePlugin,
|
|
25
|
+
f as easings,
|
|
26
|
+
R as getPluginRegistry,
|
|
27
|
+
L as getSharedAnimationEngine,
|
|
28
|
+
P as getThemeByName,
|
|
29
|
+
d as parseColor,
|
|
30
|
+
_ as registerPlugin
|
|
31
31
|
};
|
|
32
32
|
//# sourceMappingURL=velo-plot.js.map
|
|
@@ -32,3 +32,41 @@ export declare function minMaxDownsample(x: Float32Array | Float64Array, y: Floa
|
|
|
32
32
|
* Calculate optimal target points based on canvas width
|
|
33
33
|
*/
|
|
34
34
|
export declare function calculateTargetPoints(dataLength: number, canvasWidth: number, pointsPerPixel?: number): number;
|
|
35
|
+
export interface OhlcDownsampleResult {
|
|
36
|
+
x: Float32Array;
|
|
37
|
+
open: Float32Array;
|
|
38
|
+
high: Float32Array;
|
|
39
|
+
low: Float32Array;
|
|
40
|
+
close: Float32Array;
|
|
41
|
+
indices: Uint32Array;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Aggregate OHLC bars into fewer buckets while preserving extremes.
|
|
45
|
+
* Each bucket: open=first open, close=last close, high=max high, low=min low, x=last x.
|
|
46
|
+
*/
|
|
47
|
+
export declare function ohlcMinMaxDownsample(x: Float32Array | Float64Array, open: Float32Array | Float64Array, high: Float32Array | Float64Array, low: Float32Array | Float64Array, close: Float32Array | Float64Array, targetBars: number): OhlcDownsampleResult;
|
|
48
|
+
/** Binary search lower bound: first index where x[i] >= value */
|
|
49
|
+
export declare function lowerBoundX(x: Float32Array | Float64Array, value: number): number;
|
|
50
|
+
/** Binary search upper bound: first index where x[i] > value */
|
|
51
|
+
export declare function upperBoundX(x: Float32Array | Float64Array, value: number): number;
|
|
52
|
+
export interface ViewportSlice {
|
|
53
|
+
x: Float32Array;
|
|
54
|
+
y?: Float32Array;
|
|
55
|
+
open?: Float32Array;
|
|
56
|
+
high?: Float32Array;
|
|
57
|
+
low?: Float32Array;
|
|
58
|
+
close?: Float32Array;
|
|
59
|
+
start: number;
|
|
60
|
+
end: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Slice sorted x-series to visible range plus buffer (fraction of visible width).
|
|
64
|
+
*/
|
|
65
|
+
export declare function sliceSeriesToViewport(source: {
|
|
66
|
+
x: Float32Array | Float64Array;
|
|
67
|
+
y?: Float32Array | Float64Array;
|
|
68
|
+
open?: Float32Array | Float64Array;
|
|
69
|
+
high?: Float32Array | Float64Array;
|
|
70
|
+
low?: Float32Array | Float64Array;
|
|
71
|
+
close?: Float32Array | Float64Array;
|
|
72
|
+
}, xMin: number, xMax: number, bufferRatio?: number): ViewportSlice;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { OhlcDownsampleResult, DownsampleResult } from './downsample';
|
|
2
|
+
|
|
3
|
+
export declare function downsampleAsync(x: Float32Array, y: Float32Array, targetPoints: number, algorithm?: "lttb" | "minmax"): Promise<DownsampleResult>;
|
|
4
|
+
export declare function ohlcDownsampleAsync(x: Float32Array, open: Float32Array, high: Float32Array, low: Float32Array, close: Float32Array, targetBars: number): Promise<OhlcDownsampleResult>;
|
|
5
|
+
export declare function destroyDownsamplePool(): void;
|
|
6
|
+
export declare function getDownsamplePoolSize(): number;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Indicator calculations in a Web Worker.
|
|
3
|
+
* @module workers/indicator.worker
|
|
4
|
+
*/
|
|
5
|
+
interface IndicatorTask {
|
|
6
|
+
id: string;
|
|
7
|
+
type: "indicator";
|
|
8
|
+
indicator: "rsi" | "macd" | "bollingerBands" | "sma" | "ema";
|
|
9
|
+
data: Float32Array | Float64Array;
|
|
10
|
+
period?: number;
|
|
11
|
+
fastPeriod?: number;
|
|
12
|
+
slowPeriod?: number;
|
|
13
|
+
signalPeriod?: number;
|
|
14
|
+
stdDev?: number;
|
|
15
|
+
}
|
|
16
|
+
interface IndicatorResultMessage {
|
|
17
|
+
id: string;
|
|
18
|
+
type: "indicator-result";
|
|
19
|
+
indicator: string;
|
|
20
|
+
values: Float32Array;
|
|
21
|
+
signal?: Float32Array;
|
|
22
|
+
upper?: Float32Array;
|
|
23
|
+
lower?: Float32Array;
|
|
24
|
+
histogram?: Float32Array;
|
|
25
|
+
duration: number;
|
|
26
|
+
}
|
|
27
|
+
interface ErrorMessage {
|
|
28
|
+
id: string;
|
|
29
|
+
type: "error";
|
|
30
|
+
error: string;
|
|
31
|
+
}
|
|
32
|
+
export type { IndicatorTask, IndicatorResultMessage, ErrorMessage };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { IndicatorResult } from '../plugins/analysis/indicators';
|
|
2
|
+
|
|
3
|
+
/** Async RSI — non-blocking for large datasets */
|
|
4
|
+
export declare function rsiAsync(data: Float32Array | Float64Array | number[], period?: number): Promise<IndicatorResult & {
|
|
5
|
+
duration: number;
|
|
6
|
+
}>;
|
|
7
|
+
/** Async SMA */
|
|
8
|
+
export declare function smaAsync(data: Float32Array | Float64Array | number[], period?: number): Promise<IndicatorResult & {
|
|
9
|
+
duration: number;
|
|
10
|
+
}>;
|
|
11
|
+
/** Async EMA */
|
|
12
|
+
export declare function emaAsync(data: Float32Array | Float64Array | number[], period?: number): Promise<IndicatorResult & {
|
|
13
|
+
duration: number;
|
|
14
|
+
}>;
|
|
15
|
+
/** Async MACD */
|
|
16
|
+
export declare function macdAsync(data: Float32Array | Float64Array | number[], fastPeriod?: number, slowPeriod?: number, signalPeriod?: number): Promise<IndicatorResult & {
|
|
17
|
+
duration: number;
|
|
18
|
+
}>;
|
|
19
|
+
/** Async Bollinger Bands */
|
|
20
|
+
export declare function bollingerBandsAsync(data: Float32Array | Float64Array | number[], period?: number, stdDev?: number): Promise<IndicatorResult & {
|
|
21
|
+
duration: number;
|
|
22
|
+
}>;
|
|
23
|
+
/** Destroy the shared indicator worker pool (for tests) */
|
|
24
|
+
export declare function destroyIndicatorPool(): void;
|
|
25
|
+
/** Exposed for tests */
|
|
26
|
+
export declare function getIndicatorPoolSize(): number;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic worker pool with round-robin dispatch and sync fallback.
|
|
3
|
+
* @module workers/pool
|
|
4
|
+
*/
|
|
5
|
+
export interface WorkerPoolOptions {
|
|
6
|
+
/** Number of workers (default: 2) */
|
|
7
|
+
poolSize?: number;
|
|
8
|
+
/** Run tasks on main thread when Worker is unavailable */
|
|
9
|
+
syncFallback?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare class WorkerPool<TMessage extends {
|
|
12
|
+
id: string;
|
|
13
|
+
}, TResult = unknown> {
|
|
14
|
+
private workers;
|
|
15
|
+
private pending;
|
|
16
|
+
private nextWorker;
|
|
17
|
+
private readonly poolSize;
|
|
18
|
+
private readonly syncFallback;
|
|
19
|
+
private readonly workerFactory;
|
|
20
|
+
private readonly syncHandler?;
|
|
21
|
+
private destroyed;
|
|
22
|
+
constructor(workerFactory: () => Worker, options?: WorkerPoolOptions & {
|
|
23
|
+
syncHandler?: (task: TMessage) => TResult | Promise<TResult>;
|
|
24
|
+
});
|
|
25
|
+
private removeWorker;
|
|
26
|
+
private workerErrorMessage;
|
|
27
|
+
private rejectPendingWithSyncFallback;
|
|
28
|
+
private spawnWorker;
|
|
29
|
+
/** Dispatch a task to the pool. Falls back to syncHandler when no workers exist. */
|
|
30
|
+
run(task: TMessage): Promise<TResult>;
|
|
31
|
+
size(): number;
|
|
32
|
+
pendingCount(): number;
|
|
33
|
+
destroy(): void;
|
|
34
|
+
}
|
|
35
|
+
/** Generate a unique task id */
|
|
36
|
+
export declare function nextTaskId(prefix?: string): string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "velo-plot",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.19.0",
|
|
4
4
|
"author": "jigonzalez930209",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -173,11 +173,13 @@
|
|
|
173
173
|
"react-dom": ">=16.8.0"
|
|
174
174
|
},
|
|
175
175
|
"devDependencies": {
|
|
176
|
+
"@playwright/test": "^1.52.0",
|
|
176
177
|
"@types/node": "^25.0.3",
|
|
177
178
|
"@types/react": "^18.2.0",
|
|
178
179
|
"@types/react-dom": "^18.2.0",
|
|
179
180
|
"@vitest/coverage-v8": "^3.2.6",
|
|
180
181
|
"happy-dom": "^20.10.6",
|
|
182
|
+
"playwright": "^1.52.0",
|
|
181
183
|
"typescript": "^5.2.2",
|
|
182
184
|
"vite": "^5.0.0",
|
|
183
185
|
"vite-plugin-dts": "^3.6.0",
|
|
@@ -192,6 +194,14 @@
|
|
|
192
194
|
"test": "vitest run",
|
|
193
195
|
"test:coverage": "vitest run --coverage",
|
|
194
196
|
"test:watch": "vitest",
|
|
197
|
+
"test:dom": "vitest run .dom.test.ts",
|
|
198
|
+
"test:e2e": "playwright test",
|
|
199
|
+
"test:e2e:ui": "playwright test --ui",
|
|
200
|
+
"test:e2e:headed": "playwright test --headed",
|
|
201
|
+
"test:browser-bench": "node scripts/browser-benchmark.mjs",
|
|
202
|
+
"test:browser-bench:headed": "HEADED=1 node scripts/browser-benchmark.mjs",
|
|
203
|
+
"test:all": "pnpm test && pnpm test:dom && pnpm test:e2e && pnpm test:browser-bench",
|
|
204
|
+
"test:bench-regression": "node scripts/compare-benchmark-regression.mjs",
|
|
195
205
|
"docs:dev": "vitepress dev docs",
|
|
196
206
|
"docs:build": "vitepress build docs",
|
|
197
207
|
"docs:preview": "vitepress preview docs"
|