velo-plot 1.15.0 → 2.0.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-BhQ4j7f5.js} +2213 -1489
- package/dist/ChartCore-BhQ4j7f5.js.map +1 -0
- package/dist/SciPlot-GJvw7GJo.js +463 -0
- package/dist/SciPlot-GJvw7GJo.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/axisFormat-SPX-CD5s.js +200 -0
- package/dist/axisFormat-SPX-CD5s.js.map +1 -0
- package/dist/core/InteractionManager.d.ts +1 -0
- package/dist/core/OverlayRenderer.d.ts +13 -0
- package/dist/core/chart/ChartAlerts.d.ts +42 -0
- package/dist/core/chart/ChartCore.d.ts +24 -1
- package/dist/core/chart/ChartRenderLoop.d.ts +9 -2
- package/dist/core/chart/ChartRenderer.d.ts +8 -2
- package/dist/core/chart/candlestickMarkers.d.ts +23 -0
- package/dist/core/chart/heikinAshi.d.ts +10 -0
- package/dist/core/chart/positionLines.d.ts +12 -0
- package/dist/core/chart/series/types.d.ts +2 -2
- package/dist/core/chart/types.d.ts +9 -0
- package/dist/core/format/axisFormat.d.ts +2 -1
- 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 +45 -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/core/time/applyTimeScale.d.ts +10 -0
- package/dist/createStackedChart-DJSmqerD.js +706 -0
- package/dist/createStackedChart-DJSmqerD.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-DjeWClO9.js → index-CWipqOLP.js} +2 -2
- package/dist/{index-DjeWClO9.js.map → index-CWipqOLP.js.map} +1 -1
- 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-fpZ1dYN0.js} +3 -3
- package/dist/{index.core-C_-CFftD.js.map → index.core-fpZ1dYN0.js.map} +1 -1
- package/dist/index.d.ts +17 -4
- package/dist/indicators--eJGmVox.js +302 -0
- package/dist/indicators--eJGmVox.js.map +1 -0
- package/dist/mockDatafeed-Cdg5hKEo.js +511 -0
- package/dist/mockDatafeed-Cdg5hKEo.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 +29 -0
- package/dist/plugins/drawing-tools/measure.d.ts +21 -0
- package/dist/plugins/drawing-tools/snapToCandle.d.ts +21 -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/tools.js +1 -1
- 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 +5 -5
- 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/trading/datafeed.d.ts +48 -0
- package/dist/trading/index.d.ts +29 -0
- package/dist/trading/mockDatafeed.d.ts +9 -0
- package/dist/trading/ohlcvGenerator.d.ts +25 -0
- package/dist/trading.d.ts +1 -0
- package/dist/trading.js +95 -0
- package/dist/trading.js.map +1 -0
- package/dist/types.d.ts +22 -2
- package/dist/velo-plot.full.js +1088 -776
- package/dist/velo-plot.full.js.map +1 -1
- package/dist/velo-plot.js +15 -15
- 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 +23 -1
- package/dist/ChartCore-BimVvUEg.js.map +0 -1
- package/dist/axisFormat-B7o_uIEA.js +0 -127
- package/dist/axisFormat-B7o_uIEA.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 C, f as I, c as M, d as R, g as _, r as
|
|
1
|
+
import { A as r, D as s, l as t, f as n, L as i, j as g, u as l, N as o, a5 as c, S as E, c as m, N as u, a4 as T, v as A, B as N, k as f, o as L, F as P, y as d } from "./ChartCore-BhQ4j7f5.js";
|
|
2
|
+
import { E as h } from "./axisFormat-SPX-CD5s.js";
|
|
3
|
+
import { h as C, f as I, c as M, d as R, g as _, r as v } from "./index.core-fpZ1dYN0.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
|
+
h as EventEmitter,
|
|
10
10
|
i as LIGHT_THEME,
|
|
11
11
|
g as LinearScale,
|
|
12
12
|
l as LogScale,
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
o as NativeWebGLRenderer,
|
|
14
|
+
c as PluginManagerImpl,
|
|
15
15
|
E as Series,
|
|
16
16
|
m as createChart,
|
|
17
17
|
C as createConfigurablePlugin,
|
|
18
|
-
|
|
18
|
+
u as createNativeRenderer,
|
|
19
19
|
I as createPlugin,
|
|
20
|
-
|
|
20
|
+
T as createPluginContext,
|
|
21
21
|
M as createRenderer,
|
|
22
22
|
A as createScale,
|
|
23
23
|
N as createTheme,
|
|
24
24
|
R as definePlugin,
|
|
25
|
-
|
|
25
|
+
f as easings,
|
|
26
26
|
_ as getPluginRegistry,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
L as getSharedAnimationEngine,
|
|
28
|
+
P as getThemeByName,
|
|
29
|
+
d as parseColor,
|
|
30
|
+
v 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": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"author": "jigonzalez930209",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -34,6 +34,10 @@
|
|
|
34
34
|
"types": "./dist/index.d.ts",
|
|
35
35
|
"import": "./dist/velo-plot.full.js"
|
|
36
36
|
},
|
|
37
|
+
"./trading": {
|
|
38
|
+
"types": "./dist/trading/index.d.ts",
|
|
39
|
+
"import": "./dist/trading.js"
|
|
40
|
+
},
|
|
37
41
|
"./react": {
|
|
38
42
|
"types": "./dist/react/index.d.ts",
|
|
39
43
|
"import": "./dist/react.js"
|
|
@@ -173,11 +177,13 @@
|
|
|
173
177
|
"react-dom": ">=16.8.0"
|
|
174
178
|
},
|
|
175
179
|
"devDependencies": {
|
|
180
|
+
"@playwright/test": "^1.52.0",
|
|
176
181
|
"@types/node": "^25.0.3",
|
|
177
182
|
"@types/react": "^18.2.0",
|
|
178
183
|
"@types/react-dom": "^18.2.0",
|
|
179
184
|
"@vitest/coverage-v8": "^3.2.6",
|
|
180
185
|
"happy-dom": "^20.10.6",
|
|
186
|
+
"playwright": "^1.52.0",
|
|
181
187
|
"typescript": "^5.2.2",
|
|
182
188
|
"vite": "^5.0.0",
|
|
183
189
|
"vite-plugin-dts": "^3.6.0",
|
|
@@ -192,6 +198,22 @@
|
|
|
192
198
|
"test": "vitest run",
|
|
193
199
|
"test:coverage": "vitest run --coverage",
|
|
194
200
|
"test:watch": "vitest",
|
|
201
|
+
"test:dom": "vitest run .dom.test.ts",
|
|
202
|
+
"test:e2e": "playwright test",
|
|
203
|
+
"test:e2e:artifacts": "E2E_FULL_ARTIFACTS=1 playwright test",
|
|
204
|
+
"test:e2e:report": "playwright show-report test-results/e2e/report",
|
|
205
|
+
"test:e2e:install": "node scripts/playwright-install.mjs",
|
|
206
|
+
"test:e2e:install:deps": "PLAYWRIGHT_INSTALL_DEPS=1 node scripts/playwright-install.mjs",
|
|
207
|
+
"test:e2e:setup": "pnpm build && pnpm test:e2e:install",
|
|
208
|
+
"test:e2e:ui": "playwright test --ui",
|
|
209
|
+
"test:e2e:headed": "playwright test --headed",
|
|
210
|
+
"test:e2e:chromium": "playwright test --project chromium",
|
|
211
|
+
"test:e2e:firefox": "playwright test --project firefox",
|
|
212
|
+
"test:e2e:webkit": "playwright test --project webkit",
|
|
213
|
+
"test:browser-bench": "node scripts/browser-benchmark.mjs",
|
|
214
|
+
"test:browser-bench:headed": "HEADED=1 node scripts/browser-benchmark.mjs",
|
|
215
|
+
"test:all": "pnpm test && pnpm test:dom && pnpm test:e2e && pnpm test:browser-bench",
|
|
216
|
+
"test:bench-regression": "node scripts/compare-benchmark-regression.mjs",
|
|
195
217
|
"docs:dev": "vitepress dev docs",
|
|
196
218
|
"docs:build": "vitepress build docs",
|
|
197
219
|
"docs:preview": "vitepress preview docs"
|