@simahfud/pine-to-kline 0.1.0 → 0.1.1
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/PineInterpreter.d.ts +19 -0
- package/dist/PineInterpreter.d.ts.map +1 -0
- package/dist/PineInterpreter.js +89 -0
- package/dist/PineInterpreter.js.map +1 -0
- package/dist/adapter/FigureMapper.d.ts +8 -0
- package/dist/adapter/FigureMapper.d.ts.map +1 -0
- package/dist/adapter/FigureMapper.js +22 -0
- package/dist/adapter/FigureMapper.js.map +1 -0
- package/dist/adapter/KlineAdapter.d.ts +11 -0
- package/dist/adapter/KlineAdapter.d.ts.map +1 -0
- package/dist/adapter/KlineAdapter.js +88 -0
- package/dist/adapter/KlineAdapter.js.map +1 -0
- package/dist/adapter/StyleMapper.d.ts +10 -0
- package/dist/adapter/StyleMapper.d.ts.map +1 -0
- package/dist/adapter/StyleMapper.js +28 -0
- package/dist/adapter/StyleMapper.js.map +1 -0
- package/dist/builtins/color/constants.d.ts +7 -0
- package/dist/builtins/color/constants.d.ts.map +1 -0
- package/dist/builtins/color/constants.js +25 -0
- package/dist/builtins/color/constants.js.map +1 -0
- package/dist/builtins/color/functions.d.ts +21 -0
- package/dist/builtins/color/functions.d.ts.map +1 -0
- package/dist/builtins/color/functions.js +52 -0
- package/dist/builtins/color/functions.js.map +1 -0
- package/dist/builtins/index.d.ts +15 -0
- package/dist/builtins/index.d.ts.map +1 -0
- package/dist/builtins/index.js +32 -0
- package/dist/builtins/index.js.map +1 -0
- package/dist/builtins/input/functions.d.ts +28 -0
- package/dist/builtins/input/functions.d.ts.map +1 -0
- package/dist/builtins/input/functions.js +114 -0
- package/dist/builtins/input/functions.js.map +1 -0
- package/dist/builtins/math/functions.d.ts +9 -0
- package/dist/builtins/math/functions.d.ts.map +1 -0
- package/dist/builtins/math/functions.js +57 -0
- package/dist/builtins/math/functions.js.map +1 -0
- package/dist/builtins/ta/crossover.d.ts +18 -0
- package/dist/builtins/ta/crossover.d.ts.map +1 -0
- package/dist/builtins/ta/crossover.js +59 -0
- package/dist/builtins/ta/crossover.js.map +1 -0
- package/dist/builtins/ta/index.d.ts +12 -0
- package/dist/builtins/ta/index.d.ts.map +1 -0
- package/dist/builtins/ta/index.js +61 -0
- package/dist/builtins/ta/index.js.map +1 -0
- package/dist/builtins/ta/momentum.d.ts +22 -0
- package/dist/builtins/ta/momentum.d.ts.map +1 -0
- package/dist/builtins/ta/momentum.js +81 -0
- package/dist/builtins/ta/momentum.js.map +1 -0
- package/dist/builtins/ta/moving-averages.d.ts +24 -0
- package/dist/builtins/ta/moving-averages.d.ts.map +1 -0
- package/dist/builtins/ta/moving-averages.js +108 -0
- package/dist/builtins/ta/moving-averages.js.map +1 -0
- package/dist/builtins/ta/utility.d.ts +28 -0
- package/dist/builtins/ta/utility.d.ts.map +1 -0
- package/dist/builtins/ta/utility.js +156 -0
- package/dist/builtins/ta/utility.js.map +1 -0
- package/dist/builtins/ta/volatility.d.ts +21 -0
- package/dist/builtins/ta/volatility.d.ts.map +1 -0
- package/dist/builtins/ta/volatility.js +71 -0
- package/dist/builtins/ta/volatility.js.map +1 -0
- package/dist/index.d.ts +21 -695
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/lexer/Lexer.d.ts +40 -0
- package/dist/lexer/Lexer.d.ts.map +1 -0
- package/dist/lexer/Lexer.js +383 -0
- package/dist/lexer/Lexer.js.map +1 -0
- package/dist/lexer/Token.d.ts +16 -0
- package/dist/lexer/Token.d.ts.map +1 -0
- package/dist/lexer/Token.js +26 -0
- package/dist/lexer/Token.js.map +1 -0
- package/dist/lexer/TokenType.d.ts +74 -0
- package/dist/lexer/TokenType.d.ts.map +1 -0
- package/dist/lexer/TokenType.js +111 -0
- package/dist/lexer/TokenType.js.map +1 -0
- package/dist/parser/Parser.d.ts +55 -0
- package/dist/parser/Parser.d.ts.map +1 -0
- package/dist/parser/Parser.js +569 -0
- package/dist/parser/Parser.js.map +1 -0
- package/dist/parser/nodes/index.d.ts +215 -0
- package/dist/parser/nodes/index.d.ts.map +1 -0
- package/dist/parser/nodes/index.js +7 -0
- package/dist/parser/nodes/index.js.map +1 -0
- package/dist/plugin/KlineChartProPlugin.d.ts +43 -0
- package/dist/plugin/KlineChartProPlugin.d.ts.map +1 -0
- package/dist/plugin/KlineChartProPlugin.js +44 -0
- package/dist/plugin/KlineChartProPlugin.js.map +1 -0
- package/dist/runtime/BarContext.d.ts +23 -0
- package/dist/runtime/BarContext.d.ts.map +1 -0
- package/dist/runtime/BarContext.js +41 -0
- package/dist/runtime/BarContext.js.map +1 -0
- package/dist/runtime/PineRuntime.d.ts +51 -0
- package/dist/runtime/PineRuntime.d.ts.map +1 -0
- package/dist/runtime/PineRuntime.js +471 -0
- package/dist/runtime/PineRuntime.js.map +1 -0
- package/dist/runtime/SeriesEmulator.d.ts +21 -0
- package/dist/runtime/SeriesEmulator.d.ts.map +1 -0
- package/dist/runtime/SeriesEmulator.js +32 -0
- package/dist/runtime/SeriesEmulator.js.map +1 -0
- package/dist/runtime/VarPersistence.d.ts +20 -0
- package/dist/runtime/VarPersistence.d.ts.map +1 -0
- package/dist/runtime/VarPersistence.js +28 -0
- package/dist/runtime/VarPersistence.js.map +1 -0
- package/dist/types.d.ts +97 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/errors.d.ts +24 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +46 -0
- package/dist/utils/errors.js.map +1 -0
- package/package.json +1 -1
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pine-to-kline — Core Type Definitions
|
|
3
|
+
* @license Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
export interface KlineData {
|
|
6
|
+
timestamp: number;
|
|
7
|
+
open: number;
|
|
8
|
+
high: number;
|
|
9
|
+
low: number;
|
|
10
|
+
close: number;
|
|
11
|
+
volume?: number;
|
|
12
|
+
turnover?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface PineInterpreterOptions {
|
|
15
|
+
/** Target Pine Script version */
|
|
16
|
+
version?: 'v5' | 'v6';
|
|
17
|
+
/** Strict mode — error on unsupported features */
|
|
18
|
+
strict?: boolean;
|
|
19
|
+
/** Enable sandbox isolation */
|
|
20
|
+
sandbox?: boolean;
|
|
21
|
+
/** Warning callback */
|
|
22
|
+
onWarning?: (msg: string) => void;
|
|
23
|
+
/** Error callback */
|
|
24
|
+
onError?: (err: Error) => void;
|
|
25
|
+
}
|
|
26
|
+
export interface CompileResult {
|
|
27
|
+
success: boolean;
|
|
28
|
+
indicatorConfig: IndicatorConfig;
|
|
29
|
+
name: string;
|
|
30
|
+
warnings: string[];
|
|
31
|
+
errors: Error[];
|
|
32
|
+
}
|
|
33
|
+
export interface ValidationResult {
|
|
34
|
+
valid: boolean;
|
|
35
|
+
errors: Error[];
|
|
36
|
+
}
|
|
37
|
+
export interface IndicatorFigure {
|
|
38
|
+
key: string;
|
|
39
|
+
title: string;
|
|
40
|
+
type: 'line' | 'bar' | 'circle';
|
|
41
|
+
styles?: (data: any, indicator: any, defaultStyles: any) => any;
|
|
42
|
+
}
|
|
43
|
+
export interface IndicatorConfig {
|
|
44
|
+
name: string;
|
|
45
|
+
shortName: string;
|
|
46
|
+
series?: string;
|
|
47
|
+
calcParams: any[];
|
|
48
|
+
figures: IndicatorFigure[];
|
|
49
|
+
regenerateFigures?: (params: any[]) => IndicatorFigure[];
|
|
50
|
+
calc: (dataList: KlineData[], indicator: any) => Record<string, any>[];
|
|
51
|
+
draw?: (params: any) => boolean;
|
|
52
|
+
createTooltipDataSource?: (params: any) => any;
|
|
53
|
+
}
|
|
54
|
+
export interface PineInput {
|
|
55
|
+
id: string;
|
|
56
|
+
type: 'int' | 'float' | 'bool' | 'string' | 'color' | 'source';
|
|
57
|
+
title: string | null;
|
|
58
|
+
defaultValue: any;
|
|
59
|
+
minval?: number;
|
|
60
|
+
maxval?: number;
|
|
61
|
+
step?: number;
|
|
62
|
+
options?: any[];
|
|
63
|
+
}
|
|
64
|
+
export interface PinePlot {
|
|
65
|
+
id: string;
|
|
66
|
+
title: string | null;
|
|
67
|
+
color: string | null;
|
|
68
|
+
linewidth: number;
|
|
69
|
+
style: string | null;
|
|
70
|
+
editable?: boolean;
|
|
71
|
+
}
|
|
72
|
+
export interface PineHline {
|
|
73
|
+
price: number;
|
|
74
|
+
title: string | null;
|
|
75
|
+
color: string | null;
|
|
76
|
+
linestyle: string | null;
|
|
77
|
+
linewidth: number;
|
|
78
|
+
}
|
|
79
|
+
export interface PineMeta {
|
|
80
|
+
name: string;
|
|
81
|
+
shortName: string | null;
|
|
82
|
+
overlay: boolean;
|
|
83
|
+
format: string | null;
|
|
84
|
+
precision: number | null;
|
|
85
|
+
scale: string | null;
|
|
86
|
+
max_bars_back: number | null;
|
|
87
|
+
}
|
|
88
|
+
export interface PineIR {
|
|
89
|
+
meta: PineMeta;
|
|
90
|
+
inputs: PineInput[];
|
|
91
|
+
plots: PinePlot[];
|
|
92
|
+
hlines: PineHline[];
|
|
93
|
+
calcFn: (dataList: KlineData[], params: any[]) => Record<string, any>[];
|
|
94
|
+
warnings: string[];
|
|
95
|
+
errors: Error[];
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pine-to-kline — Error Classes
|
|
3
|
+
* @license Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
export declare class PineError extends Error {
|
|
6
|
+
readonly line?: number | undefined;
|
|
7
|
+
readonly column?: number | undefined;
|
|
8
|
+
readonly source?: string | undefined;
|
|
9
|
+
constructor(message: string, line?: number | undefined, column?: number | undefined, source?: string | undefined);
|
|
10
|
+
toString(): string;
|
|
11
|
+
}
|
|
12
|
+
export declare class LexerError extends PineError {
|
|
13
|
+
constructor(message: string, line?: number, column?: number);
|
|
14
|
+
}
|
|
15
|
+
export declare class ParseError extends PineError {
|
|
16
|
+
constructor(message: string, line?: number, column?: number);
|
|
17
|
+
}
|
|
18
|
+
export declare class RuntimeError extends PineError {
|
|
19
|
+
constructor(message: string, line?: number, column?: number);
|
|
20
|
+
}
|
|
21
|
+
export declare class AdapterError extends PineError {
|
|
22
|
+
constructor(message: string);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,SAAU,SAAQ,KAAK;aAGhB,IAAI,CAAC,EAAE,MAAM;aACb,MAAM,CAAC,EAAE,MAAM;aACf,MAAM,CAAC,EAAE,MAAM;gBAH/B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,MAAM,CAAC,EAAE,MAAM,YAAA;IAMjC,QAAQ,IAAI,MAAM;CAKnB;AAED,qBAAa,UAAW,SAAQ,SAAS;gBAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAI5D;AAED,qBAAa,UAAW,SAAQ,SAAS;gBAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAI5D;AAED,qBAAa,YAAa,SAAQ,SAAS;gBAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAI5D;AAED,qBAAa,YAAa,SAAQ,SAAS;gBAC7B,OAAO,EAAE,MAAM;CAI5B"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pine-to-kline — Error Classes
|
|
3
|
+
* @license Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
export class PineError extends Error {
|
|
6
|
+
line;
|
|
7
|
+
column;
|
|
8
|
+
source;
|
|
9
|
+
constructor(message, line, column, source) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.line = line;
|
|
12
|
+
this.column = column;
|
|
13
|
+
this.source = source;
|
|
14
|
+
this.name = 'PineError';
|
|
15
|
+
}
|
|
16
|
+
toString() {
|
|
17
|
+
const loc = this.line != null ? ` at line ${this.line}` : '';
|
|
18
|
+
const col = this.column != null ? `:${this.column}` : '';
|
|
19
|
+
return `${this.name}: ${this.message}${loc}${col}`;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class LexerError extends PineError {
|
|
23
|
+
constructor(message, line, column) {
|
|
24
|
+
super(message, line, column);
|
|
25
|
+
this.name = 'LexerError';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export class ParseError extends PineError {
|
|
29
|
+
constructor(message, line, column) {
|
|
30
|
+
super(message, line, column);
|
|
31
|
+
this.name = 'ParseError';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export class RuntimeError extends PineError {
|
|
35
|
+
constructor(message, line, column) {
|
|
36
|
+
super(message, line, column);
|
|
37
|
+
this.name = 'RuntimeError';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export class AdapterError extends PineError {
|
|
41
|
+
constructor(message) {
|
|
42
|
+
super(message);
|
|
43
|
+
this.name = 'AdapterError';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAGhB;IACA;IACA;IAJlB,YACE,OAAe,EACC,IAAa,EACb,MAAe,EACf,MAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAA;QAJE,SAAI,GAAJ,IAAI,CAAS;QACb,WAAM,GAAN,MAAM,CAAS;QACf,WAAM,GAAN,MAAM,CAAS;QAG/B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAA;IACzB,CAAC;IAED,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACxD,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,GAAG,EAAE,CAAA;IACpD,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,SAAS;IACvC,YAAY,OAAe,EAAE,IAAa,EAAE,MAAe;QACzD,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,SAAS;IACvC,YAAY,OAAe,EAAE,IAAa,EAAE,MAAe;QACzD,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAY,OAAe,EAAE,IAAa,EAAE,MAAe;QACzD,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF"}
|