@invinite-org/chartlang-compiler 1.2.0 → 1.3.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/CHANGELOG.md +254 -0
- package/dist/analysis/extractAlertConditions.js.map +1 -1
- package/dist/analysis/extractCapabilities.js.map +1 -1
- package/dist/analysis/extractDependencyGraph.js.map +1 -1
- package/dist/analysis/extractInputs.js.map +1 -1
- package/dist/analysis/extractMaxLookback.d.ts +2 -1
- package/dist/analysis/extractMaxLookback.d.ts.map +1 -1
- package/dist/analysis/extractMaxLookback.js +90 -6
- package/dist/analysis/extractMaxLookback.js.map +1 -1
- package/dist/analysis/extractRequestedIntervals.d.ts +43 -1
- package/dist/analysis/extractRequestedIntervals.d.ts.map +1 -1
- package/dist/analysis/extractRequestedIntervals.js +95 -10
- package/dist/analysis/extractRequestedIntervals.js.map +1 -1
- package/dist/analysis/extractRequiresIntervals.js.map +1 -1
- package/dist/analysis/forbiddenConstructs.d.ts.map +1 -1
- package/dist/analysis/forbiddenConstructs.js +2 -41
- package/dist/analysis/forbiddenConstructs.js.map +1 -1
- package/dist/analysis/index.d.ts +3 -1
- package/dist/analysis/index.d.ts.map +1 -1
- package/dist/analysis/index.js +2 -1
- package/dist/analysis/index.js.map +1 -1
- package/dist/analysis/loopBounds.d.ts +91 -0
- package/dist/analysis/loopBounds.d.ts.map +1 -0
- package/dist/analysis/loopBounds.js +132 -0
- package/dist/analysis/loopBounds.js.map +1 -0
- package/dist/analysis/resolveIndexBound.d.ts +73 -0
- package/dist/analysis/resolveIndexBound.d.ts.map +1 -0
- package/dist/analysis/resolveIndexBound.js +336 -0
- package/dist/analysis/resolveIndexBound.js.map +1 -0
- package/dist/analysis/statefulCallInLoop.js.map +1 -1
- package/dist/analysis/structuralChecks.js.map +1 -1
- package/dist/analysis/validateLowerTfIntervals.js.map +1 -1
- package/dist/analysis/validateSecurityExpr.d.ts +25 -0
- package/dist/analysis/validateSecurityExpr.d.ts.map +1 -0
- package/dist/analysis/validateSecurityExpr.js +154 -0
- package/dist/analysis/validateSecurityExpr.js.map +1 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +13 -3
- package/dist/api.js.map +1 -1
- package/dist/bundle.js.map +1 -1
- package/dist/dependency/index.js.map +1 -1
- package/dist/dependency/resolveProducer.js.map +1 -1
- package/dist/diagnostics.d.ts +4 -2
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +2 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +7 -0
- package/dist/manifest.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +91 -14
- package/dist/program.js.map +1 -1
- package/dist/transformers/callsiteIdInjection.d.ts +21 -0
- package/dist/transformers/callsiteIdInjection.d.ts.map +1 -1
- package/dist/transformers/callsiteIdInjection.js +26 -3
- package/dist/transformers/callsiteIdInjection.js.map +1 -1
- package/dist/transformers/index.js.map +1 -1
- package/dist/transformers/plotKindFromCallsite.js.map +1 -1
- package/dist/transformers/resolveCallee.d.ts +21 -0
- package/dist/transformers/resolveCallee.d.ts.map +1 -1
- package/dist/transformers/resolveCallee.js +14 -1
- package/dist/transformers/resolveCallee.js.map +1 -1
- package/dist/transformers/rewriteDependencyAccessors.js.map +1 -1
- package/dist/typesEmit.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,259 @@
|
|
|
1
1
|
# @invinite-org/chartlang-compiler
|
|
2
2
|
|
|
3
|
+
## 1.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 850ae21: Add `bar.point(offset, price)` — index authoring sugar for anchoring drawings
|
|
8
|
+
by bar offset instead of an absolute timestamp.
|
|
9
|
+
|
|
10
|
+
`bar.point` resolves the offset to the existing time-based `WorldPoint`
|
|
11
|
+
(`{ time, price }`) at compute time, so it composes directly with every
|
|
12
|
+
`draw.*` anchor argument and introduces no new wire format or anchor union:
|
|
13
|
+
|
|
14
|
+
- `bar.point(0, price)` — the current bar.
|
|
15
|
+
- `bar.point(-n, price)` — `n` bars back, using the real historical timestamp
|
|
16
|
+
from the runtime's time ring buffer (`NaN` time past retained history; never
|
|
17
|
+
throws).
|
|
18
|
+
- `bar.point(n, price)` — a future bar, with the time extrapolated from the
|
|
19
|
+
median recent bar spacing (falling back to the parsed bar interval when
|
|
20
|
+
fewer than two bars are retained).
|
|
21
|
+
|
|
22
|
+
The compiler's max-lookback analysis now counts a negative integer-literal
|
|
23
|
+
`bar.point(-n, …)` offset toward `maxLookback` exactly like a `series[n]`
|
|
24
|
+
lookback, so the runtime sizes the time buffer deeply enough; positive (future)
|
|
25
|
+
offsets and dynamic offsets contribute no extra depth. The recogniser peels
|
|
26
|
+
parentheses, so the converter's emitted form `bar.point(-(n), …)` is sized
|
|
27
|
+
identically to a hand-written `bar.point(-n, …)` (without it, a converted
|
|
28
|
+
historical tracking line sized its buffer to 0 and resolved to a NaN anchor).
|
|
29
|
+
|
|
30
|
+
The Pine v6 converter now lowers `bar_index` drawing anchors to
|
|
31
|
+
`bar.point(<signed offset>, <price>)` and drops the dead `__BAR_INTERVAL_MS`
|
|
32
|
+
sentinel and its `bar.time ± (N * __BAR_INTERVAL_MS)` arithmetic — future
|
|
33
|
+
anchors resolve at runtime instead of needing a host-supplied bar interval.
|
|
34
|
+
|
|
35
|
+
- ca19e20: Bidirectional plot `offset` — negative offsets shift a plotted series left.
|
|
36
|
+
|
|
37
|
+
`offset` becomes a presentation-only **display shift** in bars with the
|
|
38
|
+
fixed sign convention `+n` = right (future), `−n` = left (past); the
|
|
39
|
+
numeric series value is unshifted. This replaces the old value-read model
|
|
40
|
+
(where a positive offset made `series.current` read the value N bars ago
|
|
41
|
+
and a negative offset resolved to `NaN`). The `*Opts` `offset` JSDoc (and
|
|
42
|
+
ALMA's `barShift`) now describe both directions and drop the old
|
|
43
|
+
"negative ⇒ NaN" wording (`AlmaOpts.offset`, the Gaussian-centre
|
|
44
|
+
position, is unchanged).
|
|
45
|
+
|
|
46
|
+
`PlotEmission` gains an optional presentation field `xShift?: number`
|
|
47
|
+
(signed integer bars; omitted/`0` ≡ no shift, so a no-shift emission is
|
|
48
|
+
byte-identical to today). `validateEmission` rejects a non-integer
|
|
49
|
+
`xShift`. The compiler no longer counts `offset` toward `maxLookback`
|
|
50
|
+
(the value is no longer read from a deeper slot). The runtime threads the
|
|
51
|
+
declared offset onto the emission as `xShift` (reading a
|
|
52
|
+
`WeakMap<Series, number>` offset tag set by `makeShiftedSeriesView`; ALMA
|
|
53
|
+
tags `opts.barShift`) and stops the old value-read shift so
|
|
54
|
+
`series.current` is unshifted; the reference adapter renders it by
|
|
55
|
+
projecting `xShift` onto the x-axis (extending the viewport for
|
|
56
|
+
future-shifted points).
|
|
57
|
+
|
|
58
|
+
The Pine converter now maps `plot(<ta.* call>, offset=N)` onto the
|
|
59
|
+
emitted `ta.*` call's `offset` opt (signed, both directions); a plot
|
|
60
|
+
whose value is not a direct `ta.*` call drops the offset and emits the
|
|
61
|
+
new `plot-offset-needs-ta-call` warning, and a plot-level offset
|
|
62
|
+
replacing the ta call's own `offset=` emits `plot-offset-overrides-ta-offset`.
|
|
63
|
+
|
|
64
|
+
The conformance harness's `plot-field` assertion gains an `xShift` field,
|
|
65
|
+
and a new scenario pins both shift directions plus the unshifted value
|
|
66
|
+
series.
|
|
67
|
+
|
|
68
|
+
- 3541445: Size series-index buffers precisely for provably-bounded indices.
|
|
69
|
+
|
|
70
|
+
`extractMaxLookback` now resolves a series read at a literal, a
|
|
71
|
+
bounded-`for` induction variable (`for (let i = 0; i < N; i++) src[i]`),
|
|
72
|
+
a `const` numeric literal, or an affine combination of those
|
|
73
|
+
(`src[i + 1]`, `src[K - i]`, `src[2 * i]`) to its exact `maxLookback`
|
|
74
|
+
contribution via a new compile-time interval resolver
|
|
75
|
+
(`resolveIndexUpperBound`) sharing one `parseBoundedForLoop` helper with
|
|
76
|
+
`forbiddenConstructs`. These indices no longer emit the
|
|
77
|
+
`dynamic-series-index` warning or force the 5000-slot `dynamicFallback`
|
|
78
|
+
buffer — they size the ring buffer exactly like a literal lookback. The
|
|
79
|
+
resolver over-approximates (never under-sizes); genuinely dynamic indices
|
|
80
|
+
(unbounded variables, unsupported operators, non-terminating loops,
|
|
81
|
+
reassigned loop variables) keep the warning + fallback. A new
|
|
82
|
+
`loop-sma` conformance scenario pins a `for`-loop SMA as bar-for-bar
|
|
83
|
+
identical to `ta.sma(close, 5)`.
|
|
84
|
+
|
|
85
|
+
- 6235ad7: Make the compute bar's OHLCV + derived fields directly indexable as a series.
|
|
86
|
+
|
|
87
|
+
`bar.close`, `bar.open`, `bar.high`, `bar.low`, `bar.volume`, and the derived
|
|
88
|
+
`bar.hl2` / `bar.hlc3` / `bar.ohlc4` / `bar.hlcc4` are now `PriceSeries` /
|
|
89
|
+
`VolumeSeries` (`number & Series<number>`) on the bar passed to `compute`
|
|
90
|
+
(`ComputeContext.bar`, typed as the new `BarSeries`). Each field is **both** a
|
|
91
|
+
scalar — `bar.close * 2`, `plot(bar.close)`, `ta.ema(bar.close, 20)` keep
|
|
92
|
+
working unchanged — **and** an indexable series, so a script can read prior
|
|
93
|
+
bars directly:
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
const sma5 =
|
|
97
|
+
(bar.close[0] + bar.close[1] + bar.close[2] + bar.close[3] + bar.close[4]) /
|
|
98
|
+
5;
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
This removes the `ta.ema(bar.close, 1)` identity-trick that scripts previously
|
|
102
|
+
needed to "republish" a scalar price as an indexable `Series`.
|
|
103
|
+
|
|
104
|
+
The adapter-supplied candle type `Bar` (and `request.lowerTf` intrabar bars) is
|
|
105
|
+
unchanged — it stays scalar OHLCV; only the streaming `compute` bar gains the
|
|
106
|
+
series shape. `request.security`'s higher-timeframe bar remains the separate
|
|
107
|
+
`SecurityBar`.
|
|
108
|
+
|
|
109
|
+
Migration note: because the field is now an object, `Number.isFinite(bar.close)`
|
|
110
|
+
is always `false` (it does not coerce) and `bar.close === 42` is `false` (object
|
|
111
|
+
vs number). Use `bar.close.current` or `+bar.close` in those raw-number
|
|
112
|
+
contexts. `bar.point(0, bar.close)` continues to work — the runtime coerces the
|
|
113
|
+
anchor price to a scalar.
|
|
114
|
+
|
|
115
|
+
- 3bf391a: Add the `draw.fillBetween(edgeA, edgeB, opts?)` drawing primitive — a
|
|
116
|
+
native filled ribbon between two edges (the closed polygon `edgeA`
|
|
117
|
+
forward then `edgeB` reversed). It is the chartlang equivalent of Pine's
|
|
118
|
+
`linefill.new(line1, line2, color)` / `fill(plot1, plot2)`. The
|
|
119
|
+
pine-converter now lowers static two-line `linefill.new` to it instead of
|
|
120
|
+
approximating with `draw.rotatedRectangle`, retiring the
|
|
121
|
+
`linefill-rotatedrect-approximated` diagnostic.
|
|
122
|
+
- 8086003: Add an optional presentation-only `z` (render-order / z-index) option to
|
|
123
|
+
`plot()` and every `draw.*` primitive. Default `0`; higher renders on
|
|
124
|
+
top, ties fall back to the existing group + declaration order. Finite
|
|
125
|
+
numbers only. Affects stacking only — values, alerts, and `state.*` are
|
|
126
|
+
unchanged.
|
|
127
|
+
|
|
128
|
+
Adapter kit: `PlotEmission` and `DrawingEmission` gain the matching
|
|
129
|
+
presentation-only `z?: number` wire field, validated by
|
|
130
|
+
`validateEmission` as a finite number (NaN / ±Infinity rejected;
|
|
131
|
+
fractional and negative allowed). Omitted/`0` stays byte-identical to a
|
|
132
|
+
pre-feature emission, so existing goldens and conformance hashes are
|
|
133
|
+
untouched.
|
|
134
|
+
|
|
135
|
+
Runtime: `plotImpl` reads `opts.z`, and the drawing-emit path
|
|
136
|
+
(`createDrawingHandle`) lifts `z` out of `state.style` — into a shallow
|
|
137
|
+
clone with `z` removed, where the per-kind `draw.*` impls fold the opts
|
|
138
|
+
bag — and threads it onto the top-level `PlotEmission.z` /
|
|
139
|
+
`DrawingEmission.z` with the same omit-when-`0` conditional spread used
|
|
140
|
+
for `xShift`. `z` is persisted **beside** the drawing slot's `state`
|
|
141
|
+
(never inside `DrawingState`), so an `update` retains the last value. A
|
|
142
|
+
no-`z` plot or drawing emits no `z` key — byte-identical to the
|
|
143
|
+
pre-feature baseline. `draw.table` / `draw.group` do not carry `z` in
|
|
144
|
+
v1.
|
|
145
|
+
|
|
146
|
+
Pine converter: `explicit_plot_zorder` is now a recognized no-op instead
|
|
147
|
+
of an unmapped warning. chartlang already layers marks by declaration
|
|
148
|
+
order within their group (the normative ordering contract), which is
|
|
149
|
+
exactly what Pine's `explicit_plot_zorder=true` makes authoritative — so
|
|
150
|
+
the flag is satisfied by default and needs no chartlang option.
|
|
151
|
+
`mapDeclarationArgs` no longer raises `indicator-arg-not-mapped` for it;
|
|
152
|
+
instead it emits a single `explicit-plot-zorder-default` info note
|
|
153
|
+
(covering both `explicit_plot_zorder=true` and the Pine-default
|
|
154
|
+
`=false`). The converter still never _emits_ a numeric `z` — Pine has no
|
|
155
|
+
per-element z source construct. Other unmapped `indicator(...)` args
|
|
156
|
+
(`timeframe`, etc.) keep warning.
|
|
157
|
+
|
|
158
|
+
Compiler: the ambient `@invinite-org/chartlang-core` `.d.ts` shim gains a
|
|
159
|
+
`ZOrdered { z?: number }` mixin intersected into `PlotOpts` and every
|
|
160
|
+
`draw.*` option type (mirroring core's `drawingStyle.ts`), so a compiled
|
|
161
|
+
script's `plot(value, { z })` **and** `draw.*(…, { z })` type-check (the
|
|
162
|
+
shim stays in lockstep with core).
|
|
163
|
+
|
|
164
|
+
Conformance: a new `z-order` scenario pins the plot `z` →
|
|
165
|
+
`PlotEmission.z` wire contract — a `plot(value, { z: -1 })` emits
|
|
166
|
+
`z: -1`, a no-`z` plot omits the field (omit-when-`0` byte-identity), and
|
|
167
|
+
a value-hash proves `z` never transforms the series. The `plot-field`
|
|
168
|
+
assertion's `field` union widens to also accept `"z"`.
|
|
169
|
+
|
|
170
|
+
- 073f41b: Add the higher-timeframe expression/callback overload to `request.security`.
|
|
171
|
+
Alongside the existing data form `request.security({ interval })` →
|
|
172
|
+
`SecurityBar`, scripts can now write `request.security({ interval }, (bar) =>
|
|
173
|
+
…)` → `Series<number>`, where the callback runs on the **higher-timeframe
|
|
174
|
+
clock** — `request.security({ interval: "1W" }, (bar) => ta.ema(bar.close, 20))`
|
|
175
|
+
is a true weekly EMA(20) (20 weekly bars), not 20 main bars of a weekly-stepped
|
|
176
|
+
series. The result is aligned no-lookahead down to the main timeline.
|
|
177
|
+
|
|
178
|
+
- **core** — the `SecurityExpr` callback type (re-exported from the package
|
|
179
|
+
root), the second `security` overload, and the shared `statefulPrimitives`
|
|
180
|
+
entry annotated as covering both arities.
|
|
181
|
+
- **compiler** — records one `SecurityExpressionDescriptor { slotId, interval,
|
|
182
|
+
paramName }` per expression callsite in `manifest.securityExpressions`
|
|
183
|
+
(sorted by `slotId`, omitted for the data-only form), and validates each
|
|
184
|
+
callback against the allowed subset — its `bar` parameter and body locals,
|
|
185
|
+
the ambient `ta` / `inputs`, safe `Math.*` globals, and literals — rejecting
|
|
186
|
+
any captured outer binding with the new
|
|
187
|
+
`request-security-expr-captures-local` diagnostic.
|
|
188
|
+
- **runtime** — mounts one `SecurityExprRunner` per manifest entry: the
|
|
189
|
+
callback is captured lazily on the first main compute, driven once per HTF bar
|
|
190
|
+
close through a dedicated fold `StreamState` so `ta.*` accumulate on the HTF
|
|
191
|
+
clock, and one sampled value per HTF bar feeds a per-slot output buffer that
|
|
192
|
+
`request.security(opts, expr)` returns aligned no-lookahead to the main
|
|
193
|
+
timeline. Capability / interval / stream fallbacks return an all-NaN series
|
|
194
|
+
with a deduped diagnostic.
|
|
195
|
+
- **host-worker / host-quickjs** — boot the expression form unchanged; the
|
|
196
|
+
`__manifest` sidecar already carries `securityExpressions`.
|
|
197
|
+
- **pine-converter** — Pine's `request.security(sym, "D", ta.ema(close, 9))`
|
|
198
|
+
now lowers to the chartlang callback form
|
|
199
|
+
`request.security({ interval: "1d" }, (bar) => ta.ema(bar.close, 9))` (a bare
|
|
200
|
+
OHLCV third arg keeps lowering to the data form).
|
|
201
|
+
- **conformance** — new scenarios prove the weekly expression value differs
|
|
202
|
+
from a same-length main-timeframe EMA, plus the `multiTimeframe: false` NaN
|
|
203
|
+
fallback.
|
|
204
|
+
|
|
205
|
+
- 5a9c24d: Add `state.series(init)` — a writable, indexable user series. Store an
|
|
206
|
+
arbitrary value each bar (`s.value = expr`) and read its history N bars
|
|
207
|
+
back (`s[1]`). Number-coercible (`+s`, `s.current`) and usable as a `ta.*`
|
|
208
|
+
source. The Pine converter lowers a history-indexed `var` to it.
|
|
209
|
+
- 08c536c: Add the `ta.highestbars` / `ta.lowestbars` primitives plus the cross-package
|
|
210
|
+
wiring that makes them usable as drawing anchors and Pine-converter targets.
|
|
211
|
+
|
|
212
|
+
- **core / runtime:** `ta.highestbars(source, length, opts?)` and
|
|
213
|
+
`ta.lowestbars(source, length, opts?)` return the bar OFFSET (≤ 0) to the
|
|
214
|
+
highest / lowest `source` value over the trailing `length` bars (window
|
|
215
|
+
INCLUDES the current bar). `0` → current bar is the extreme; `-k` → the
|
|
216
|
+
extreme occurred `k` bars ago. Ties resolve to the most recent bar; NaN
|
|
217
|
+
inputs are skipped; warmup is `length − 1` bars; tick-mode replays the
|
|
218
|
+
in-progress head as the offset-0 candidate. Registered in
|
|
219
|
+
`STATEFUL_PRIMITIVES` (now 174 entries) and `TA_REGISTRY` (now 96 entries).
|
|
220
|
+
- **compiler:** a literal-length `ta.highestbars` / `ta.lowestbars` call
|
|
221
|
+
contributes `length − 1` toward `maxLookback`, so the runtime sizes the time
|
|
222
|
+
ring buffer deep enough for a `bar.point(<that offset>, …)` anchor to resolve.
|
|
223
|
+
A non-literal length contributes 0.
|
|
224
|
+
- **pine-converter:** `ta.highestbars` / `ta.lowestbars` now map to the real
|
|
225
|
+
chartlang primitives (previously lossy passthroughs to `ta.highest` /
|
|
226
|
+
`ta.lowest`). **Behavior change:** a DYNAMIC `bar_index + <non-literal>`
|
|
227
|
+
drawing-x anchor no longer raises the hard `requires-bar-interval` error —
|
|
228
|
+
the offset is resolved by `bar.point` at runtime sign-agnostically (a
|
|
229
|
+
negative runtime offset, e.g. what `ta.highestbars` returns, resolves to the
|
|
230
|
+
historical timestamp via the time buffer). Only the literal `bar_index + N`
|
|
231
|
+
future case still requires a bar interval.
|
|
232
|
+
- **conformance:** new `TA_HIGHEST_LOWEST_BARS_SCENARIO` export pins both
|
|
233
|
+
primitives end-to-end through the compiler + runtime over the bundled
|
|
234
|
+
`goldenBars.json` fixture, and is added to `ALL_SCENARIOS`.
|
|
235
|
+
|
|
236
|
+
### Patch Changes
|
|
237
|
+
|
|
238
|
+
- Updated dependencies [850ae21]
|
|
239
|
+
- Updated dependencies [ca19e20]
|
|
240
|
+
- Updated dependencies [6235ad7]
|
|
241
|
+
- Updated dependencies [3bf391a]
|
|
242
|
+
- Updated dependencies [8086003]
|
|
243
|
+
- Updated dependencies [850ae21]
|
|
244
|
+
- Updated dependencies [073f41b]
|
|
245
|
+
- Updated dependencies [5a9c24d]
|
|
246
|
+
- Updated dependencies [08c536c]
|
|
247
|
+
- @invinite-org/chartlang-core@1.2.0
|
|
248
|
+
|
|
249
|
+
## 1.2.1
|
|
250
|
+
|
|
251
|
+
### Patch Changes
|
|
252
|
+
|
|
253
|
+
- 71ea0a5: Inline original TypeScript sources into emitted `.js.map` files (`inlineSources: true`). Published sourcemaps no longer reference missing `../src/*.ts` files, fixing "points to missing source files" warnings in downstream bundlers (e.g. Vite).
|
|
254
|
+
- Updated dependencies [71ea0a5]
|
|
255
|
+
- @invinite-org/chartlang-core@1.1.1
|
|
256
|
+
|
|
3
257
|
## 1.2.0
|
|
4
258
|
|
|
5
259
|
### Minor Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractAlertConditions.js","sourceRoot":"","sources":["../../src/analysis/extractAlertConditions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extractAlertConditions.js","sourceRoot":"","sources":["../../src/analysis/extractAlertConditions.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { AlertConditionDefinition } from \"@invinite-org/chartlang-core\";\nimport ts from \"typescript\";\n\nimport { type CompileDiagnostic, createDiagnostic } from \"../diagnostics.js\";\nimport { resolveCalleeName } from \"../transformers/resolveCallee.js\";\n\n/**\n * Result of extracting `defineAlertCondition({ conditions })` metadata.\n *\n * @since 0.5\n * @stable\n * @example\n * const r: ExtractAlertConditionsResult = {\n * alertConditions: [],\n * diagnostics: [],\n * };\n * void r;\n */\nexport type ExtractAlertConditionsResult = Readonly<{\n alertConditions: ReadonlyArray<AlertConditionDefinition>;\n diagnostics: ReadonlyArray<CompileDiagnostic>;\n}>;\n\ntype ExtractContext = Readonly<{\n sourceFile: ts.SourceFile;\n sourcePath: string;\n diagnostics: CompileDiagnostic[];\n}>;\n\nfunction readPropertyName(name: ts.PropertyName): string | null {\n if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n return null;\n}\n\nfunction findConditionsInitializer(argument: ts.ObjectLiteralExpression): ts.Expression | null {\n for (const property of argument.properties) {\n if (!ts.isPropertyAssignment(property)) continue;\n if (!ts.isIdentifier(property.name) || property.name.text !== \"conditions\") continue;\n return property.initializer;\n }\n return null;\n}\n\nfunction addNotLiteralDiagnostic(node: ts.Node, context: ExtractContext): void {\n context.diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"alert-condition-not-literal\",\n message: \"defineAlertCondition conditions must be an object literal.\",\n file: context.sourcePath,\n node,\n sourceFile: context.sourceFile,\n }),\n );\n}\n\nfunction addFieldDiagnostic(node: ts.Node, field: string, context: ExtractContext): void {\n context.diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"alert-condition-field-not-literal\",\n message: `defineAlertCondition condition field \"${field}\" must be a string literal.`,\n file: context.sourcePath,\n node,\n sourceFile: context.sourceFile,\n }),\n );\n}\n\nfunction readStringField(\n object: ts.ObjectLiteralExpression,\n field: \"title\" | \"description\" | \"defaultMessage\",\n context: ExtractContext,\n): string | null {\n for (const property of object.properties) {\n if (!ts.isPropertyAssignment(property)) continue;\n if (!ts.isIdentifier(property.name) || property.name.text !== field) continue;\n if (ts.isStringLiteral(property.initializer)) return property.initializer.text;\n addFieldDiagnostic(property.initializer, field, context);\n return null;\n }\n addFieldDiagnostic(object, field, context);\n return null;\n}\n\nfunction readCondition(\n id: string,\n initializer: ts.Expression,\n context: ExtractContext,\n): AlertConditionDefinition | null {\n if (!ts.isObjectLiteralExpression(initializer)) {\n addFieldDiagnostic(initializer, id, context);\n return null;\n }\n const title = readStringField(initializer, \"title\", context);\n const description = readStringField(initializer, \"description\", context);\n const defaultMessage = readStringField(initializer, \"defaultMessage\", context);\n if (title === null || description === null || defaultMessage === null) return null;\n return Object.freeze({ id, title, description, defaultMessage });\n}\n\n/**\n * Extract literal `defineAlertCondition({ conditions: { ... } })`\n * descriptors into manifest-ready metadata. Dynamic condition maps or\n * dynamic descriptor fields produce error diagnostics and are omitted.\n *\n * @since 0.5\n * @stable\n * @example\n * // const r = extractAlertConditions(sourceFile, checker, \"demo.chart.ts\");\n * const fn: typeof extractAlertConditions = extractAlertConditions;\n * void fn;\n */\nexport function extractAlertConditions(\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n sourcePath: string = sourceFile.fileName,\n): ExtractAlertConditionsResult {\n const alertConditions: AlertConditionDefinition[] = [];\n const diagnostics: CompileDiagnostic[] = [];\n const context: ExtractContext = { sourceFile, sourcePath, diagnostics };\n\n const visit = (node: ts.Node): void => {\n if (\n ts.isCallExpression(node) &&\n resolveCalleeName(node, checker) === \"defineAlertCondition\"\n ) {\n const argument = node.arguments[0];\n if (argument === undefined || !ts.isObjectLiteralExpression(argument)) {\n addNotLiteralDiagnostic(node, context);\n return;\n }\n const initializer = findConditionsInitializer(argument);\n if (initializer === null || !ts.isObjectLiteralExpression(initializer)) {\n addNotLiteralDiagnostic(initializer ?? argument, context);\n return;\n }\n for (const property of initializer.properties) {\n if (!ts.isPropertyAssignment(property)) continue;\n const id = readPropertyName(property.name);\n if (id === null) {\n addNotLiteralDiagnostic(property.name, context);\n continue;\n }\n const condition = readCondition(id, property.initializer, context);\n if (condition !== null) alertConditions.push(condition);\n }\n }\n ts.forEachChild(node, visit);\n };\n ts.forEachChild(sourceFile, visit);\n\n return Object.freeze({\n alertConditions: Object.freeze(alertConditions.slice()),\n diagnostics: Object.freeze(diagnostics.slice()),\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractCapabilities.js","sourceRoot":"","sources":["../../src/analysis/extractCapabilities.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAIrE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,mBAAmB,CAC/B,UAAyB,EACzB,OAAuB,EACvB,OAA6D,WAAW,EACxE,QAAiB,UAAU;IAE3B,MAAM,YAAY,GAEd;QACA,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,QAAQ;QACf,cAAc,EAAE,iBAAiB;KACpC,CAAC;IACF,MAAM,IAAI,GAAiB,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QAClC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;gBACzB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;QACL,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;IACF,KAAK,CAAC,KAAK,CAAC,CAAC;IAEb,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC"}
|
|
1
|
+
{"version":3,"file":"extractCapabilities.js","sourceRoot":"","sources":["../../src/analysis/extractCapabilities.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAE/D,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAIrE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,mBAAmB,CAC/B,UAAyB,EACzB,OAAuB,EACvB,OAA6D,WAAW,EACxE,QAAiB,UAAU;IAE3B,MAAM,YAAY,GAEd;QACA,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,QAAQ;QACf,cAAc,EAAE,iBAAiB;KACpC,CAAC;IACF,MAAM,IAAI,GAAiB,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,CAAC,IAAa,EAAQ,EAAE;QAClC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;gBACzB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;QACL,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;IACF,KAAK,CAAC,KAAK,CAAC,CAAC;IAEb,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport ts from \"typescript\";\n\nimport { resolveCalleeName } from \"../transformers/resolveCallee.js\";\n\ntype CapabilityId = \"indicators\" | \"drawings\" | \"alerts\" | \"alertConditions\";\n\n/**\n * Derive the manifest `capabilities` array from a script's AST. The seed\n * capability is determined by the structural script `kind`:\n * `defineIndicator` → `\"indicators\"`, `defineDrawing` → `\"drawings\"`,\n * `defineAlert` → `\"alerts\"`. `\"alerts\"` is added in addition whenever the\n * script calls `alert(...)` from `@invinite-org/chartlang-core` —\n * user-shadowed identifiers named `alert` are filtered out via\n * `resolveCalleeName`. The result is deduplicated and sorted for\n * deterministic manifest output.\n *\n * The optional `scope` parameter narrows the walk to a single AST subtree\n * (typically one binding's `defineCall`) so multi-export files can derive\n * per-binding capability sets. Defaults to the whole `sourceFile`.\n *\n * @since 0.1\n * @example\n * // const caps = extractCapabilities(sourceFile, checker, \"indicator\");\n * // caps === [\"alerts\", \"indicators\"]\n * const fn: typeof extractCapabilities = extractCapabilities;\n * void fn;\n */\nexport function extractCapabilities(\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n kind: \"indicator\" | \"drawing\" | \"alert\" | \"alertCondition\" = \"indicator\",\n scope: ts.Node = sourceFile,\n): ReadonlyArray<CapabilityId> {\n const SEED_BY_KIND: Readonly<\n Record<\"indicator\" | \"drawing\" | \"alert\" | \"alertCondition\", CapabilityId>\n > = {\n indicator: \"indicators\",\n drawing: \"drawings\",\n alert: \"alerts\",\n alertCondition: \"alertConditions\",\n };\n const seed: CapabilityId = SEED_BY_KIND[kind];\n const found = new Set<CapabilityId>([seed]);\n\n const visit = (node: ts.Node): void => {\n if (ts.isCallExpression(node)) {\n const calleeName = resolveCalleeName(node, checker);\n if (calleeName === \"alert\") {\n found.add(\"alerts\");\n }\n }\n ts.forEachChild(node, visit);\n };\n visit(scope);\n\n const ordered = Array.from(found).sort();\n return Object.freeze(ordered);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractDependencyGraph.js","sourceRoot":"","sources":["../../src/analysis/extractDependencyGraph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extractDependencyGraph.js","sourceRoot":"","sources":["../../src/analysis/extractDependencyGraph.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport type { JsonValue, OutputDeclaration } from \"@invinite-org/chartlang-core\";\nimport ts from \"typescript\";\n\nimport { type CompileDiagnostic, createDiagnostic } from \"../diagnostics.js\";\nimport { resolveCalleeName } from \"../transformers/resolveCallee.js\";\nimport type { StructuralBindingInfo } from \"./structuralChecks.js\";\n\n/**\n * Producer reference recorded on a consumer-side `const` binding. The\n * same-file variant carries the local binding name; the cross-file\n * variant carries the resolved POSIX path + ES-module export name.\n *\n * @since 0.7\n * @stable\n * @example\n * const r: ProducerRef = { kind: \"same-file\", bindingName: \"baseTrend\" };\n * void r;\n */\nexport type ProducerRef =\n | Readonly<{ kind: \"same-file\"; bindingName: string }>\n | Readonly<{ kind: \"cross-file\"; sourcePath: string; exportName: string }>;\n\n/**\n * One dep-graph edge — consumer binding → producer with the merged\n * effective inputs the bundler needs to fold into the producer's\n * compiled module at emit time.\n *\n * @since 0.7\n * @stable\n * @example\n * declare const dummyOutputs: ReadonlyArray<OutputDeclaration>;\n * const e: DepConsumesEntry = {\n * localId: \"fastTrend\",\n * producerRef: { kind: \"same-file\", bindingName: \"baseTrend\" },\n * outputs: dummyOutputs,\n * effectiveInputs: { length: 20 },\n * };\n * void e;\n */\nexport type DepConsumesEntry = Readonly<{\n readonly localId: string;\n readonly producerRef: ProducerRef;\n readonly outputs: ReadonlyArray<OutputDeclaration>;\n readonly effectiveInputs: Readonly<Record<string, JsonValue>>;\n}>;\n\n/**\n * One exported (drawn) indicator the file declares. `exportName` is\n * `\"default\"` for `export default`, the identifier text otherwise.\n *\n * @since 0.7\n * @stable\n * @example\n * // declare const callExpression: ts.CallExpression;\n * const d: DrawnScript = {\n * exportName: \"default\",\n * bindingName: \"default\",\n * defineCall: undefined as unknown as ts.CallExpression,\n * outputs: [],\n * consumes: [],\n * };\n * void d;\n */\nexport type DrawnScript = Readonly<{\n readonly exportName: string;\n readonly bindingName: string;\n readonly defineCall: ts.CallExpression;\n readonly outputs: ReadonlyArray<OutputDeclaration>;\n readonly consumes: ReadonlyArray<DepConsumesEntry>;\n}>;\n\n/**\n * One private (data-only) dep binding the file declares. `defineCall`\n * is `null` when the dep is a cross-file binding (the AST node lives\n * in the producer's source file).\n *\n * @since 0.7\n * @stable\n * @example\n * const d: PrivateDep = {\n * localId: \"fastTrend\",\n * producerRef: { kind: \"same-file\", bindingName: \"baseTrend\" },\n * effectiveInputs: { length: 20 },\n * defineCall: null,\n * outputs: [],\n * consumes: [],\n * };\n * void d;\n */\nexport type PrivateDep = Readonly<{\n readonly localId: string;\n readonly producerRef: ProducerRef;\n readonly effectiveInputs: Readonly<Record<string, JsonValue>>;\n readonly defineCall: ts.CallExpression | null;\n readonly outputs: ReadonlyArray<OutputDeclaration>;\n readonly consumes: ReadonlyArray<DepConsumesEntry>;\n}>;\n\n/**\n * Producer snapshot returned by `resolveProducer` for cross-file\n * `import X from \"./Y.chart\"` consumer references.\n *\n * @since 0.7\n * @stable\n * @example\n * const snap: ProducerSnapshot = { name: \"trend\", outputs: [], inputs: {} };\n * void snap;\n */\nexport type ProducerSnapshot = Readonly<{\n readonly name: string;\n readonly outputs: ReadonlyArray<OutputDeclaration>;\n readonly inputs: Readonly<Record<string, unknown>>;\n}>;\n\n/**\n * Callback the bundler supplies so the analysis pass can recursively\n * compile sibling `.chart.ts` files. Returns `null` when the producer\n * cannot be resolved (cycle, unknown path, no `defineIndicator(...)`).\n *\n * @since 0.7\n * @stable\n * @example\n * const r: ResolveProducer = () => null;\n * void r;\n */\nexport type ResolveProducer = (sourcePath: string, exportName: string) => ProducerSnapshot | null;\n\n/**\n * The compiled dep-graph artefact returned by `extractDependencyGraph`.\n * `drawn` + `privateDeps` are the indexed binding sets; `diagnostics`\n * is the union of every per-binding diagnostic surfaced during\n * walking + validation.\n *\n * @since 0.7\n * @stable\n * @example\n * const g: DepGraph = { drawn: [], privateDeps: [], diagnostics: [] };\n * void g;\n */\nexport type DepGraph = Readonly<{\n readonly drawn: ReadonlyArray<DrawnScript>;\n readonly privateDeps: ReadonlyArray<PrivateDep>;\n readonly diagnostics: ReadonlyArray<CompileDiagnostic>;\n}>;\n\ntype BindingOutputs = Readonly<{\n readonly outputs: ReadonlyArray<OutputDeclaration>;\n readonly hasUntitledPlot: boolean;\n}>;\n\ntype DepConsumesMutable = {\n localId: string;\n producerRef: ProducerRef;\n outputs: ReadonlyArray<OutputDeclaration>;\n effectiveInputs: Readonly<Record<string, JsonValue>>;\n};\n\n/**\n * Read a JSON-clean literal from a TS expression — number, string,\n * boolean, or null. Returns `undefined` for non-literal expressions\n * (identifiers, computed access, calls, …).\n */\nfunction readJsonLiteral(node: ts.Expression): JsonValue | undefined {\n if (ts.isNumericLiteral(node)) return Number(node.text);\n if (ts.isStringLiteral(node)) return node.text;\n if (node.kind === ts.SyntaxKind.TrueKeyword) return true;\n if (node.kind === ts.SyntaxKind.FalseKeyword) return false;\n if (node.kind === ts.SyntaxKind.NullKeyword) return null;\n return undefined;\n}\n\n/**\n * Read the function body the `compute` property assignment of a\n * `define*({ compute })` call literal points at. Returns `null` when\n * the property is missing or non-function (treat as zero plot calls).\n *\n * Handles both arrow functions (`compute: () => {}`) and method\n * shorthand (`compute() {}`).\n */\nfunction readComputeBody(defineCall: ts.CallExpression): ts.Node | null {\n const arg = defineCall.arguments[0];\n /* v8 ignore next */\n if (arg === undefined || !ts.isObjectLiteralExpression(arg)) return null;\n const computeProperty = arg.properties.find((property) => {\n const name = (property as { name?: ts.PropertyName }).name;\n return name !== undefined && ts.isIdentifier(name) && name.text === \"compute\";\n });\n if (computeProperty === undefined) return null;\n if (ts.isPropertyAssignment(computeProperty)) {\n const initializer = computeProperty.initializer;\n return ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer)\n ? initializer.body\n : null;\n }\n /* v8 ignore start */\n if (ts.isMethodDeclaration(computeProperty)) {\n return computeProperty.body ?? null;\n }\n return null;\n}\n/* v8 ignore stop */\n\n/**\n * Sweep D — extract producer outputs from `plot(value, { title })`\n * calls inside the binding's compute body. Emits\n * `duplicate-output-title` for clashes.\n */\nfunction extractBindingOutputs(\n binding: StructuralBindingInfo,\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n sourcePath: string,\n diagnostics: CompileDiagnostic[],\n): BindingOutputs {\n const body = readComputeBody(binding.defineCall);\n const outputs: OutputDeclaration[] = [];\n const seenTitles = new Set<string>();\n let hasUntitledPlot = false;\n\n /* v8 ignore next 3 */\n if (body === null) {\n return Object.freeze({ outputs: Object.freeze(outputs.slice()), hasUntitledPlot });\n }\n\n const visit = (node: ts.Node): void => {\n if (ts.isCallExpression(node)) {\n const callee = resolveCalleeName(node, checker);\n if (callee === \"plot\") {\n const optsArg = node.arguments[1];\n let title: string | undefined;\n if (optsArg !== undefined && ts.isObjectLiteralExpression(optsArg)) {\n for (const property of optsArg.properties) {\n /* v8 ignore next */\n if (!ts.isPropertyAssignment(property)) continue;\n const propertyName = property.name;\n if (!ts.isIdentifier(propertyName) || propertyName.text !== \"title\") {\n continue;\n }\n const initializer = property.initializer;\n /* v8 ignore next */\n if (!ts.isStringLiteral(initializer)) continue;\n title = initializer.text;\n }\n }\n if (title === undefined) {\n hasUntitledPlot = true;\n } else if (seenTitles.has(title)) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"duplicate-output-title\",\n message: `\\`${binding.bindingName}\\` declares two outputs titled \"${title}\". Titles must be unique within a script.`,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n } else {\n seenTitles.add(title);\n outputs.push(Object.freeze({ title, kind: \"series-number\" as const }));\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n ts.forEachChild(body, visit);\n return Object.freeze({ outputs: Object.freeze(outputs.slice()), hasUntitledPlot });\n}\n\ntype ChainResolution = Readonly<{\n readonly root: ts.Identifier;\n readonly inputs: Readonly<Record<string, JsonValue>>;\n readonly ok: boolean;\n}>;\n\n/**\n * Sweep B — resolve a `<binding>.withInputs({...}).withInputs({...})`\n * chain back to its rooted identifier and the merged effective-inputs\n * map. Emits `dep-dynamic` / `dep-invalid-input-override` for invalid\n * argument shapes.\n */\nfunction resolveWithInputsChain(\n expression: ts.Expression,\n sourceFile: ts.SourceFile,\n sourcePath: string,\n diagnostics: CompileDiagnostic[],\n): ChainResolution | null {\n type Layer = { args: ts.ObjectLiteralExpression; ok: boolean };\n const layers: Layer[] = [];\n let current: ts.Expression = expression;\n while (ts.isCallExpression(current)) {\n const callee = current.expression;\n /* v8 ignore next 2 */\n if (!ts.isPropertyAccessExpression(callee)) return null;\n if (callee.name.text !== \"withInputs\") return null;\n const arg = current.arguments[0];\n if (arg === undefined || !ts.isObjectLiteralExpression(arg)) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message:\n \"`.withInputs(...)` requires an object literal with literal-only property values.\",\n file: sourcePath,\n node: arg ?? /* v8 ignore next */ current,\n sourceFile,\n }),\n );\n layers.unshift({ args: ts.factory.createObjectLiteralExpression([]), ok: false });\n } else {\n layers.unshift({ args: arg, ok: true });\n }\n current = callee.expression;\n }\n /* v8 ignore next */\n if (!ts.isIdentifier(current)) return null;\n\n const merged: Record<string, JsonValue> = {};\n let ok = true;\n for (const layer of layers) {\n if (!layer.ok) {\n ok = false;\n continue;\n }\n for (const property of layer.args.properties) {\n if (!ts.isPropertyAssignment(property)) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message:\n \"`.withInputs(...)` requires a plain object literal — no spread, shorthand, or computed keys.\",\n file: sourcePath,\n node: property,\n sourceFile,\n }),\n );\n ok = false;\n continue;\n }\n const key = property.name;\n if (!ts.isIdentifier(key) && !ts.isStringLiteral(key)) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message: \"`.withInputs(...)` keys must be identifiers or string literals.\",\n file: sourcePath,\n node: key,\n sourceFile,\n }),\n );\n ok = false;\n continue;\n }\n const literal = readJsonLiteral(property.initializer);\n if (literal === undefined) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message: `\\`.withInputs({ ${key.text}: ... })\\` value must be a JSON literal (number, string, boolean, or null).`,\n file: sourcePath,\n node: property.initializer,\n sourceFile,\n }),\n );\n ok = false;\n continue;\n }\n merged[key.text] = literal;\n }\n }\n return Object.freeze({\n root: current,\n inputs: Object.freeze({ ...merged }),\n ok,\n });\n}\n\n/**\n * Validate an `effectiveInputs` map against the producer's `inputs`\n * schema. Each producer-input descriptor is shaped like\n * `{ kind: \"int\", defaultValue: 14, ... }`. Type-mismatch and unknown\n * keys both emit `dep-invalid-input-override`.\n */\nfunction validateInputOverrides(\n bindingName: string,\n inputs: Readonly<Record<string, JsonValue>>,\n producerInputs: Readonly<Record<string, unknown>>,\n node: ts.Node,\n sourceFile: ts.SourceFile,\n sourcePath: string,\n diagnostics: CompileDiagnostic[],\n): void {\n for (const [key, value] of Object.entries(inputs)) {\n const descriptor = producerInputs[key];\n if (descriptor === undefined) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-invalid-input-override\",\n message: `\\`${bindingName}\\` overrides input \"${key}\" which the producer does not declare.`,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n continue;\n }\n const expectedKind =\n typeof descriptor === \"object\" && descriptor !== null && \"kind\" in descriptor\n ? (descriptor as { kind: unknown }).kind\n : undefined;\n if (typeof expectedKind === \"string\") {\n const valueType = describeJsonValueKind(value);\n const expectedType = expectedTypeForKind(expectedKind);\n if (expectedType !== null && expectedType !== valueType) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-invalid-input-override\",\n message: `\\`${bindingName}\\` override for \"${key}\" expects ${expectedType} (producer declared \\`${expectedKind}\\`), received ${valueType}.`,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n }\n }\n }\n}\n\nfunction describeJsonValueKind(value: JsonValue): string {\n if (value === null) return \"null\";\n /* v8 ignore next */\n if (Array.isArray(value)) return \"array\";\n return typeof value;\n}\n\nconst KIND_TO_VALUE_TYPE: ReadonlyMap<string, string> = new Map([\n [\"int\", \"number\"],\n [\"float\", \"number\"],\n [\"price\", \"number\"],\n [\"time\", \"number\"],\n [\"string\", \"string\"],\n [\"enum\", \"string\"],\n [\"color\", \"string\"],\n [\"symbol\", \"string\"],\n [\"interval\", \"string\"],\n [\"bool\", \"boolean\"],\n]);\n\nfunction expectedTypeForKind(kind: string): string | null {\n return KIND_TO_VALUE_TYPE.get(kind) ?? null;\n}\n\n/**\n * Walk back from a `<receiver>.output(\"title\")` callee to a same-file\n * binding identifier OR an imported identifier — whichever applies.\n * Returns the underlying identifier or `null` when the receiver is a\n * non-resolvable shape (computed access, call result, etc.).\n */\nfunction resolveOutputReceiverRoot(receiver: ts.Expression): ts.Identifier | null {\n if (ts.isIdentifier(receiver)) return receiver;\n return null;\n}\n\nfunction originIsImport(symbol: ts.Symbol): {\n moduleSpecifier: string;\n exportName: string;\n} | null {\n const declarations = symbol.declarations ?? /* v8 ignore next */ [];\n for (const declaration of declarations) {\n if (ts.isImportClause(declaration)) {\n const importDecl = declaration.parent;\n const specifier = importDecl.moduleSpecifier;\n /* v8 ignore next */\n if (!ts.isStringLiteral(specifier)) continue;\n return { moduleSpecifier: specifier.text, exportName: \"default\" };\n }\n if (ts.isImportSpecifier(declaration)) {\n const importDecl = declaration.parent.parent.parent;\n const specifier = importDecl.moduleSpecifier;\n /* v8 ignore next */\n if (!ts.isStringLiteral(specifier)) continue;\n const exportName = declaration.propertyName?.text ?? declaration.name.text;\n return { moduleSpecifier: specifier.text, exportName };\n }\n }\n return null;\n}\n\ntype ResolvedBinding =\n | Readonly<{ kind: \"same-file\"; binding: StructuralBindingInfo }>\n | Readonly<{\n kind: \"cross-file\";\n sourcePath: string;\n exportName: string;\n snapshot: ProducerSnapshot;\n }>;\n\nfunction resolveBinding(\n identifier: ts.Identifier,\n checker: ts.TypeChecker,\n bindingsByName: ReadonlyMap<string, StructuralBindingInfo>,\n resolveProducer: ResolveProducer,\n): ResolvedBinding | null {\n const sameFile = bindingsByName.get(identifier.text);\n if (sameFile !== undefined) {\n return Object.freeze({ kind: \"same-file\", binding: sameFile });\n }\n const symbol = checker.getSymbolAtLocation(identifier);\n /* v8 ignore next */\n if (symbol === undefined) return null;\n const importOrigin = originIsImport(symbol);\n if (importOrigin === null) return null;\n const snapshot = resolveProducer(importOrigin.moduleSpecifier, importOrigin.exportName);\n if (snapshot === null) return null;\n return Object.freeze({\n kind: \"cross-file\",\n sourcePath: importOrigin.moduleSpecifier,\n exportName: importOrigin.exportName,\n snapshot,\n });\n}\n\n/**\n * Run the dependency-graph analysis pass over a `.chart.ts` source\n * file. Sweeps the AST four times — outputs, withInputs chains,\n * consumer `.output(...)` calls, cycle detection — and returns a\n * frozen `DepGraph` plus the diagnostics surfaced along the way.\n *\n * `resolveProducer` is a caller-supplied callback that the bundler\n * (Task 3) wires to a recursive compile entry point. In Task 2 the\n * pass works against `() => null` for cross-file edges; tests pass\n * mocked snapshots instead.\n *\n * @since 0.7\n * @stable\n * @example\n * // const graph = extractDependencyGraph(sf, checker, \"demo.chart.ts\", bindings, () => null);\n * const fn: typeof extractDependencyGraph = extractDependencyGraph;\n * void fn;\n */\nexport function extractDependencyGraph(\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n sourcePath: string,\n structuralBindings: ReadonlyArray<StructuralBindingInfo>,\n resolveProducer: ResolveProducer,\n): DepGraph {\n const diagnostics: CompileDiagnostic[] = [];\n const bindingsByName = new Map<string, StructuralBindingInfo>();\n for (const binding of structuralBindings) {\n if (binding.exportKind === \"default\") continue;\n bindingsByName.set(binding.bindingName, binding);\n }\n\n const outputsByBinding = new Map<string, BindingOutputs>();\n for (const binding of structuralBindings) {\n outputsByBinding.set(\n binding.bindingName,\n extractBindingOutputs(binding, sourceFile, checker, sourcePath, diagnostics),\n );\n }\n\n type BindingEffectiveInputs = Readonly<{\n rootName: string;\n rootBinding: ResolvedBinding | null;\n inputs: Readonly<Record<string, JsonValue>>;\n }>;\n const effectiveInputsByBinding = new Map<string, BindingEffectiveInputs>();\n\n for (const statement of sourceFile.statements) {\n if (!ts.isVariableStatement(statement)) continue;\n for (const declaration of statement.declarationList.declarations) {\n /* v8 ignore next */\n if (!ts.isIdentifier(declaration.name)) continue;\n const initializer = declaration.initializer;\n if (initializer === undefined) continue;\n if (!ts.isCallExpression(initializer)) continue;\n const callee = initializer.expression;\n if (ts.isPropertyAccessExpression(callee) && callee.name.text === \"withInputs\") {\n const chain = resolveWithInputsChain(\n initializer,\n sourceFile,\n sourcePath,\n diagnostics,\n );\n /* v8 ignore next */\n if (chain === null) continue;\n const root = resolveBinding(chain.root, checker, bindingsByName, resolveProducer);\n effectiveInputsByBinding.set(declaration.name.text, {\n rootName: chain.root.text,\n rootBinding: root,\n inputs: chain.inputs,\n });\n if (root !== null && chain.ok) {\n const producerInputs = root.kind === \"cross-file\" ? root.snapshot.inputs : {};\n validateInputOverrides(\n declaration.name.text,\n chain.inputs,\n producerInputs,\n initializer,\n sourceFile,\n sourcePath,\n diagnostics,\n );\n }\n }\n }\n }\n\n const consumesByBinding = new Map<string, DepConsumesMutable[]>();\n for (const binding of structuralBindings) {\n consumesByBinding.set(binding.bindingName, []);\n }\n\n for (const binding of structuralBindings) {\n const body = readComputeBody(binding.defineCall);\n if (body === null) continue;\n const consumerConsumes = consumesByBinding.get(binding.bindingName);\n /* v8 ignore next */\n if (consumerConsumes === undefined) continue;\n const seenLocalIds = new Set<string>();\n const visit = (node: ts.Node): void => {\n if (\n ts.isCallExpression(node) &&\n ts.isPropertyAccessExpression(node.expression) &&\n node.expression.name.text === \"output\"\n ) {\n const arg = node.arguments[0];\n if (arg === undefined || !ts.isStringLiteral(arg)) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message:\n \"`<binding>.output(...)` requires a single string-literal argument.\",\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n ts.forEachChild(node, visit);\n return;\n }\n const title = arg.text;\n const root = resolveOutputReceiverRoot(node.expression.expression);\n if (root === null) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message:\n \"`.output(...)` receiver must trace back to a `const`-bound `defineIndicator(...)` result.\",\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n ts.forEachChild(node, visit);\n return;\n }\n const effective = effectiveInputsByBinding.get(root.text);\n let resolvedRootName: string;\n let resolvedRoot: ResolvedBinding | null;\n let effectiveInputs: Readonly<Record<string, JsonValue>>;\n if (effective !== undefined) {\n resolvedRootName = effective.rootName;\n resolvedRoot = effective.rootBinding;\n effectiveInputs = effective.inputs;\n } else {\n resolvedRootName = root.text;\n resolvedRoot = resolveBinding(root, checker, bindingsByName, resolveProducer);\n effectiveInputs = Object.freeze({});\n }\n if (resolvedRoot === null) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-dynamic\",\n message: `\\`.output(\"${title}\")\\` receiver \\`${root.text}\\` does not resolve to a known same-file or imported indicator binding.`,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n ts.forEachChild(node, visit);\n return;\n }\n\n const producerOutputs: ReadonlyArray<OutputDeclaration> =\n resolvedRoot.kind === \"same-file\"\n ? (outputsByBinding.get(resolvedRoot.binding.bindingName) as BindingOutputs)\n .outputs\n : resolvedRoot.snapshot.outputs;\n const producerHasUntitled =\n resolvedRoot.kind === \"same-file\" &&\n (outputsByBinding.get(resolvedRoot.binding.bindingName) as BindingOutputs)\n .hasUntitledPlot;\n const titles = new Set(producerOutputs.map((o) => o.title));\n if (!titles.has(title)) {\n if (producerHasUntitled) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-output-not-titled\",\n message: `Producer \\`${resolvedRootName}\\` declares an untitled \\`plot(...)\\` but consumer references \\`.output(\"${title}\")\\`. Title every \\`plot\\` the producer emits or remove the consumer reference.`,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n } else {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-unknown-output\",\n message: `Producer \\`${resolvedRootName}\\` does not declare an output titled \"${title}\".`,\n file: sourcePath,\n node,\n sourceFile,\n }),\n );\n }\n ts.forEachChild(node, visit);\n return;\n }\n\n const localId = effective !== undefined ? root.text : root.text;\n if (!seenLocalIds.has(localId)) {\n seenLocalIds.add(localId);\n const producerRef: ProducerRef =\n resolvedRoot.kind === \"same-file\"\n ? Object.freeze({\n kind: \"same-file\",\n bindingName: resolvedRoot.binding.bindingName,\n })\n : Object.freeze({\n kind: \"cross-file\",\n sourcePath: resolvedRoot.sourcePath,\n exportName: resolvedRoot.exportName,\n });\n consumerConsumes.push({\n localId,\n producerRef,\n outputs: producerOutputs,\n effectiveInputs,\n });\n }\n }\n ts.forEachChild(node, visit);\n };\n ts.forEachChild(body, visit);\n }\n\n const sameFileEdges = new Map<string, Set<string>>();\n for (const [bindingName, consumes] of consumesByBinding.entries()) {\n const targets = new Set<string>();\n for (const entry of consumes) {\n if (entry.producerRef.kind === \"same-file\") {\n targets.add(entry.producerRef.bindingName);\n }\n }\n sameFileEdges.set(bindingName, targets);\n }\n const cycles = detectCycles(sameFileEdges);\n for (const cycle of cycles) {\n const path = `${cycle.join(\" -> \")} -> ${cycle[0] ?? /* v8 ignore next */ \"\"}`;\n for (const member of cycle) {\n const binding = structuralBindings.find((b) => b.bindingName === member);\n /* v8 ignore next */\n if (binding === undefined) continue;\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"dep-cycle\",\n message: `Dependency cycle detected: ${path}`,\n file: sourcePath,\n node: binding.defineCall,\n sourceFile,\n }),\n );\n }\n }\n\n const drawn: DrawnScript[] = [];\n const privateDeps: PrivateDep[] = [];\n // First emit any withInputs-derived alias bindings as synthetic\n // private deps so the bundler + runtime can mount one DepRunner\n // per unique alias. The alias has no `defineCall` of its own —\n // its compute body lives on the producer the alias chains off.\n for (const [aliasName, info] of effectiveInputsByBinding.entries()) {\n /* v8 ignore start */\n if (bindingsByName.has(aliasName)) continue;\n if (info.rootBinding === null) continue;\n /* v8 ignore stop */\n const producerRef: ProducerRef =\n info.rootBinding.kind === \"same-file\"\n ? Object.freeze({\n kind: \"same-file\",\n bindingName: info.rootBinding.binding.bindingName,\n })\n : Object.freeze({\n kind: \"cross-file\",\n sourcePath: info.rootBinding.sourcePath,\n exportName: info.rootBinding.exportName,\n });\n const aliasOutputs: ReadonlyArray<OutputDeclaration> =\n info.rootBinding.kind === \"same-file\"\n ? (outputsByBinding.get(info.rootBinding.binding.bindingName) as BindingOutputs)\n .outputs\n : info.rootBinding.snapshot.outputs;\n privateDeps.push(\n Object.freeze({\n localId: aliasName,\n producerRef,\n effectiveInputs: info.inputs,\n defineCall: null,\n outputs: aliasOutputs,\n consumes: Object.freeze([]),\n }),\n );\n }\n for (const binding of structuralBindings) {\n const outputs = (outputsByBinding.get(binding.bindingName) as BindingOutputs).outputs;\n const consumes = (consumesByBinding.get(binding.bindingName) as DepConsumesMutable[]).map(\n (entry) =>\n Object.freeze({\n localId: entry.localId,\n producerRef: entry.producerRef,\n outputs: entry.outputs,\n effectiveInputs: entry.effectiveInputs,\n }),\n );\n const frozenConsumes = Object.freeze(consumes);\n if (binding.exportKind === \"private\") {\n // Private structural bindings are always `const X =\n // defineIndicator(...)` direct calls — withInputs-derived\n // aliases live in `effectiveInputsByBinding` and were\n // already emitted as synthetic private deps above. Hence\n // the alias-via-private-binding branch is structurally\n // unreachable here.\n const producerRef: ProducerRef = Object.freeze({\n kind: \"same-file\",\n bindingName: binding.bindingName,\n });\n privateDeps.push(\n Object.freeze({\n localId: binding.bindingName,\n producerRef,\n effectiveInputs: Object.freeze({}),\n defineCall: binding.defineCall,\n outputs,\n consumes: frozenConsumes,\n }),\n );\n } else {\n drawn.push(\n Object.freeze({\n exportName: binding.exportKind === \"default\" ? \"default\" : binding.bindingName,\n bindingName: binding.bindingName,\n defineCall: binding.defineCall,\n outputs,\n consumes: frozenConsumes,\n }),\n );\n }\n }\n\n return Object.freeze({\n drawn: Object.freeze(drawn.slice()),\n privateDeps: Object.freeze(privateDeps.slice()),\n diagnostics: Object.freeze(diagnostics.slice()),\n });\n}\n\n/**\n * Colour-marking iterative DFS — returns every cycle found in the\n * directed adjacency map. Each cycle is the ordered list of node ids\n * along the back-edge. Used by `extractDependencyGraph` to surface\n * `dep-cycle` diagnostics at every binding in the cycle.\n */\nfunction detectCycles(edges: ReadonlyMap<string, ReadonlySet<string>>): string[][] {\n const WHITE = 0;\n const GREY = 1;\n const BLACK = 2;\n const colour = new Map<string, number>();\n for (const key of edges.keys()) colour.set(key, WHITE);\n\n const cycles: string[][] = [];\n const seenCycles = new Set<string>();\n\n const dfs = (start: string): void => {\n type Frame = { node: string; iter: Iterator<string> };\n const stack: Frame[] = [];\n const pathIndex = new Map<string, number>();\n const pathOrder: string[] = [];\n\n const targets = edges.get(start) ?? /* v8 ignore next */ new Set<string>();\n colour.set(start, GREY);\n pathIndex.set(start, 0);\n pathOrder.push(start);\n stack.push({ node: start, iter: targets[Symbol.iterator]() });\n\n while (stack.length > 0) {\n const top = stack[stack.length - 1];\n /* v8 ignore next */\n if (top === undefined) break;\n const next = top.iter.next();\n if (next.done) {\n colour.set(top.node, BLACK);\n pathIndex.delete(top.node);\n pathOrder.pop();\n stack.pop();\n continue;\n }\n const child = next.value;\n const childColour = colour.get(child) ?? /* v8 ignore next */ WHITE;\n if (childColour === BLACK) continue;\n if (childColour === GREY) {\n const startIdx = pathIndex.get(child);\n /* v8 ignore next */\n if (startIdx === undefined) continue;\n const cycle = pathOrder.slice(startIdx);\n const sortedKey = [...cycle].sort().join(\"|\");\n if (!seenCycles.has(sortedKey)) {\n seenCycles.add(sortedKey);\n cycles.push(cycle);\n }\n continue;\n }\n colour.set(child, GREY);\n pathIndex.set(child, pathOrder.length);\n pathOrder.push(child);\n const childTargets = edges.get(child) ?? /* v8 ignore next */ new Set<string>();\n stack.push({ node: child, iter: childTargets[Symbol.iterator]() });\n }\n };\n\n for (const key of edges.keys()) {\n if (colour.get(key) === WHITE) dfs(key);\n }\n return cycles;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractInputs.js","sourceRoot":"","sources":["../../src/analysis/extractInputs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extractInputs.js","sourceRoot":"","sources":["../../src/analysis/extractInputs.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2026 Invinite. Licensed under the MIT License.\n// See the LICENSE file in the repo root for full license text.\n\nimport ts from \"typescript\";\n\nimport { type CompileDiagnostic, createDiagnostic } from \"../diagnostics.js\";\nimport { resolveCalleeName } from \"../transformers/resolveCallee.js\";\n\nconst DEFINE_CALLS = new Set([\n \"defineIndicator\",\n \"defineAlert\",\n \"defineDrawing\",\n \"defineAlertCondition\",\n]);\n\n/** Names the walker recognises as `input.*` calls. */\nconst INPUT_KINDS = new Set([\n \"int\",\n \"float\",\n \"bool\",\n \"string\",\n \"enum\",\n \"color\",\n \"source\",\n \"time\",\n \"price\",\n \"symbol\",\n \"interval\",\n \"externalSeries\",\n]);\n\n/** Wire-tag mapping — camelCase builder names become kebab-case manifest tags. */\nconst KIND_TO_WIRE: Readonly<Record<string, string>> = Object.freeze({\n int: \"int\",\n float: \"float\",\n bool: \"bool\",\n string: \"string\",\n enum: \"enum\",\n color: \"color\",\n source: \"source\",\n time: \"time\",\n price: \"price\",\n symbol: \"symbol\",\n interval: \"interval\",\n externalSeries: \"external-series\",\n});\n\n/**\n * Frozen, JSON-clean input descriptor extracted from a script's\n * `define*({ inputs })` object.\n *\n * @since 0.4\n * @example\n * const d: ExtractedDescriptor = { kind: \"int\", defaultValue: 14 };\n * void d;\n */\nexport type ExtractedDescriptor = Readonly<Record<string, unknown>>;\n\n/**\n * Result of input extraction. Diagnostics are hard errors when the\n * declaration uses an unknown builder or non-literal descriptor values.\n *\n * @since 0.4\n * @example\n * const r: ExtractInputsResult = {\n * inputs: { length: { kind: \"int\", defaultValue: 14 } },\n * userPickableInterval: false,\n * diagnostics: [],\n * };\n * void r;\n */\nexport type ExtractInputsResult = Readonly<{\n inputs: Readonly<Record<string, ExtractedDescriptor>>;\n userPickableInterval: boolean;\n diagnostics: ReadonlyArray<CompileDiagnostic>;\n}>;\n\n/**\n * Walk a script's AST and serialise every `input.*` call inside\n * `defineIndicator({ inputs: { ... } })`, `defineAlert`, or\n * `defineDrawing` into the manifest's `inputs` record.\n *\n * The optional `scope` parameter narrows the walk to a single AST subtree\n * (typically one binding's `defineCall`) so multi-export files derive\n * per-binding inputs. Defaults to the whole `sourceFile`.\n *\n * @since 0.4\n * @example\n * // const r = extractInputs(sourceFile, checker, \"demo.chart.ts\");\n * // r.inputs.length === { kind: \"int\", defaultValue: 14 };\n * const fn: typeof extractInputs = extractInputs;\n * void fn;\n */\nexport function extractInputs(\n sourceFile: ts.SourceFile,\n checker: ts.TypeChecker,\n sourcePath: string = sourceFile.fileName,\n scope: ts.Node = sourceFile,\n): ExtractInputsResult {\n const inputs: Record<string, ExtractedDescriptor> = {};\n const diagnostics: CompileDiagnostic[] = [];\n let userPickableInterval = false;\n let intervalCount = 0;\n\n const visit = (node: ts.Node): void => {\n if (ts.isCallExpression(node) && isDefineCall(node, checker)) {\n const inputsObject = readInputsArg(node);\n if (inputsObject !== null) {\n for (const property of inputsObject.properties) {\n if (!ts.isPropertyAssignment(property) || !ts.isIdentifier(property.name)) {\n continue;\n }\n const initializer = property.initializer;\n if (!ts.isCallExpression(initializer)) continue;\n const callee = resolveCalleeName(initializer, checker);\n if (callee === null || !callee.startsWith(\"input.\")) continue;\n\n const kind = callee.slice(\"input.\".length);\n if (!INPUT_KINDS.has(kind)) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"unknown-input-kind\",\n message: `input.${kind} is not a recognised input builder`,\n file: sourcePath,\n node: initializer.expression,\n sourceFile,\n }),\n );\n continue;\n }\n\n const wireKind = KIND_TO_WIRE[kind] as string;\n if (wireKind === \"interval\") {\n intervalCount += 1;\n userPickableInterval = true;\n if (intervalCount > 1) {\n diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"multiple-input-interval\",\n message: \"Only one input.interval() per script (PLAN §4.5)\",\n file: sourcePath,\n node: initializer.expression,\n sourceFile,\n }),\n );\n }\n }\n\n const descriptor = serialiseDescriptor(wireKind, kind, initializer, {\n sourceFile,\n sourcePath,\n diagnostics,\n });\n if (descriptor !== null) {\n inputs[property.name.text] = descriptor;\n }\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n visit(scope);\n\n return Object.freeze({\n inputs: Object.freeze({ ...inputs }),\n userPickableInterval,\n diagnostics: Object.freeze(diagnostics.slice()),\n });\n}\n\ntype SerialiseContext = Readonly<{\n sourceFile: ts.SourceFile;\n sourcePath: string;\n diagnostics: CompileDiagnostic[];\n}>;\n\nfunction isDefineCall(node: ts.CallExpression, checker: ts.TypeChecker): boolean {\n const calleeName = resolveCalleeName(node, checker);\n return calleeName !== null && DEFINE_CALLS.has(calleeName);\n}\n\nfunction readInputsArg(node: ts.CallExpression): ts.ObjectLiteralExpression | null {\n const argument = node.arguments[0];\n if (argument === undefined || !ts.isObjectLiteralExpression(argument)) return null;\n for (const property of argument.properties) {\n if (!ts.isPropertyAssignment(property)) continue;\n if (!ts.isIdentifier(property.name) || property.name.text !== \"inputs\") continue;\n const initializer = property.initializer;\n if (ts.isObjectLiteralExpression(initializer)) return initializer;\n }\n return null;\n}\n\nfunction serialiseDescriptor(\n wireKind: string,\n builderKind: string,\n call: ts.CallExpression,\n context: SerialiseContext,\n): ExtractedDescriptor | null {\n if (wireKind === \"external-series\") {\n return serialiseExternalSeries(call, context);\n }\n\n const defaultArg = call.arguments[0];\n if (defaultArg === undefined) {\n addDefaultLiteralDiagnostic(builderKind, call.expression, context);\n return null;\n }\n const defaultValue = readLiteral(defaultArg);\n if (defaultValue === undefined || Array.isArray(defaultValue)) {\n addDefaultLiteralDiagnostic(builderKind, defaultArg, context);\n return null;\n }\n\n const descriptor: Record<string, unknown> = {\n kind: wireKind,\n defaultValue,\n };\n\n if (wireKind === \"enum\") {\n const optionsArg = call.arguments[1];\n const options = optionsArg === undefined ? null : readStringArray(optionsArg);\n if (options === null) {\n addDefaultLiteralDiagnostic(builderKind, optionsArg ?? call.expression, context);\n return null;\n }\n descriptor.options = Object.freeze(options.slice());\n copyObjectLiteralFields(call.arguments[2], descriptor, builderKind, context);\n } else {\n copyObjectLiteralFields(call.arguments[1], descriptor, builderKind, context);\n }\n\n return Object.freeze(descriptor);\n}\n\nfunction serialiseExternalSeries(\n call: ts.CallExpression,\n context: SerialiseContext,\n): ExtractedDescriptor | null {\n const arg = call.arguments[0];\n if (arg === undefined || !ts.isObjectLiteralExpression(arg)) {\n addDefaultLiteralDiagnostic(\"externalSeries\", arg ?? call.expression, context);\n return null;\n }\n\n const descriptor: Record<string, unknown> = { kind: \"external-series\" };\n let sawName = false;\n let sawSchema = false;\n\n for (const property of arg.properties) {\n if (ts.isShorthandPropertyAssignment(property) && property.name.text === \"schema\") {\n descriptor.schema = Object.freeze({ kind: \"external-series-schema\" });\n sawSchema = true;\n continue;\n }\n if (!ts.isPropertyAssignment(property)) continue;\n const key = propertyNameText(property.name);\n if (key === null) continue;\n if (key === \"name\") {\n const value = readLiteral(property.initializer);\n if (typeof value !== \"string\") {\n addDefaultLiteralDiagnostic(\"externalSeries\", property.initializer, context);\n return null;\n }\n descriptor.name = value;\n sawName = true;\n } else if (key === \"schema\") {\n descriptor.schema = Object.freeze({ kind: \"external-series-schema\" });\n sawSchema = true;\n } else if (key === \"title\") {\n const value = readLiteral(property.initializer);\n if (typeof value !== \"string\") {\n addDefaultLiteralDiagnostic(\"externalSeries\", property.initializer, context);\n return null;\n }\n descriptor.title = value;\n }\n }\n\n if (!sawName || !sawSchema) {\n addDefaultLiteralDiagnostic(\"externalSeries\", arg, context);\n return null;\n }\n return Object.freeze(descriptor);\n}\n\nfunction copyObjectLiteralFields(\n arg: ts.Expression | undefined,\n descriptor: Record<string, unknown>,\n builderKind: string,\n context: SerialiseContext,\n): void {\n if (arg === undefined) return;\n const unwrapped = unwrapConstAssertion(arg);\n if (!ts.isObjectLiteralExpression(unwrapped)) {\n addDefaultLiteralDiagnostic(builderKind, arg, context);\n return;\n }\n\n for (const property of unwrapped.properties) {\n if (!ts.isPropertyAssignment(property)) continue;\n const key = propertyNameText(property.name);\n if (key === null) continue;\n const value = readLiteral(property.initializer);\n if (value === undefined) {\n addDefaultLiteralDiagnostic(builderKind, property.initializer, context);\n continue;\n }\n descriptor[key] = value;\n }\n}\n\nfunction readLiteral(node: ts.Expression): unknown | undefined {\n const unwrapped = unwrapConstAssertion(node);\n if (ts.isNumericLiteral(unwrapped)) return Number(unwrapped.text);\n if (\n ts.isPrefixUnaryExpression(unwrapped) &&\n (unwrapped.operator === ts.SyntaxKind.MinusToken ||\n unwrapped.operator === ts.SyntaxKind.PlusToken) &&\n ts.isNumericLiteral(unwrapped.operand)\n ) {\n const value = Number(unwrapped.operand.text);\n return unwrapped.operator === ts.SyntaxKind.MinusToken ? -value : value;\n }\n if (ts.isStringLiteral(unwrapped) || ts.isNoSubstitutionTemplateLiteral(unwrapped)) {\n return unwrapped.text;\n }\n if (unwrapped.kind === ts.SyntaxKind.TrueKeyword) return true;\n if (unwrapped.kind === ts.SyntaxKind.FalseKeyword) return false;\n if (ts.isArrayLiteralExpression(unwrapped)) {\n const values: string[] = [];\n for (const element of unwrapped.elements) {\n const literal = readLiteral(element);\n if (typeof literal !== \"string\") return undefined;\n values.push(literal);\n }\n return Object.freeze(values);\n }\n return undefined;\n}\n\nfunction readStringArray(node: ts.Expression): ReadonlyArray<string> | null {\n const value = readLiteral(node);\n if (!Array.isArray(value)) return null;\n return Object.freeze(value.slice());\n}\n\nfunction unwrapConstAssertion(node: ts.Expression): ts.Expression {\n let current = node;\n while (ts.isParenthesizedExpression(current) || ts.isAsExpression(current)) {\n if (ts.isParenthesizedExpression(current)) {\n current = current.expression;\n } else {\n current = current.expression;\n }\n }\n return current;\n}\n\nfunction propertyNameText(name: ts.PropertyName): string | null {\n if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n return null;\n}\n\nfunction addDefaultLiteralDiagnostic(kind: string, node: ts.Node, context: SerialiseContext): void {\n context.diagnostics.push(\n createDiagnostic({\n severity: \"error\",\n code: \"input-default-not-literal\",\n message: `input.${kind} default must be a literal (number / string / boolean), not a variable reference`,\n file: context.sourcePath,\n node,\n sourceFile: context.sourceFile,\n }),\n );\n}\n"]}
|
|
@@ -24,7 +24,8 @@ export type ExtractMaxLookbackResult = Readonly<{
|
|
|
24
24
|
* Walk the source file's `ElementAccessExpression` nodes and infer
|
|
25
25
|
* `maxLookback` plus any `dynamicFallback` capacity from non-literal index
|
|
26
26
|
* reads on Phase-1 series shapes: `bar.<ohlcv>[N]`, `ta.<name>(...)[N]`,
|
|
27
|
-
* and identifier-bound series variables (`const e = ta.ema(...); e[N];`
|
|
27
|
+
* and identifier-bound series variables (`const e = ta.ema(...); e[N];` or
|
|
28
|
+
* `const s = state.series(...); s[N];`).
|
|
28
29
|
*
|
|
29
30
|
* The optional `scope` parameter narrows both the series-variable
|
|
30
31
|
* collection and the lookback walk to a single AST subtree (typically
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractMaxLookback.d.ts","sourceRoot":"","sources":["../../src/analysis/extractMaxLookback.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,KAAK,iBAAiB,EAAoB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"extractMaxLookback.d.ts","sourceRoot":"","sources":["../../src/analysis/extractMaxLookback.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,KAAK,iBAAiB,EAAoB,MAAM,mBAAmB,CAAC;AAO7E;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,WAAW,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;CACjD,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,EAAE,CAAC,IAAiB,GAC5B,wBAAwB,CAmD1B"}
|