@forgecharts/sdk 1.1.28 → 1.1.30

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.
Files changed (237) hide show
  1. package/dist/index.js +8100 -48
  2. package/dist/index.js.map +1 -1
  3. package/dist/internal.js +8851 -31
  4. package/dist/internal.js.map +1 -1
  5. package/dist/react/index.js +11558 -27
  6. package/dist/react/index.js.map +1 -1
  7. package/dist/react/internal.js +12147 -43
  8. package/dist/react/internal.js.map +1 -1
  9. package/package.json +1 -1
  10. package/dist/__tests__/backwardCompatibility.test.js +0 -159
  11. package/dist/__tests__/backwardCompatibility.test.js.map +0 -1
  12. package/dist/__tests__/candleInvariant.test.js +0 -415
  13. package/dist/__tests__/candleInvariant.test.js.map +0 -1
  14. package/dist/__tests__/public-api-surface.js +0 -38
  15. package/dist/__tests__/public-api-surface.js.map +0 -1
  16. package/dist/__tests__/timeframeBoundary.test.js +0 -452
  17. package/dist/__tests__/timeframeBoundary.test.js.map +0 -1
  18. package/dist/api/DrawingManager.js +0 -190
  19. package/dist/api/DrawingManager.js.map +0 -1
  20. package/dist/api/EventBus.js +0 -44
  21. package/dist/api/EventBus.js.map +0 -1
  22. package/dist/api/IndicatorDAG.js +0 -316
  23. package/dist/api/IndicatorDAG.js.map +0 -1
  24. package/dist/api/IndicatorRegistry.js +0 -39
  25. package/dist/api/IndicatorRegistry.js.map +0 -1
  26. package/dist/api/LayoutManager.js +0 -51
  27. package/dist/api/LayoutManager.js.map +0 -1
  28. package/dist/api/PaneManager.js +0 -119
  29. package/dist/api/PaneManager.js.map +0 -1
  30. package/dist/api/ReferenceAPI.js +0 -153
  31. package/dist/api/ReferenceAPI.js.map +0 -1
  32. package/dist/api/TChart.js +0 -765
  33. package/dist/api/TChart.js.map +0 -1
  34. package/dist/api/createChart.js +0 -42
  35. package/dist/api/createChart.js.map +0 -1
  36. package/dist/api/drawing tools/fib gann menu/fibRetracement.js +0 -22
  37. package/dist/api/drawing tools/fib gann menu/fibRetracement.js.map +0 -1
  38. package/dist/api/drawing tools/lines menu/crossLine.js +0 -16
  39. package/dist/api/drawing tools/lines menu/crossLine.js.map +0 -1
  40. package/dist/api/drawing tools/lines menu/disjointChannel.js +0 -59
  41. package/dist/api/drawing tools/lines menu/disjointChannel.js.map +0 -1
  42. package/dist/api/drawing tools/lines menu/extendedLine.js +0 -17
  43. package/dist/api/drawing tools/lines menu/extendedLine.js.map +0 -1
  44. package/dist/api/drawing tools/lines menu/flatTopBottom.js +0 -41
  45. package/dist/api/drawing tools/lines menu/flatTopBottom.js.map +0 -1
  46. package/dist/api/drawing tools/lines menu/horizontal.js +0 -19
  47. package/dist/api/drawing tools/lines menu/horizontal.js.map +0 -1
  48. package/dist/api/drawing tools/lines menu/horizontalRay.js +0 -20
  49. package/dist/api/drawing tools/lines menu/horizontalRay.js.map +0 -1
  50. package/dist/api/drawing tools/lines menu/infoLine.js +0 -107
  51. package/dist/api/drawing tools/lines menu/infoLine.js.map +0 -1
  52. package/dist/api/drawing tools/lines menu/insidePitchfork.js +0 -31
  53. package/dist/api/drawing tools/lines menu/insidePitchfork.js.map +0 -1
  54. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.js +0 -15
  55. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.js.map +0 -1
  56. package/dist/api/drawing tools/lines menu/parallelChannel.js +0 -43
  57. package/dist/api/drawing tools/lines menu/parallelChannel.js.map +0 -1
  58. package/dist/api/drawing tools/lines menu/pitchfork.js +0 -12
  59. package/dist/api/drawing tools/lines menu/pitchfork.js.map +0 -1
  60. package/dist/api/drawing tools/lines menu/ray.js +0 -23
  61. package/dist/api/drawing tools/lines menu/ray.js.map +0 -1
  62. package/dist/api/drawing tools/lines menu/regressionTrend.js +0 -127
  63. package/dist/api/drawing tools/lines menu/regressionTrend.js.map +0 -1
  64. package/dist/api/drawing tools/lines menu/schiffPitchfork.js +0 -15
  65. package/dist/api/drawing tools/lines menu/schiffPitchfork.js.map +0 -1
  66. package/dist/api/drawing tools/lines menu/trendAngle.js +0 -51
  67. package/dist/api/drawing tools/lines menu/trendAngle.js.map +0 -1
  68. package/dist/api/drawing tools/lines menu/trendline.js +0 -11
  69. package/dist/api/drawing tools/lines menu/trendline.js.map +0 -1
  70. package/dist/api/drawing tools/lines menu/vertical.js +0 -11
  71. package/dist/api/drawing tools/lines menu/vertical.js.map +0 -1
  72. package/dist/api/drawing tools/pointers menu/crosshair.js +0 -16
  73. package/dist/api/drawing tools/pointers menu/crosshair.js.map +0 -1
  74. package/dist/api/drawing tools/pointers menu/cursor.js +0 -15
  75. package/dist/api/drawing tools/pointers menu/cursor.js.map +0 -1
  76. package/dist/api/drawing tools/pointers menu/demonstration.js +0 -30
  77. package/dist/api/drawing tools/pointers menu/demonstration.js.map +0 -1
  78. package/dist/api/drawing tools/pointers menu/dot.js +0 -23
  79. package/dist/api/drawing tools/pointers menu/dot.js.map +0 -1
  80. package/dist/api/drawing tools/shapes menu/rectangle.js +0 -19
  81. package/dist/api/drawing tools/shapes menu/rectangle.js.map +0 -1
  82. package/dist/api/drawing tools/shapes menu/text.js +0 -25
  83. package/dist/api/drawing tools/shapes menu/text.js.map +0 -1
  84. package/dist/api/drawingUtils.js +0 -83
  85. package/dist/api/drawingUtils.js.map +0 -1
  86. package/dist/core/CanvasLayer.js +0 -56
  87. package/dist/core/CanvasLayer.js.map +0 -1
  88. package/dist/core/Chart.js +0 -839
  89. package/dist/core/Chart.js.map +0 -1
  90. package/dist/core/CoordTransform.js +0 -224
  91. package/dist/core/CoordTransform.js.map +0 -1
  92. package/dist/core/Crosshair.js +0 -186
  93. package/dist/core/Crosshair.js.map +0 -1
  94. package/dist/core/IndicatorEngine.js +0 -181
  95. package/dist/core/IndicatorEngine.js.map +0 -1
  96. package/dist/core/InteractionManager.js +0 -698
  97. package/dist/core/InteractionManager.js.map +0 -1
  98. package/dist/core/PriceScale.js +0 -113
  99. package/dist/core/PriceScale.js.map +0 -1
  100. package/dist/core/Series.js +0 -114
  101. package/dist/core/Series.js.map +0 -1
  102. package/dist/core/TimeScale.js +0 -150
  103. package/dist/core/TimeScale.js.map +0 -1
  104. package/dist/datafeed/DatafeedConnector.js +0 -268
  105. package/dist/datafeed/DatafeedConnector.js.map +0 -1
  106. package/dist/engine/CandleEngine.js +0 -318
  107. package/dist/engine/CandleEngine.js.map +0 -1
  108. package/dist/engine/__tests__/CandleEngine.test.js +0 -300
  109. package/dist/engine/__tests__/CandleEngine.test.js.map +0 -1
  110. package/dist/engine/candleInvariants.js +0 -134
  111. package/dist/engine/candleInvariants.js.map +0 -1
  112. package/dist/engine/mergeUtils.js +0 -64
  113. package/dist/engine/mergeUtils.js.map +0 -1
  114. package/dist/engine/timeframeUtils.js +0 -100
  115. package/dist/engine/timeframeUtils.js.map +0 -1
  116. package/dist/licensing/ChartRuntimeResolver.js +0 -310
  117. package/dist/licensing/ChartRuntimeResolver.js.map +0 -1
  118. package/dist/licensing/LicenseManager.js +0 -114
  119. package/dist/licensing/LicenseManager.js.map +0 -1
  120. package/dist/licensing/__tests__/ChartRuntimeResolver.test.js +0 -177
  121. package/dist/licensing/__tests__/ChartRuntimeResolver.test.js.map +0 -1
  122. package/dist/licensing/__tests__/LicenseManager.test.js +0 -153
  123. package/dist/licensing/__tests__/LicenseManager.test.js.map +0 -1
  124. package/dist/licensing/licenseTypes.js +0 -2
  125. package/dist/licensing/licenseTypes.js.map +0 -1
  126. package/dist/pine/PineCompiler.js +0 -44
  127. package/dist/pine/PineCompiler.js.map +0 -1
  128. package/dist/pine/diagnostics.js +0 -11
  129. package/dist/pine/diagnostics.js.map +0 -1
  130. package/dist/pine/index.js +0 -5
  131. package/dist/pine/index.js.map +0 -1
  132. package/dist/pine/pine-ast.js +0 -19
  133. package/dist/pine/pine-ast.js.map +0 -1
  134. package/dist/pine/pine-lexer.js +0 -249
  135. package/dist/pine/pine-lexer.js.map +0 -1
  136. package/dist/pine/pine-parser.js +0 -416
  137. package/dist/pine/pine-parser.js.map +0 -1
  138. package/dist/pine/pine-transpiler.js +0 -260
  139. package/dist/pine/pine-transpiler.js.map +0 -1
  140. package/dist/pixi/LayerName.js +0 -35
  141. package/dist/pixi/LayerName.js.map +0 -1
  142. package/dist/pixi/PixiCandlestickRenderer.js +0 -107
  143. package/dist/pixi/PixiCandlestickRenderer.js.map +0 -1
  144. package/dist/pixi/PixiChart.js +0 -367
  145. package/dist/pixi/PixiChart.js.map +0 -1
  146. package/dist/pixi/PixiCrosshairRenderer.js +0 -110
  147. package/dist/pixi/PixiCrosshairRenderer.js.map +0 -1
  148. package/dist/pixi/PixiDrawingRenderer.js +0 -111
  149. package/dist/pixi/PixiDrawingRenderer.js.map +0 -1
  150. package/dist/pixi/PixiGridRenderer.js +0 -114
  151. package/dist/pixi/PixiGridRenderer.js.map +0 -1
  152. package/dist/pixi/PixiLayerManager.js +0 -92
  153. package/dist/pixi/PixiLayerManager.js.map +0 -1
  154. package/dist/react/canvas/ChartCanvas.js +0 -604
  155. package/dist/react/canvas/ChartCanvas.js.map +0 -1
  156. package/dist/react/canvas/ChartContextMenu.js +0 -5
  157. package/dist/react/canvas/ChartContextMenu.js.map +0 -1
  158. package/dist/react/canvas/ChartSettingsDialog.js +0 -28
  159. package/dist/react/canvas/ChartSettingsDialog.js.map +0 -1
  160. package/dist/react/canvas/IndicatorLabel.js +0 -196
  161. package/dist/react/canvas/IndicatorLabel.js.map +0 -1
  162. package/dist/react/canvas/IndicatorPane.js +0 -395
  163. package/dist/react/canvas/IndicatorPane.js.map +0 -1
  164. package/dist/react/canvas/PointerOverlay.js +0 -61
  165. package/dist/react/canvas/PointerOverlay.js.map +0 -1
  166. package/dist/react/canvas/toolbars/LeftToolbar.js +0 -407
  167. package/dist/react/canvas/toolbars/LeftToolbar.js.map +0 -1
  168. package/dist/react/hooks/useChartCapabilities.js +0 -66
  169. package/dist/react/hooks/useChartCapabilities.js.map +0 -1
  170. package/dist/react/shell/ManagedAppShell.js +0 -440
  171. package/dist/react/shell/ManagedAppShell.js.map +0 -1
  172. package/dist/react/trading/TradingBridge.js +0 -73
  173. package/dist/react/trading/TradingBridge.js.map +0 -1
  174. package/dist/react/workspace/ChartWorkspace.js +0 -42
  175. package/dist/react/workspace/ChartWorkspace.js.map +0 -1
  176. package/dist/react/workspace/FloatingPanel.js +0 -82
  177. package/dist/react/workspace/FloatingPanel.js.map +0 -1
  178. package/dist/react/workspace/IndicatorsDialog.js +0 -121
  179. package/dist/react/workspace/IndicatorsDialog.js.map +0 -1
  180. package/dist/react/workspace/LayoutMenu.js +0 -113
  181. package/dist/react/workspace/LayoutMenu.js.map +0 -1
  182. package/dist/react/workspace/SymbolSearchDialog.js +0 -245
  183. package/dist/react/workspace/SymbolSearchDialog.js.map +0 -1
  184. package/dist/react/workspace/TabBar.js +0 -29
  185. package/dist/react/workspace/TabBar.js.map +0 -1
  186. package/dist/react/workspace/toolbars/BottomToolbar.js +0 -236
  187. package/dist/react/workspace/toolbars/BottomToolbar.js.map +0 -1
  188. package/dist/react/workspace/toolbars/RightToolbar.js +0 -18
  189. package/dist/react/workspace/toolbars/RightToolbar.js.map +0 -1
  190. package/dist/react/workspace/toolbars/TopToolbar.js +0 -82
  191. package/dist/react/workspace/toolbars/TopToolbar.js.map +0 -1
  192. package/dist/renderers/CandlestickRenderer.js +0 -98
  193. package/dist/renderers/CandlestickRenderer.js.map +0 -1
  194. package/dist/renderers/HistogramRenderer.js +0 -50
  195. package/dist/renderers/HistogramRenderer.js.map +0 -1
  196. package/dist/renderers/LineRenderer.js +0 -64
  197. package/dist/renderers/LineRenderer.js.map +0 -1
  198. package/dist/theme/colors.js +0 -19
  199. package/dist/theme/colors.js.map +0 -1
  200. package/dist/tools/barDivergenceCheck.js +0 -200
  201. package/dist/tools/barDivergenceCheck.js.map +0 -1
  202. package/dist/trading/TradingOverlayStore.js +0 -139
  203. package/dist/trading/TradingOverlayStore.js.map +0 -1
  204. package/dist/trading/UnmanagedIngestion.js +0 -114
  205. package/dist/trading/UnmanagedIngestion.js.map +0 -1
  206. package/dist/trading/__tests__/ManagedTradingController.test.js +0 -271
  207. package/dist/trading/__tests__/ManagedTradingController.test.js.map +0 -1
  208. package/dist/trading/__tests__/TradingOverlayStore.test.js +0 -267
  209. package/dist/trading/__tests__/TradingOverlayStore.test.js.map +0 -1
  210. package/dist/trading/__tests__/UnmanagedIngestion.test.js +0 -170
  211. package/dist/trading/__tests__/UnmanagedIngestion.test.js.map +0 -1
  212. package/dist/trading/managed/ManagedTradingController.js +0 -247
  213. package/dist/trading/managed/ManagedTradingController.js.map +0 -1
  214. package/dist/trading/managed/managedCapabilities.js +0 -79
  215. package/dist/trading/managed/managedCapabilities.js.map +0 -1
  216. package/dist/trading/managed/managedTypes.js +0 -13
  217. package/dist/trading/managed/managedTypes.js.map +0 -1
  218. package/dist/trading/tradingTypes.js +0 -8
  219. package/dist/trading/tradingTypes.js.map +0 -1
  220. package/dist/tscript/TScriptIndicator.js +0 -47
  221. package/dist/tscript/TScriptIndicator.js.map +0 -1
  222. package/dist/tscript/ast.js +0 -22
  223. package/dist/tscript/ast.js.map +0 -1
  224. package/dist/tscript/lexer.js +0 -187
  225. package/dist/tscript/lexer.js.map +0 -1
  226. package/dist/tscript/parser.js +0 -318
  227. package/dist/tscript/parser.js.map +0 -1
  228. package/dist/tscript/runtime.js +0 -475
  229. package/dist/tscript/runtime.js.map +0 -1
  230. package/dist/tscript/series.js +0 -79
  231. package/dist/tscript/series.js.map +0 -1
  232. package/dist/types/IChart.js +0 -2
  233. package/dist/types/IChart.js.map +0 -1
  234. package/dist/types/IRenderer.js +0 -2
  235. package/dist/types/IRenderer.js.map +0 -1
  236. package/dist/types/ISeries.js +0 -2
  237. package/dist/types/ISeries.js.map +0 -1
@@ -1,416 +0,0 @@
1
- /**
2
- * Pine Script Parser — recursive-descent, produces a PineProgram AST.
3
- *
4
- * Handles the supported Pine v5 subset:
5
- * indicator(), input.*(), ta.*(), math.*(), plot(), plotshape()
6
- * var / varip declarations
7
- * := reassignment
8
- * if / else (indented blocks)
9
- * ternary a ? b : c
10
- * namespace.member and namespace.call(...)
11
- */
12
- import { PineLexer } from './pine-lexer';
13
- export class PineParser {
14
- _tokens;
15
- _pos = 0;
16
- version;
17
- constructor(src) {
18
- const lexer = new PineLexer(src);
19
- this._tokens = lexer.tokenize();
20
- this.version = lexer.version;
21
- }
22
- parse() {
23
- const stmts = [];
24
- this._skipNL();
25
- while (!this._check('EOF')) {
26
- const s = this._stmt();
27
- if (s !== null)
28
- stmts.push(s);
29
- this._skipNL();
30
- }
31
- return { kind: 'PineProgram', version: this.version, stmts };
32
- }
33
- // ─── Statements ─────────────────────────────────────────────────────────────
34
- _stmt() {
35
- const t = this._cur();
36
- const loc = { line: t.line, col: t.col };
37
- // var / varip declaration
38
- if (t.kind === 'IDENT' && (t.value === 'var' || t.value === 'varip')) {
39
- return this._varDecl();
40
- }
41
- // if statement
42
- if (t.kind === 'IDENT' && t.value === 'if') {
43
- return this._ifStmt();
44
- }
45
- // Assignment: IDENT = expr or IDENT := expr
46
- // Also handles "IDENT type_hint = expr" e.g. "float x = 1.0" — skip type hints
47
- if (t.kind === 'IDENT') {
48
- // Peek ahead skipping possible type-hint token
49
- const p1 = this._peekKind(1);
50
- const p2 = this._peekKind(2);
51
- const isAssign = p1 === 'ASSIGN' || p1 === 'REASSIGN';
52
- const isTyped = p1 === 'IDENT' && (p2 === 'ASSIGN' || p2 === 'REASSIGN');
53
- if (isAssign || isTyped) {
54
- return this._assignStmt();
55
- }
56
- }
57
- // indicator() special top-level
58
- if (t.kind === 'IDENT' && t.value === 'indicator') {
59
- return this._indicatorDecl();
60
- }
61
- // Expression statement (plot, function calls, etc.)
62
- const expr = this._expr();
63
- this._consumeNLorEOF();
64
- return { kind: 'PineExprStmt', expr, loc };
65
- }
66
- _varDecl() {
67
- const tok = this._advance();
68
- const modifier = tok.value;
69
- const loc = { line: tok.line, col: tok.col };
70
- // optional type hint (float, int, bool, string, color, ...)
71
- let typeHint;
72
- if (this._check('IDENT') && this._peekKind(1) === 'ASSIGN') {
73
- // possible: "var float x = ..."
74
- const maybeType = this._cur().value;
75
- if (['float', 'int', 'bool', 'string', 'color', 'series', 'simple', 'const'].includes(maybeType)) {
76
- typeHint = maybeType;
77
- this._advance();
78
- }
79
- }
80
- const name = this._consume('IDENT', "Expected variable name after 'var'").value;
81
- this._consume('ASSIGN', "Expected '=' in var declaration");
82
- const value = this._expr();
83
- this._consumeNLorEOF();
84
- return typeHint !== undefined
85
- ? { kind: 'PineVarDecl', modifier, name, typeHint, value, loc }
86
- : { kind: 'PineVarDecl', modifier, name, value, loc };
87
- }
88
- _assignStmt() {
89
- const nameTok = this._advance();
90
- const loc = { line: nameTok.line, col: nameTok.col };
91
- const name = nameTok.value;
92
- // Skip type hint if present: "float x = ..."
93
- let op = '=';
94
- if (this._check('IDENT')) {
95
- // type hint token — consume silently
96
- this._advance();
97
- }
98
- if (this._check('REASSIGN')) {
99
- op = ':=';
100
- this._advance();
101
- }
102
- else {
103
- this._consume('ASSIGN', "Expected '=' or ':='");
104
- }
105
- const value = this._expr();
106
- this._consumeNLorEOF();
107
- return { kind: 'PineAssign', name, op, value, loc };
108
- }
109
- _indicatorDecl() {
110
- const tok = this._advance(); // consume 'indicator'
111
- const loc = { line: tok.line, col: tok.col };
112
- this._consume('LPAREN', "Expected '(' after 'indicator'");
113
- const { args, namedArgs } = this._argList();
114
- this._consume('RPAREN', "Expected ')' after indicator args");
115
- this._consumeNLorEOF();
116
- return { kind: 'PineIndicatorDecl', args, namedArgs, loc };
117
- }
118
- _ifStmt() {
119
- const tok = this._advance(); // consume 'if'
120
- const loc = { line: tok.line, col: tok.col };
121
- const condition = this._expr();
122
- this._consumeNLorEOF();
123
- const then = this._indentedBlock();
124
- const else_ = [];
125
- // optional 'else'
126
- if (this._check('IDENT') && this._cur().value === 'else') {
127
- this._advance();
128
- this._consumeNLorEOF();
129
- else_.push(...this._indentedBlock());
130
- }
131
- return { kind: 'PineIf', condition, then, else_, loc };
132
- }
133
- _indentedBlock() {
134
- const stmts = [];
135
- if (!this._check('INDENT'))
136
- return stmts;
137
- this._advance(); // consume INDENT
138
- this._skipNL();
139
- while (!this._check('DEDENT') && !this._check('EOF')) {
140
- const s = this._stmt();
141
- if (s !== null)
142
- stmts.push(s);
143
- this._skipNL();
144
- }
145
- if (this._check('DEDENT'))
146
- this._advance(); // consume DEDENT
147
- return stmts;
148
- }
149
- // ─── Expressions ────────────────────────────────────────────────────────────
150
- _expr() { return this._ternary(); }
151
- _ternary() {
152
- let left = this._or();
153
- if (this._match('QMARK')) {
154
- const consequent = this._expr();
155
- this._consume('COLON', "Expected ':' in ternary");
156
- const alternate = this._expr();
157
- const node = {
158
- kind: 'PineTernary', condition: left, consequent, alternate,
159
- loc: this._locOf(left),
160
- };
161
- return node;
162
- }
163
- return left;
164
- }
165
- _or() {
166
- let left = this._and();
167
- while (this._checkIdent('or')) {
168
- this._advance();
169
- const right = this._and();
170
- left = this._bin('or', left, right);
171
- }
172
- return left;
173
- }
174
- _and() {
175
- let left = this._not();
176
- while (this._checkIdent('and')) {
177
- this._advance();
178
- const right = this._not();
179
- left = this._bin('and', left, right);
180
- }
181
- return left;
182
- }
183
- _not() {
184
- if (this._checkIdent('not')) {
185
- const loc = this._locOfCur();
186
- this._advance();
187
- const operand = this._comparison();
188
- const node = { kind: 'PineUnary', op: 'not', operand, loc };
189
- return node;
190
- }
191
- return this._comparison();
192
- }
193
- _comparison() {
194
- let left = this._addition();
195
- while (true) {
196
- if (this._match('LTE')) {
197
- left = this._bin('<=', left, this._addition());
198
- continue;
199
- }
200
- if (this._match('GTE')) {
201
- left = this._bin('>=', left, this._addition());
202
- continue;
203
- }
204
- if (this._match('EQEQ')) {
205
- left = this._bin('==', left, this._addition());
206
- continue;
207
- }
208
- if (this._match('NEQ')) {
209
- left = this._bin('!=', left, this._addition());
210
- continue;
211
- }
212
- if (this._match('LT')) {
213
- left = this._bin('<', left, this._addition());
214
- continue;
215
- }
216
- if (this._match('GT')) {
217
- left = this._bin('>', left, this._addition());
218
- continue;
219
- }
220
- break;
221
- }
222
- return left;
223
- }
224
- _addition() {
225
- let left = this._multiply();
226
- while (true) {
227
- if (this._match('PLUS')) {
228
- left = this._bin('+', left, this._multiply());
229
- continue;
230
- }
231
- if (this._match('MINUS')) {
232
- left = this._bin('-', left, this._multiply());
233
- continue;
234
- }
235
- break;
236
- }
237
- return left;
238
- }
239
- _multiply() {
240
- let left = this._unary();
241
- while (true) {
242
- if (this._match('STAR')) {
243
- left = this._bin('*', left, this._unary());
244
- continue;
245
- }
246
- if (this._match('SLASH')) {
247
- left = this._bin('/', left, this._unary());
248
- continue;
249
- }
250
- if (this._match('PERCENT')) {
251
- left = this._bin('%', left, this._unary());
252
- continue;
253
- }
254
- break;
255
- }
256
- return left;
257
- }
258
- _unary() {
259
- if (this._match('MINUS')) {
260
- const operand = this._unary();
261
- const node = { kind: 'PineUnary', op: '-', operand, loc: this._locOfCur() };
262
- return node;
263
- }
264
- return this._postfix();
265
- }
266
- _postfix() {
267
- let expr = this._primary();
268
- // Series indexing: expr[n]
269
- while (this._check('LBRACKET')) {
270
- const loc = this._locOfCur();
271
- this._advance();
272
- const index = this._expr();
273
- this._consume('RBRACKET', "Expected ']'");
274
- const node = { kind: 'PineIndex', series: expr, index, loc };
275
- expr = node;
276
- }
277
- return expr;
278
- }
279
- _primary() {
280
- const t = this._cur();
281
- const loc = { line: t.line, col: t.col };
282
- if (t.kind === 'NUMBER') {
283
- this._advance();
284
- const node = { kind: 'PineNumberLit', value: parseFloat(t.value), loc };
285
- return node;
286
- }
287
- if (t.kind === 'STRING') {
288
- this._advance();
289
- const node = { kind: 'PineStringLit', value: t.value, loc };
290
- return node;
291
- }
292
- if (t.kind === 'BOOL') {
293
- this._advance();
294
- const node = { kind: 'PineBoolLit', value: t.value === 'true', loc };
295
- return node;
296
- }
297
- // na constant
298
- if (t.kind === 'IDENT' && t.value === 'na') {
299
- this._advance();
300
- const node = { kind: 'PineNa', loc };
301
- return node;
302
- }
303
- // IDENT '.' IDENT → namespace member or namespaced call
304
- if (t.kind === 'IDENT' && this._peekKind(1) === 'DOT') {
305
- const ns = t.value;
306
- this._advance(); // consume ns
307
- this._advance(); // consume .
308
- const member = this._consume('IDENT', "Expected member name after '.'").value;
309
- // Namespaced call: ns.fn(...)
310
- if (this._check('LPAREN')) {
311
- this._advance();
312
- const { args, namedArgs } = this._argList();
313
- this._consume('RPAREN', "Expected ')'");
314
- const node = { kind: 'PineNsCall', namespace: ns, fn: member, args, namedArgs, loc };
315
- return node;
316
- }
317
- // Namespaced member: color.red, bar_index, etc.
318
- const node = { kind: 'PineMember', object: ns, prop: member, loc };
319
- return node;
320
- }
321
- // Plain function call: IDENT '(' ... ')'
322
- if (t.kind === 'IDENT' && this._peekKind(1) === 'LPAREN') {
323
- const fn = t.value;
324
- this._advance();
325
- this._advance(); // consume (
326
- const { args, namedArgs } = this._argList();
327
- this._consume('RPAREN', "Expected ')'");
328
- const node = { kind: 'PineCall', fn, args, namedArgs, loc };
329
- return node;
330
- }
331
- // Plain identifier
332
- if (t.kind === 'IDENT') {
333
- this._advance();
334
- const node = { kind: 'PineIdent', name: t.value, loc };
335
- return node;
336
- }
337
- // Grouped expression
338
- if (t.kind === 'LPAREN') {
339
- this._advance();
340
- const inner = this._expr();
341
- this._consume('RPAREN', "Expected ')'");
342
- return inner;
343
- }
344
- throw new SyntaxError(`[Pine] Unexpected token '${t.value}' (${t.kind}) at ${t.line}:${t.col}`);
345
- }
346
- // ─── Arg list helper ────────────────────────────────────────────────────────
347
- _argList() {
348
- const args = [];
349
- const namedArgs = new Map();
350
- if (this._check('RPAREN'))
351
- return { args, namedArgs };
352
- // First arg
353
- this._parseOneArg(args, namedArgs);
354
- while (this._match('COMMA')) {
355
- if (this._check('RPAREN'))
356
- break; // trailing comma
357
- this._parseOneArg(args, namedArgs);
358
- }
359
- return { args, namedArgs };
360
- }
361
- _parseOneArg(args, namedArgs) {
362
- // Named arg: name = value ? (peek: IDENT = non-'=')
363
- if (this._check('IDENT') &&
364
- this._peekKind(1) === 'ASSIGN' &&
365
- this._peekKind(2) !== 'ASSIGN' // not ==
366
- ) {
367
- const key = this._advance().value;
368
- this._advance(); // consume =
369
- const val = this._expr();
370
- namedArgs.set(key, val);
371
- }
372
- else {
373
- args.push(this._expr());
374
- }
375
- }
376
- // ─── Token helpers ───────────────────────────────────────────────────────────
377
- _cur() { return this._tokens[this._pos]; }
378
- _advance() { return this._tokens[this._pos++]; }
379
- _check(kind) { return this._cur().kind === kind; }
380
- _checkIdent(name) {
381
- const t = this._cur();
382
- return t.kind === 'IDENT' && t.value === name;
383
- }
384
- _peekKind(offset) {
385
- return this._tokens[this._pos + offset]?.kind ?? 'EOF';
386
- }
387
- _match(kind) {
388
- if (this._check(kind)) {
389
- this._advance();
390
- return true;
391
- }
392
- return false;
393
- }
394
- _consume(kind, msg) {
395
- if (this._check(kind))
396
- return this._advance();
397
- const t = this._cur();
398
- throw new SyntaxError(`[Pine] ${msg} — got '${t.value}' (${t.kind}) at ${t.line}:${t.col}`);
399
- }
400
- _skipNL() {
401
- while (this._check('NEWLINE'))
402
- this._advance();
403
- }
404
- _consumeNLorEOF() {
405
- if (this._check('NEWLINE') || this._check('EOF')) {
406
- if (this._check('NEWLINE'))
407
- this._advance();
408
- }
409
- }
410
- _locOfCur() { return { line: this._cur().line, col: this._cur().col }; }
411
- _locOf(expr) { return expr.loc; }
412
- _bin(op, left, right) {
413
- return { kind: 'PineBinary', op, left, right, loc: this._locOf(left) };
414
- }
415
- }
416
- //# sourceMappingURL=pine-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pine-parser.js","sourceRoot":"","sources":["../../src/pine/pine-parser.ts"],"names":[],"mappings":"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"}