@363045841yyt/klinechart-core 0.8.2 → 0.8.4
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/controllers/createChartController.d.ts +1 -1
- package/dist/controllers/createChartController.d.ts.map +1 -1
- package/dist/controllers/createChartController.js +34 -1
- package/dist/controllers/createChartController.js.map +1 -1
- package/dist/controllers/index.d.ts +1 -0
- package/dist/controllers/index.d.ts.map +1 -1
- package/dist/controllers/index.js +1 -0
- package/dist/controllers/index.js.map +1 -1
- package/dist/controllers/types.d.ts +17 -1
- package/dist/controllers/types.d.ts.map +1 -1
- package/dist/data-fetchers/baostock.d.ts +9 -2
- package/dist/data-fetchers/baostock.d.ts.map +1 -1
- package/dist/data-fetchers/baostock.js +78 -9
- package/dist/data-fetchers/baostock.js.map +1 -1
- package/dist/data-fetchers/fetcherDefinitionRegistry.d.ts +13 -0
- package/dist/data-fetchers/fetcherDefinitionRegistry.d.ts.map +1 -0
- package/dist/data-fetchers/fetcherDefinitionRegistry.js +36 -0
- package/dist/data-fetchers/fetcherDefinitionRegistry.js.map +1 -0
- package/dist/data-fetchers/gotdx.d.ts +9 -2
- package/dist/data-fetchers/gotdx.d.ts.map +1 -1
- package/dist/data-fetchers/gotdx.js +72 -5
- package/dist/data-fetchers/gotdx.js.map +1 -1
- package/dist/data-fetchers/hundred-mock.d.ts +9 -2
- package/dist/data-fetchers/hundred-mock.d.ts.map +1 -1
- package/dist/data-fetchers/hundred-mock.js +66 -4
- package/dist/data-fetchers/hundred-mock.js.map +1 -1
- package/dist/data-fetchers/index.d.ts +7 -5
- package/dist/data-fetchers/index.d.ts.map +1 -1
- package/dist/data-fetchers/index.js +6 -5
- package/dist/data-fetchers/index.js.map +1 -1
- package/dist/data-fetchers/router.d.ts.map +1 -1
- package/dist/data-fetchers/router.js +14 -18
- package/dist/data-fetchers/router.js.map +1 -1
- package/dist/data-fetchers/thousand-mock.d.ts +9 -2
- package/dist/data-fetchers/thousand-mock.d.ts.map +1 -1
- package/dist/data-fetchers/thousand-mock.js +66 -4
- package/dist/data-fetchers/thousand-mock.js.map +1 -1
- package/dist/data-fetchers/tradingview.d.ts +9 -2
- package/dist/data-fetchers/tradingview.d.ts.map +1 -1
- package/dist/data-fetchers/tradingview.js +73 -9
- package/dist/data-fetchers/tradingview.js.map +1 -1
- package/dist/data-fetchers/types.d.ts +21 -0
- package/dist/data-fetchers/types.d.ts.map +1 -0
- package/dist/data-fetchers/types.js +2 -0
- package/dist/data-fetchers/types.js.map +1 -0
- package/dist/engine/indicators/registerBuiltins.d.ts +2 -40
- package/dist/engine/indicators/registerBuiltins.d.ts.map +1 -1
- package/dist/engine/indicators/registerBuiltins.js +55 -42
- package/dist/engine/indicators/registerBuiltins.js.map +1 -1
- package/dist/engine/renderers/Indicator/ichimoku.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/ichimoku.js +8 -5
- package/dist/engine/renderers/Indicator/ichimoku.js.map +1 -1
- package/dist/engine/renderers/Indicator/index.d.ts +0 -39
- package/dist/engine/renderers/Indicator/index.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/index.js +0 -78
- package/dist/engine/renderers/Indicator/index.js.map +1 -1
- package/dist/engine/renderers/Indicator/indicatorCatalog.d.ts +1 -3
- package/dist/engine/renderers/Indicator/indicatorCatalog.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/indicatorCatalog.js +27 -17
- package/dist/engine/renderers/Indicator/indicatorCatalog.js.map +1 -1
- package/dist/engine/renderers/Indicator/sar.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/sar.js +3 -3
- package/dist/engine/renderers/Indicator/sar.js.map +1 -1
- package/dist/engine/renderers/Indicator/supertrend.d.ts.map +1 -1
- package/dist/engine/renderers/Indicator/supertrend.js +3 -3
- package/dist/engine/renderers/Indicator/supertrend.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/chartBridge.d.ts +47 -0
- package/dist/mcp/chartBridge.d.ts.map +1 -0
- package/dist/mcp/chartBridge.js +167 -0
- package/dist/mcp/chartBridge.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +2 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/types.d.ts +17 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +2 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/controllers/createChartController.ts +38 -1
- package/src/controllers/index.ts +1 -0
- package/src/controllers/types.ts +10 -1
- package/src/data-fetchers/__tests__/fetcherRegistry.test.ts +192 -0
- package/src/data-fetchers/baostock.ts +54 -22
- package/src/data-fetchers/fetcherDefinitionRegistry.ts +50 -0
- package/src/data-fetchers/gotdx.ts +28 -6
- package/src/data-fetchers/hundred-mock.ts +21 -4
- package/src/data-fetchers/index.ts +19 -5
- package/src/data-fetchers/router.ts +27 -18
- package/src/data-fetchers/thousand-mock.ts +21 -4
- package/src/data-fetchers/tradingview.ts +30 -11
- package/src/data-fetchers/types.ts +27 -0
- package/src/engine/__tests__/chart.dpr.test.ts +6 -1
- package/src/engine/indicators/__tests__/chartIndicatorManager.test.ts +6 -1
- package/src/engine/indicators/__tests__/registerBuiltins.test.ts +6 -2
- package/src/engine/indicators/__tests__/scheduler.test.ts +8 -3
- package/src/engine/indicators/__tests__/stateComposer.test.ts +6 -2
- package/src/engine/indicators/registerBuiltins.ts +58 -42
- package/src/engine/renderers/Indicator/__tests__/createSubIndicatorRenderer.test.ts +6 -2
- package/src/engine/renderers/Indicator/ichimoku.ts +10 -4
- package/src/engine/renderers/Indicator/index.ts +0 -92
- package/src/engine/renderers/Indicator/indicatorCatalog.ts +28 -19
- package/src/engine/renderers/Indicator/sar.ts +3 -3
- package/src/engine/renderers/Indicator/supertrend.ts +3 -4
- package/src/index.ts +1 -0
- package/src/mcp/chartBridge.ts +220 -0
- package/src/mcp/index.ts +2 -0
- package/src/mcp/types.ts +19 -0
- package/src/version.ts +1 -1
|
@@ -1,3 +1,38 @@
|
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { DataFetcher } from './fetcherDefinitionRegistry';
|
|
1
36
|
const PERIOD_TO_CATEGORY = {
|
|
2
37
|
'1min': 8,
|
|
3
38
|
'5min': 0,
|
|
@@ -22,6 +57,7 @@ const EXCHANGE_EX_CATEGORY = {
|
|
|
22
57
|
SG: 78,
|
|
23
58
|
DE: 73,
|
|
24
59
|
};
|
|
60
|
+
const BASE_URL = 'http://127.0.0.1:8080';
|
|
25
61
|
function mapBar(item, code) {
|
|
26
62
|
const ts = new Date(item.DateTime).getTime();
|
|
27
63
|
return {
|
|
@@ -53,8 +89,7 @@ function mapExItem(item, code) {
|
|
|
53
89
|
stockCode: code,
|
|
54
90
|
};
|
|
55
91
|
}
|
|
56
|
-
|
|
57
|
-
const baseUrl = source === 'gotdx' ? 'http://127.0.0.1:8080' : '';
|
|
92
|
+
async function fetchGotdx(_source, config) {
|
|
58
93
|
if (config.exchange && config.exchange in EXCHANGE_EX_CATEGORY) {
|
|
59
94
|
const category = EXCHANGE_EX_CATEGORY[config.exchange];
|
|
60
95
|
const period = PERIOD_TO_CATEGORY[config.period] ?? 4;
|
|
@@ -66,7 +101,7 @@ export const gotdxDataFetcher = async (source, config) => {
|
|
|
66
101
|
end_date: config.endDate,
|
|
67
102
|
times: 1,
|
|
68
103
|
};
|
|
69
|
-
const res = await fetch(`${
|
|
104
|
+
const res = await fetch(`${BASE_URL}/api/ex/kline-by-date`, {
|
|
70
105
|
method: 'POST',
|
|
71
106
|
headers: { 'Content-Type': 'application/json' },
|
|
72
107
|
body: JSON.stringify(body),
|
|
@@ -88,7 +123,7 @@ export const gotdxDataFetcher = async (source, config) => {
|
|
|
88
123
|
times: 1,
|
|
89
124
|
adjust,
|
|
90
125
|
};
|
|
91
|
-
const res = await fetch(`${
|
|
126
|
+
const res = await fetch(`${BASE_URL}/api/stock/kline-by-date`, {
|
|
92
127
|
method: 'POST',
|
|
93
128
|
headers: { 'Content-Type': 'application/json' },
|
|
94
129
|
body: JSON.stringify(body),
|
|
@@ -97,5 +132,37 @@ export const gotdxDataFetcher = async (source, config) => {
|
|
|
97
132
|
throw new Error(`[gotdx] stock/kline-by-date failed: ${res.status} ${res.statusText}`);
|
|
98
133
|
const list = await res.json();
|
|
99
134
|
return list.map((item) => mapBar(item, config.symbol));
|
|
100
|
-
}
|
|
135
|
+
}
|
|
136
|
+
let GotdxFetcher = (() => {
|
|
137
|
+
let _classDecorators = [DataFetcher({
|
|
138
|
+
name: 'gotdx',
|
|
139
|
+
displayName: 'GOTDX',
|
|
140
|
+
description: 'TDX data source via local proxy',
|
|
141
|
+
version: '1.0.0',
|
|
142
|
+
capabilities: [
|
|
143
|
+
'1min', '5min', '15min', '30min', '60min',
|
|
144
|
+
'daily', 'weekly', 'monthly', 'quarterly', 'yearly',
|
|
145
|
+
],
|
|
146
|
+
})];
|
|
147
|
+
let _classDescriptor;
|
|
148
|
+
let _classExtraInitializers = [];
|
|
149
|
+
let _classThis;
|
|
150
|
+
var GotdxFetcher = class {
|
|
151
|
+
static { _classThis = this; }
|
|
152
|
+
static {
|
|
153
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
154
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
155
|
+
GotdxFetcher = _classThis = _classDescriptor.value;
|
|
156
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
157
|
+
}
|
|
158
|
+
static fetcher = fetchGotdx;
|
|
159
|
+
static {
|
|
160
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
return GotdxFetcher = _classThis;
|
|
164
|
+
})();
|
|
165
|
+
export { GotdxFetcher };
|
|
166
|
+
/** @deprecated Use `GotdxFetcher.fetcher` directly or rely on routerDataFetcher. */
|
|
167
|
+
export const gotdxDataFetcher = fetchGotdx;
|
|
101
168
|
//# sourceMappingURL=gotdx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gotdx.js","sourceRoot":"","sources":["../../src/data-fetchers/gotdx.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gotdx.js","sourceRoot":"","sources":["../../src/data-fetchers/gotdx.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { KLineData } from '../controllers/types';
|
|
2
|
+
import type { FetchConfig } from './types';
|
|
3
|
+
declare function fetchHundredMock(_source: string, config: FetchConfig): Promise<ReadonlyArray<KLineData>>;
|
|
4
|
+
export declare class HundredMockFetcher {
|
|
5
|
+
static fetcher: typeof fetchHundredMock;
|
|
6
|
+
}
|
|
7
|
+
/** @deprecated Use `HundredMockFetcher.fetcher` directly or rely on routerDataFetcher. */
|
|
8
|
+
export declare const hundredMockDataFetcher: typeof fetchHundredMock;
|
|
9
|
+
export {};
|
|
3
10
|
//# sourceMappingURL=hundred-mock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hundred-mock.d.ts","sourceRoot":"","sources":["../../src/data-fetchers/hundred-mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"hundred-mock.d.ts","sourceRoot":"","sources":["../../src/data-fetchers/hundred-mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,iBAAe,gBAAgB,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAwDnC;AAED,qBAOa,kBAAkB;IAC7B,MAAM,CAAC,OAAO,0BAAmB;CAClC;AAED,0FAA0F;AAC1F,eAAO,MAAM,sBAAsB,yBAAmB,CAAA"}
|
|
@@ -1,4 +1,39 @@
|
|
|
1
|
-
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { DataFetcher } from './fetcherDefinitionRegistry';
|
|
36
|
+
async function fetchHundredMock(_source, config) {
|
|
2
37
|
console.log(`[hundred-mock] generating ${config.symbol} ${config.period}`);
|
|
3
38
|
const start = new Date(config.startDate).getTime();
|
|
4
39
|
const end = new Date(config.endDate).getTime();
|
|
@@ -20,7 +55,6 @@ export const hundredMockDataFetcher = async (_source, config) => {
|
|
|
20
55
|
return data;
|
|
21
56
|
}
|
|
22
57
|
const meanReversionStrength = 0.005;
|
|
23
|
-
// raw random walk with mean reversion (close prices before bridge)
|
|
24
58
|
const rawWalk = [basePrice];
|
|
25
59
|
for (let i = 1; i < totalDays; i++) {
|
|
26
60
|
const prev = rawWalk[i - 1];
|
|
@@ -28,7 +62,6 @@ export const hundredMockDataFetcher = async (_source, config) => {
|
|
|
28
62
|
const change = (Math.random() - 0.48) * prev * 0.06 + reversion;
|
|
29
63
|
rawWalk.push(prev + change);
|
|
30
64
|
}
|
|
31
|
-
// Brownian bridge: subtract linear drift so last close = basePrice
|
|
32
65
|
const finalOffset = rawWalk[totalDays - 1] - basePrice;
|
|
33
66
|
for (let i = 0; i < totalDays; i++) {
|
|
34
67
|
const bridge = finalOffset * (i / (totalDays - 1));
|
|
@@ -49,5 +82,34 @@ export const hundredMockDataFetcher = async (_source, config) => {
|
|
|
49
82
|
});
|
|
50
83
|
}
|
|
51
84
|
return data;
|
|
52
|
-
}
|
|
85
|
+
}
|
|
86
|
+
let HundredMockFetcher = (() => {
|
|
87
|
+
let _classDecorators = [DataFetcher({
|
|
88
|
+
name: 'mock-100',
|
|
89
|
+
displayName: 'Mock 100',
|
|
90
|
+
description: 'Generates ~100 random K-line bars with Brownian bridge',
|
|
91
|
+
version: '1.0.0',
|
|
92
|
+
capabilities: ['*'],
|
|
93
|
+
})];
|
|
94
|
+
let _classDescriptor;
|
|
95
|
+
let _classExtraInitializers = [];
|
|
96
|
+
let _classThis;
|
|
97
|
+
var HundredMockFetcher = class {
|
|
98
|
+
static { _classThis = this; }
|
|
99
|
+
static {
|
|
100
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
101
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
102
|
+
HundredMockFetcher = _classThis = _classDescriptor.value;
|
|
103
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
104
|
+
}
|
|
105
|
+
static fetcher = fetchHundredMock;
|
|
106
|
+
static {
|
|
107
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
return HundredMockFetcher = _classThis;
|
|
111
|
+
})();
|
|
112
|
+
export { HundredMockFetcher };
|
|
113
|
+
/** @deprecated Use `HundredMockFetcher.fetcher` directly or rely on routerDataFetcher. */
|
|
114
|
+
export const hundredMockDataFetcher = fetchHundredMock;
|
|
53
115
|
//# sourceMappingURL=hundred-mock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hundred-mock.js","sourceRoot":"","sources":["../../src/data-fetchers/hundred-mock.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hundred-mock.js","sourceRoot":"","sources":["../../src/data-fetchers/hundred-mock.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export { baostockDataFetcher } from './baostock';
|
|
4
|
-
export { tradingviewDataFetcher } from './tradingview';
|
|
5
|
-
export { gotdxDataFetcher } from './gotdx';
|
|
1
|
+
export { HundredMockFetcher, hundredMockDataFetcher } from './hundred-mock';
|
|
2
|
+
export { ThousandMockFetcher, thousandMockDataFetcher } from './thousand-mock';
|
|
3
|
+
export { BaoStockFetcher, baostockDataFetcher } from './baostock';
|
|
4
|
+
export { TradingviewFetcher, tradingviewDataFetcher } from './tradingview';
|
|
5
|
+
export { GotdxFetcher, gotdxDataFetcher } from './gotdx';
|
|
6
6
|
export { routerDataFetcher } from './router';
|
|
7
7
|
export { DataBuffer } from './dataBuffer';
|
|
8
8
|
export type { DataWindow } from './dataBuffer';
|
|
9
|
+
export { DataFetcher, getRegisteredFetcher, getRegisteredFetchers, fetcherHasCapability, fetcherSupportsPeriod, clearRegisteredFetchersForTest, } from './fetcherDefinitionRegistry';
|
|
10
|
+
export type { FetchConfig, DataFetcherDefinitionConfig, DataFetcherDefinition, DataFetcherFn, } from './types';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data-fetchers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data-fetchers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAC3E,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,6BAA6B,CAAA;AACpC,YAAY,EACV,WAAW,EACX,2BAA2B,EAC3B,qBAAqB,EACrB,aAAa,GACd,MAAM,SAAS,CAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export { baostockDataFetcher } from './baostock';
|
|
4
|
-
export { tradingviewDataFetcher } from './tradingview';
|
|
5
|
-
export { gotdxDataFetcher } from './gotdx';
|
|
1
|
+
export { HundredMockFetcher, hundredMockDataFetcher } from './hundred-mock';
|
|
2
|
+
export { ThousandMockFetcher, thousandMockDataFetcher } from './thousand-mock';
|
|
3
|
+
export { BaoStockFetcher, baostockDataFetcher } from './baostock';
|
|
4
|
+
export { TradingviewFetcher, tradingviewDataFetcher } from './tradingview';
|
|
5
|
+
export { GotdxFetcher, gotdxDataFetcher } from './gotdx';
|
|
6
6
|
export { routerDataFetcher } from './router';
|
|
7
7
|
export { DataBuffer } from './dataBuffer';
|
|
8
|
+
export { DataFetcher, getRegisteredFetcher, getRegisteredFetchers, fetcherHasCapability, fetcherSupportsPeriod, clearRegisteredFetchersForTest, } from './fetcherDefinitionRegistry';
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data-fetchers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data-fetchers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAC3E,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,6BAA6B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/data-fetchers/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/data-fetchers/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAKvD,eAAO,MAAM,iBAAiB,EAAE,WA0B/B,CAAA"}
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { hundredMockDataFetcher } from './hundred-mock';
|
|
4
|
-
import { thousandMockDataFetcher } from './thousand-mock';
|
|
5
|
-
import { tradingviewDataFetcher } from './tradingview';
|
|
1
|
+
import { getRegisteredFetcher, fetcherSupportsPeriod } from './fetcherDefinitionRegistry';
|
|
2
|
+
const FALLBACK_SOURCE = 'baostock';
|
|
6
3
|
export const routerDataFetcher = (source, config) => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return hundredMockDataFetcher(source, config);
|
|
16
|
-
case 'mock-10000':
|
|
17
|
-
return thousandMockDataFetcher(source, config);
|
|
18
|
-
default:
|
|
19
|
-
return hundredMockDataFetcher(source, config);
|
|
4
|
+
const def = getRegisteredFetcher(source);
|
|
5
|
+
if (!def) {
|
|
6
|
+
console.warn(`[DataFetcher] unknown source "${source}", falling back to "${FALLBACK_SOURCE}"`);
|
|
7
|
+
const fallback = getRegisteredFetcher(FALLBACK_SOURCE);
|
|
8
|
+
if (!fallback) {
|
|
9
|
+
return Promise.reject(new Error(`[DataFetcher] no fetcher registered for "${source}" and no fallback available`));
|
|
10
|
+
}
|
|
11
|
+
return fallback.fetcher(source, config);
|
|
20
12
|
}
|
|
13
|
+
if (!fetcherSupportsPeriod(source, config.period)) {
|
|
14
|
+
return Promise.reject(new Error(`[DataFetcher] "${source}" does not support period "${config.period}". Supported: ${def.capabilities?.join(', ') ?? 'none'}`));
|
|
15
|
+
}
|
|
16
|
+
return def.fetcher(source, config);
|
|
21
17
|
};
|
|
22
18
|
//# sourceMappingURL=router.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/data-fetchers/router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/data-fetchers/router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAEzF,MAAM,eAAe,GAAG,UAAU,CAAA;AAElC,MAAM,CAAC,MAAM,iBAAiB,GAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;IAC/D,MAAM,GAAG,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IACxC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CACV,iCAAiC,MAAM,uBAAuB,eAAe,GAAG,CACjF,CAAA;QACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAA;QACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CACP,4CAA4C,MAAM,6BAA6B,CAChF,CACF,CAAA;QACH,CAAC;QACD,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CACP,kBAAkB,MAAM,8BAA8B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAC7H,CACF,CAAA;IACH,CAAC;IAED,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACpC,CAAC,CAAA"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { KLineData } from '../controllers/types';
|
|
2
|
+
import type { FetchConfig } from './types';
|
|
3
|
+
declare function fetchThousandMock(_source: string, _config: FetchConfig): Promise<ReadonlyArray<KLineData>>;
|
|
4
|
+
export declare class ThousandMockFetcher {
|
|
5
|
+
static fetcher: typeof fetchThousandMock;
|
|
6
|
+
}
|
|
7
|
+
/** @deprecated Use `ThousandMockFetcher.fetcher` directly or rely on routerDataFetcher. */
|
|
8
|
+
export declare const thousandMockDataFetcher: typeof fetchThousandMock;
|
|
9
|
+
export {};
|
|
3
10
|
//# sourceMappingURL=thousand-mock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thousand-mock.d.ts","sourceRoot":"","sources":["../../src/data-fetchers/thousand-mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"thousand-mock.d.ts","sourceRoot":"","sources":["../../src/data-fetchers/thousand-mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,iBAAe,iBAAiB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAyCnC;AAED,qBAOa,mBAAmB;IAC9B,MAAM,CAAC,OAAO,2BAAoB;CACnC;AAED,2FAA2F;AAC3F,eAAO,MAAM,uBAAuB,0BAAoB,CAAA"}
|
|
@@ -1,4 +1,39 @@
|
|
|
1
|
-
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { DataFetcher } from './fetcherDefinitionRegistry';
|
|
36
|
+
async function fetchThousandMock(_source, _config) {
|
|
2
37
|
console.log('[thousand-mock] generating 10k K-lines');
|
|
3
38
|
const data = [];
|
|
4
39
|
const startTime = new Date('2020-01-01').getTime();
|
|
@@ -7,7 +42,6 @@ export const thousandMockDataFetcher = async (_source, _config) => {
|
|
|
7
42
|
const basePrice = 3000;
|
|
8
43
|
const meanReversionStrength = 0.0005;
|
|
9
44
|
const volatility = 0.02;
|
|
10
|
-
// raw random walk with mean reversion (close prices before bridge)
|
|
11
45
|
const rawWalk = [basePrice];
|
|
12
46
|
for (let i = 1; i < totalDays; i++) {
|
|
13
47
|
const prev = rawWalk[i - 1];
|
|
@@ -15,7 +49,6 @@ export const thousandMockDataFetcher = async (_source, _config) => {
|
|
|
15
49
|
const change = (Math.random() - 0.5) * 2 * volatility * prev + reversion;
|
|
16
50
|
rawWalk.push(prev + change);
|
|
17
51
|
}
|
|
18
|
-
// Brownian bridge: subtract linear drift so last close = basePrice
|
|
19
52
|
const finalOffset = rawWalk[totalDays - 1] - basePrice;
|
|
20
53
|
for (let i = 0; i < totalDays; i++) {
|
|
21
54
|
const bridge = finalOffset * (i / (totalDays - 1));
|
|
@@ -35,5 +68,34 @@ export const thousandMockDataFetcher = async (_source, _config) => {
|
|
|
35
68
|
});
|
|
36
69
|
}
|
|
37
70
|
return data;
|
|
38
|
-
}
|
|
71
|
+
}
|
|
72
|
+
let ThousandMockFetcher = (() => {
|
|
73
|
+
let _classDecorators = [DataFetcher({
|
|
74
|
+
name: 'mock-10000',
|
|
75
|
+
displayName: 'Mock 10000',
|
|
76
|
+
description: 'Generates ~10,000 random K-line bars with Brownian bridge',
|
|
77
|
+
version: '1.0.0',
|
|
78
|
+
capabilities: ['*'],
|
|
79
|
+
})];
|
|
80
|
+
let _classDescriptor;
|
|
81
|
+
let _classExtraInitializers = [];
|
|
82
|
+
let _classThis;
|
|
83
|
+
var ThousandMockFetcher = class {
|
|
84
|
+
static { _classThis = this; }
|
|
85
|
+
static {
|
|
86
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
87
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
88
|
+
ThousandMockFetcher = _classThis = _classDescriptor.value;
|
|
89
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
90
|
+
}
|
|
91
|
+
static fetcher = fetchThousandMock;
|
|
92
|
+
static {
|
|
93
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
return ThousandMockFetcher = _classThis;
|
|
97
|
+
})();
|
|
98
|
+
export { ThousandMockFetcher };
|
|
99
|
+
/** @deprecated Use `ThousandMockFetcher.fetcher` directly or rely on routerDataFetcher. */
|
|
100
|
+
export const thousandMockDataFetcher = fetchThousandMock;
|
|
39
101
|
//# sourceMappingURL=thousand-mock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thousand-mock.js","sourceRoot":"","sources":["../../src/data-fetchers/thousand-mock.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"thousand-mock.js","sourceRoot":"","sources":["../../src/data-fetchers/thousand-mock.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { KLineData } from '../controllers/types';
|
|
2
|
+
import type { FetchConfig } from './types';
|
|
3
|
+
declare function fetchTradingview(_source: string, config: FetchConfig): Promise<ReadonlyArray<KLineData>>;
|
|
4
|
+
export declare class TradingviewFetcher {
|
|
5
|
+
static fetcher: typeof fetchTradingview;
|
|
6
|
+
}
|
|
7
|
+
/** @deprecated Use `TradingviewFetcher.fetcher` directly or rely on routerDataFetcher. */
|
|
8
|
+
export declare const tradingviewDataFetcher: typeof fetchTradingview;
|
|
9
|
+
export {};
|
|
3
10
|
//# sourceMappingURL=tradingview.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tradingview.d.ts","sourceRoot":"","sources":["../../src/data-fetchers/tradingview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"tradingview.d.ts","sourceRoot":"","sources":["../../src/data-fetchers/tradingview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAoB1C,iBAAe,gBAAgB,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAkCnC;AAED,qBAOa,kBAAkB;IAC7B,MAAM,CAAC,OAAO,0BAAmB;CAClC;AAED,0FAA0F;AAC1F,eAAO,MAAM,sBAAsB,yBAAmB,CAAA"}
|
|
@@ -1,3 +1,38 @@
|
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { DataFetcher } from './fetcherDefinitionRegistry';
|
|
1
36
|
const PERIOD_TO_TIMEFRAME = {
|
|
2
37
|
daily: '1d',
|
|
3
38
|
weekly: '1w',
|
|
@@ -7,20 +42,20 @@ const PERIOD_TO_TIMEFRAME = {
|
|
|
7
42
|
'30min': '30m',
|
|
8
43
|
'60min': '60m',
|
|
9
44
|
};
|
|
10
|
-
|
|
11
|
-
|
|
45
|
+
const ADJUST_TO_TV = {
|
|
46
|
+
qfq: 'dividends',
|
|
47
|
+
splits: 'splits',
|
|
48
|
+
none: 'none',
|
|
49
|
+
};
|
|
50
|
+
const BASE_URL = 'http://localhost:8000';
|
|
51
|
+
async function fetchTradingview(_source, config) {
|
|
12
52
|
const timeframe = PERIOD_TO_TIMEFRAME[config.period] ?? '1d';
|
|
13
53
|
const startDate = config.startDate.split('T')[0];
|
|
14
54
|
const endDate = config.endDate.split('T')[0];
|
|
15
|
-
const ADJUST_TO_TV = {
|
|
16
|
-
qfq: 'dividends',
|
|
17
|
-
splits: 'splits',
|
|
18
|
-
none: 'none',
|
|
19
|
-
};
|
|
20
55
|
const tvAdjust = ADJUST_TO_TV[config.adjust];
|
|
21
56
|
const exchangeQ = config.exchange ? `&exchange=${config.exchange}` : '';
|
|
22
57
|
const adjustQ = tvAdjust ? `&adjust=${tvAdjust}` : '';
|
|
23
|
-
const url = `${
|
|
58
|
+
const url = `${BASE_URL}/api/tradingview/kdata?symbol=${config.symbol}&timeframe=${timeframe}&start_date=${startDate}&end_date=${endDate}${exchangeQ}${adjustQ}`;
|
|
24
59
|
try {
|
|
25
60
|
const res = await fetch(url);
|
|
26
61
|
if (!res.ok) {
|
|
@@ -48,5 +83,34 @@ export const tradingviewDataFetcher = async (source, config) => {
|
|
|
48
83
|
console.warn('[tradingview] network error:', err);
|
|
49
84
|
throw err;
|
|
50
85
|
}
|
|
51
|
-
}
|
|
86
|
+
}
|
|
87
|
+
let TradingviewFetcher = (() => {
|
|
88
|
+
let _classDecorators = [DataFetcher({
|
|
89
|
+
name: 'tradingview',
|
|
90
|
+
displayName: 'TradingView',
|
|
91
|
+
description: 'TradingView-style data source via local proxy',
|
|
92
|
+
version: '1.0.0',
|
|
93
|
+
capabilities: ['daily', 'weekly', 'monthly', '5min', '15min', '30min', '60min'],
|
|
94
|
+
})];
|
|
95
|
+
let _classDescriptor;
|
|
96
|
+
let _classExtraInitializers = [];
|
|
97
|
+
let _classThis;
|
|
98
|
+
var TradingviewFetcher = class {
|
|
99
|
+
static { _classThis = this; }
|
|
100
|
+
static {
|
|
101
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
102
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
103
|
+
TradingviewFetcher = _classThis = _classDescriptor.value;
|
|
104
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
105
|
+
}
|
|
106
|
+
static fetcher = fetchTradingview;
|
|
107
|
+
static {
|
|
108
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
return TradingviewFetcher = _classThis;
|
|
112
|
+
})();
|
|
113
|
+
export { TradingviewFetcher };
|
|
114
|
+
/** @deprecated Use `TradingviewFetcher.fetcher` directly or rely on routerDataFetcher. */
|
|
115
|
+
export const tradingviewDataFetcher = fetchTradingview;
|
|
52
116
|
//# sourceMappingURL=tradingview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tradingview.js","sourceRoot":"","sources":["../../src/data-fetchers/tradingview.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tradingview.js","sourceRoot":"","sources":["../../src/data-fetchers/tradingview.ts"],"names":[],"mappings":"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"}
|