@invinite-org/chartlang-language-service 1.4.1 → 1.4.3
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
CHANGED
|
@@ -1,5 +1,59 @@
|
|
|
1
1
|
# @invinite-org/chartlang-language-service
|
|
2
2
|
|
|
3
|
+
## 1.4.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [03f59bf]
|
|
8
|
+
- Updated dependencies [03f59bf]
|
|
9
|
+
- Updated dependencies [03f59bf]
|
|
10
|
+
- @invinite-org/chartlang-adapter-kit@1.4.0
|
|
11
|
+
|
|
12
|
+
## 1.4.2
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- 08c536c: Add the `ta.highestbars` / `ta.lowestbars` primitives plus the cross-package
|
|
17
|
+
wiring that makes them usable as drawing anchors and Pine-converter targets.
|
|
18
|
+
|
|
19
|
+
- **core / runtime:** `ta.highestbars(source, length, opts?)` and
|
|
20
|
+
`ta.lowestbars(source, length, opts?)` return the bar OFFSET (≤ 0) to the
|
|
21
|
+
highest / lowest `source` value over the trailing `length` bars (window
|
|
22
|
+
INCLUDES the current bar). `0` → current bar is the extreme; `-k` → the
|
|
23
|
+
extreme occurred `k` bars ago. Ties resolve to the most recent bar; NaN
|
|
24
|
+
inputs are skipped; warmup is `length − 1` bars; tick-mode replays the
|
|
25
|
+
in-progress head as the offset-0 candidate. Registered in
|
|
26
|
+
`STATEFUL_PRIMITIVES` (now 174 entries) and `TA_REGISTRY` (now 96 entries).
|
|
27
|
+
- **compiler:** a literal-length `ta.highestbars` / `ta.lowestbars` call
|
|
28
|
+
contributes `length − 1` toward `maxLookback`, so the runtime sizes the time
|
|
29
|
+
ring buffer deep enough for a `bar.point(<that offset>, …)` anchor to resolve.
|
|
30
|
+
A non-literal length contributes 0.
|
|
31
|
+
- **pine-converter:** `ta.highestbars` / `ta.lowestbars` now map to the real
|
|
32
|
+
chartlang primitives (previously lossy passthroughs to `ta.highest` /
|
|
33
|
+
`ta.lowest`). **Behavior change:** a DYNAMIC `bar_index + <non-literal>`
|
|
34
|
+
drawing-x anchor no longer raises the hard `requires-bar-interval` error —
|
|
35
|
+
the offset is resolved by `bar.point` at runtime sign-agnostically (a
|
|
36
|
+
negative runtime offset, e.g. what `ta.highestbars` returns, resolves to the
|
|
37
|
+
historical timestamp via the time buffer). Only the literal `bar_index + N`
|
|
38
|
+
future case still requires a bar interval.
|
|
39
|
+
- **conformance:** new `TA_HIGHEST_LOWEST_BARS_SCENARIO` export pins both
|
|
40
|
+
primitives end-to-end through the compiler + runtime over the bundled
|
|
41
|
+
`goldenBars.json` fixture, and is added to `ALL_SCENARIOS`.
|
|
42
|
+
|
|
43
|
+
- Updated dependencies [850ae21]
|
|
44
|
+
- Updated dependencies [ca19e20]
|
|
45
|
+
- Updated dependencies [3541445]
|
|
46
|
+
- Updated dependencies [6235ad7]
|
|
47
|
+
- Updated dependencies [3bf391a]
|
|
48
|
+
- Updated dependencies [8086003]
|
|
49
|
+
- Updated dependencies [850ae21]
|
|
50
|
+
- Updated dependencies [073f41b]
|
|
51
|
+
- Updated dependencies [5a9c24d]
|
|
52
|
+
- Updated dependencies [08c536c]
|
|
53
|
+
- @invinite-org/chartlang-core@1.2.0
|
|
54
|
+
- @invinite-org/chartlang-compiler@1.3.0
|
|
55
|
+
- @invinite-org/chartlang-adapter-kit@1.3.0
|
|
56
|
+
|
|
3
57
|
## 1.4.1
|
|
4
58
|
|
|
5
59
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hoverRegistry.generated.d.ts","sourceRoot":"","sources":["../src/hoverRegistry.generated.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxE,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,QAAQ,CAAC;CACvB,CAAC,CAAC;AAEH;;;;;;;;GAQG;AAEH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"hoverRegistry.generated.d.ts","sourceRoot":"","sources":["../src/hoverRegistry.generated.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxE,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,QAAQ,CAAC;CACvB,CAAC,CAAC;AAEH;;;;;;;;GAQG;AAEH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAwqPvE,CAAC"}
|
|
@@ -126,7 +126,7 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
126
126
|
"fqn": "AlmaOpts",
|
|
127
127
|
"kind": "type",
|
|
128
128
|
"title": "AlmaOpts",
|
|
129
|
-
"summary": "
|
|
129
|
+
"summary": "/**\nOptions bag for `ta.alma` (Arnaud Legoux MA). `offset` is the\nGaussian-centre position in `[0, 1]` (default `0.85`) — NOT the\nuniversal bar-shift. ALMA's universal display shift is the distinct\n`barShift` field, which matches {@link SmaOpts} (`+n` renders the\nseries `n` bars right, `−n` `n` bars left; presentation-only).\n`sigma` (default `6`) sets the Gaussian spread\n(spread = `length / sigma`). `lineStyle` is a forward-compat\nplot-styling hint.",
|
|
130
130
|
"examples": [
|
|
131
131
|
"const opts: AlmaOpts = { offset: 0.85, sigma: 6 };"
|
|
132
132
|
],
|
|
@@ -375,6 +375,17 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
375
375
|
"since": "0.1",
|
|
376
376
|
"stability": "stable"
|
|
377
377
|
},
|
|
378
|
+
"BarSeries": {
|
|
379
|
+
"fqn": "BarSeries",
|
|
380
|
+
"kind": "type",
|
|
381
|
+
"title": "BarSeries",
|
|
382
|
+
"summary": "/**\nThe current bar as `compute` sees it. Identical to {@link Bar} except the\nOHLCV + derived price/volume fields are {@link PriceSeries} /\n{@link VolumeSeries} — both a scalar (`bar.close * 2`, `plot(bar.close)`,\n`ta.ema(bar.close, 20)`) and an indexable series (`bar.close[1]` reads the\nclose one bar ago). `time` stays a scalar `Time`.",
|
|
383
|
+
"examples": [
|
|
384
|
+
"function delta(bar: BarSeries): number {\nreturn bar.close - bar.close[1];\n}"
|
|
385
|
+
],
|
|
386
|
+
"since": "1.3",
|
|
387
|
+
"stability": "stable"
|
|
388
|
+
},
|
|
378
389
|
"BarssinceOpts": {
|
|
379
390
|
"fqn": "BarssinceOpts",
|
|
380
391
|
"kind": "type",
|
|
@@ -1709,6 +1720,31 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
1709
1720
|
"since": "0.3",
|
|
1710
1721
|
"stability": "stable"
|
|
1711
1722
|
},
|
|
1723
|
+
"draw.fillBetween": {
|
|
1724
|
+
"fqn": "draw.fillBetween",
|
|
1725
|
+
"kind": "function",
|
|
1726
|
+
"title": "draw.fillBetween(edgeA, edgeB, opts?)",
|
|
1727
|
+
"summary": "Fill the ribbon between two edges. Each edge is a list of world\nanchors; the filled region is the closed polygon `edgeA` forward\nthen `edgeB` reversed. The native equivalent of Pine\n`linefill.new(line1, line2, color)` / `fill(plot1, plot2)`.",
|
|
1728
|
+
"paramTable": [
|
|
1729
|
+
{
|
|
1730
|
+
"name": "edgeA",
|
|
1731
|
+
"type": "ReadonlyArray<WorldPoint>",
|
|
1732
|
+
"doc": ""
|
|
1733
|
+
},
|
|
1734
|
+
{
|
|
1735
|
+
"name": "edgeB",
|
|
1736
|
+
"type": "ReadonlyArray<WorldPoint>",
|
|
1737
|
+
"doc": ""
|
|
1738
|
+
},
|
|
1739
|
+
{
|
|
1740
|
+
"name": "opts",
|
|
1741
|
+
"type": "FillBetweenStyle",
|
|
1742
|
+
"doc": ""
|
|
1743
|
+
}
|
|
1744
|
+
],
|
|
1745
|
+
"since": "0.3",
|
|
1746
|
+
"stability": "stable"
|
|
1747
|
+
},
|
|
1712
1748
|
"draw.flatTopBottom": {
|
|
1713
1749
|
"fqn": "draw.flatTopBottom",
|
|
1714
1750
|
"kind": "function",
|
|
@@ -2442,7 +2478,7 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
2442
2478
|
"fqn": "DrawingKind",
|
|
2443
2479
|
"kind": "type",
|
|
2444
2480
|
"title": "DrawingKind",
|
|
2445
|
-
"summary": "/**\nThe full set of
|
|
2481
|
+
"summary": "/**\nThe full set of 63 drawing kinds chartlang supports through `draw.*`.\nThe wire format is kebab-case; the TypeScript script surface is\ncamelCase (`draw.horizontalLine(...)`). See {@link KIND_CAMELCASE} for\nthe canonical bijection.",
|
|
2446
2482
|
"examples": [
|
|
2447
2483
|
"const k: DrawingKind = \"fib-retracement\";\nvoid k;"
|
|
2448
2484
|
],
|
|
@@ -2758,6 +2794,28 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
2758
2794
|
"since": "0.3",
|
|
2759
2795
|
"stability": "stable"
|
|
2760
2796
|
},
|
|
2797
|
+
"FillBetweenState": {
|
|
2798
|
+
"fqn": "FillBetweenState",
|
|
2799
|
+
"kind": "type",
|
|
2800
|
+
"title": "FillBetweenState",
|
|
2801
|
+
"summary": "State for a `fill-between` drawing: a filled ribbon between two edges.\nEach edge is an ordered list of world anchors; the rendered region is\nthe closed polygon `edgeA` forward then `edgeB` reversed.",
|
|
2802
|
+
"examples": [
|
|
2803
|
+
"const state: FillBetweenState = {\nkind: \"fill-between\",\nedgeA: [{ time: 0, price: 1 }],\nedgeB: [{ time: 0, price: 0 }],\nstyle: { fill: \"#3b82f6\" },\n};\nvoid state;"
|
|
2804
|
+
],
|
|
2805
|
+
"since": "0.4",
|
|
2806
|
+
"stability": "stable"
|
|
2807
|
+
},
|
|
2808
|
+
"FillBetweenStyle": {
|
|
2809
|
+
"fqn": "FillBetweenStyle",
|
|
2810
|
+
"kind": "type",
|
|
2811
|
+
"title": "FillBetweenStyle",
|
|
2812
|
+
"summary": "/**\nStyle for {@link draw.fillBetween} — a filled ribbon between two\nedges. Stroke fields are optional (the band may be fill-only);\n`fill` + `fillAlpha` reuse the {@link ShapeStyle} fill model.",
|
|
2813
|
+
"examples": [
|
|
2814
|
+
"const s: FillBetweenStyle = { fill: \"#3b82f6\", fillAlpha: 0.2 };\nvoid s;"
|
|
2815
|
+
],
|
|
2816
|
+
"since": "0.4",
|
|
2817
|
+
"stability": "stable"
|
|
2818
|
+
},
|
|
2761
2819
|
"FisherOpts": {
|
|
2762
2820
|
"fqn": "FisherOpts",
|
|
2763
2821
|
"kind": "type",
|
|
@@ -2969,6 +3027,17 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
2969
3027
|
"since": "0.3",
|
|
2970
3028
|
"stability": "stable"
|
|
2971
3029
|
},
|
|
3030
|
+
"HighestbarsOpts": {
|
|
3031
|
+
"fqn": "HighestbarsOpts",
|
|
3032
|
+
"kind": "type",
|
|
3033
|
+
"title": "HighestbarsOpts",
|
|
3034
|
+
"summary": "Options bag for `ta.highestbars`. `offset` shifts the read window\nbackwards by `n` bars per the universal `opts.offset` convention.",
|
|
3035
|
+
"examples": [
|
|
3036
|
+
"const opts: HighestbarsOpts = { offset: 0 };"
|
|
3037
|
+
],
|
|
3038
|
+
"since": "0.2",
|
|
3039
|
+
"stability": "stable"
|
|
3040
|
+
},
|
|
2972
3041
|
"HighestOpts": {
|
|
2973
3042
|
"fqn": "HighestOpts",
|
|
2974
3043
|
"kind": "type",
|
|
@@ -3744,6 +3813,17 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
3744
3813
|
"since": "0.5",
|
|
3745
3814
|
"stability": "stable"
|
|
3746
3815
|
},
|
|
3816
|
+
"LowestbarsOpts": {
|
|
3817
|
+
"fqn": "LowestbarsOpts",
|
|
3818
|
+
"kind": "type",
|
|
3819
|
+
"title": "LowestbarsOpts",
|
|
3820
|
+
"summary": "/**\nOptions bag for `ta.lowestbars`. Mirrors {@link HighestbarsOpts} .",
|
|
3821
|
+
"examples": [
|
|
3822
|
+
"const opts: LowestbarsOpts = { offset: 0 };"
|
|
3823
|
+
],
|
|
3824
|
+
"since": "0.2",
|
|
3825
|
+
"stability": "stable"
|
|
3826
|
+
},
|
|
3747
3827
|
"LowestOpts": {
|
|
3748
3828
|
"fqn": "LowestOpts",
|
|
3749
3829
|
"kind": "type",
|
|
@@ -3909,6 +3989,17 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
3909
3989
|
"since": "0.2",
|
|
3910
3990
|
"stability": "stable"
|
|
3911
3991
|
},
|
|
3992
|
+
"NumberSeriesSlot": {
|
|
3993
|
+
"fqn": "NumberSeriesSlot",
|
|
3994
|
+
"kind": "type",
|
|
3995
|
+
"title": "NumberSeriesSlot",
|
|
3996
|
+
"summary": "/**\nA user-allocated, writable, indexable number series — the value half of\n{@link state} 's `series` slot. It is **both** a writable scalar slot\n(`s.value = x`, like `state.float`) **and** an indexable\n`Series<number>` (`s[1]`, `s.current`, `+s`, like `bar.close`). Assign\nthe current bar's value with `s.value = …` each step; read history with\n`s[n]` (n bars ago, `NaN` until filled). The runtime backs it with a\nnumber-coercible ring-buffer view sized to the script's max lookback.",
|
|
3997
|
+
"examples": [
|
|
3998
|
+
"function lag(s: NumberSeriesSlot): number {\ns.value = 42;\nreturn s.current - s[1]; // current minus one bar ago\n}"
|
|
3999
|
+
],
|
|
4000
|
+
"since": "1.3",
|
|
4001
|
+
"stability": "stable"
|
|
4002
|
+
},
|
|
3912
4003
|
"NviOpts": {
|
|
3913
4004
|
"fqn": "NviOpts",
|
|
3914
4005
|
"kind": "type",
|
|
@@ -4305,6 +4396,17 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
4305
4396
|
"since": "0.4",
|
|
4306
4397
|
"stability": "stable"
|
|
4307
4398
|
},
|
|
4399
|
+
"PriceSeries": {
|
|
4400
|
+
"fqn": "PriceSeries",
|
|
4401
|
+
"kind": "type",
|
|
4402
|
+
"title": "PriceSeries",
|
|
4403
|
+
"summary": "A bar price field that is **both** a scalar `Price` (so `bar.close * 2`,\ncomparisons, `Math.*`, `plot(bar.close)`, and `ta.*` source arguments all\nwork) **and** an indexable `Series<Price>` (so `bar.close[1]` reads the\nclose one bar ago, `bar.close.current` reads the current close, and\n`bar.close.length` reads the filled depth). The runtime backs it with a\nnumber-coercible ring-buffer view: arithmetic reads `bar.close[0]` (the\ncurrent value) while a literal index reads that many bars back.",
|
|
4404
|
+
"examples": [
|
|
4405
|
+
"function delta(close: PriceSeries): number {\n// current close minus the close one bar ago\nreturn close - close[1];\n}"
|
|
4406
|
+
],
|
|
4407
|
+
"since": "1.3",
|
|
4408
|
+
"stability": "stable"
|
|
4409
|
+
},
|
|
4308
4410
|
"PsarOpts": {
|
|
4309
4411
|
"fqn": "PsarOpts",
|
|
4310
4412
|
"kind": "type",
|
|
@@ -4442,7 +4544,7 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
4442
4544
|
"fqn": "request.lowerTf",
|
|
4443
4545
|
"kind": "function",
|
|
4444
4546
|
"title": "request.lowerTf(_opts)",
|
|
4445
|
-
"summary": "Read lower
|
|
4547
|
+
"summary": "Read **lower**-timeframe bars contained by each main-stream bar. The\nresult is a `Series<ReadonlyArray<Bar>>` — for every main bar, the array\nof finer-grained bars that fall inside it (an empty frozen array for\nout-of-range or unsupported reads). The requested `interval` must be a\ncompile-time literal and **strictly lower** than the chart interval; an\nequal-or-higher ordering is rejected at compile time with\n`lower-tf-not-lower` when statically known. Like `request.security`, it\ndegrades to empty arrays when the adapter lacks\n`Capabilities.multiTimeframe`. See the multi-timeframe guide for the\ncontained-bar model and interval format.",
|
|
4446
4548
|
"paramTable": [
|
|
4447
4549
|
{
|
|
4448
4550
|
"name": "_opts",
|
|
@@ -4451,7 +4553,7 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
4451
4553
|
}
|
|
4452
4554
|
],
|
|
4453
4555
|
"examples": [
|
|
4454
|
-
"
|
|
4556
|
+
"// Each main bar carries the array of intrabar 30-second candles.\nconst intrabar = request.lowerTf({ interval: \"30s\" });\nconst count = intrabar.current.length;\nvoid count;"
|
|
4455
4557
|
],
|
|
4456
4558
|
"since": "0.6",
|
|
4457
4559
|
"stability": "stable"
|
|
@@ -4459,17 +4561,18 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
4459
4561
|
"request.security": {
|
|
4460
4562
|
"fqn": "request.security",
|
|
4461
4563
|
"kind": "function",
|
|
4462
|
-
"title": "request.security(
|
|
4463
|
-
"summary": "Read a secondary candle stream at a script-author-fixed
|
|
4564
|
+
"title": "request.security(opts)",
|
|
4565
|
+
"summary": "Read a secondary candle stream at a script-author-fixed **higher**\ninterval. Two forms:",
|
|
4464
4566
|
"paramTable": [
|
|
4465
4567
|
{
|
|
4466
|
-
"name": "
|
|
4568
|
+
"name": "opts",
|
|
4467
4569
|
"type": "RequestSecurityOpts",
|
|
4468
4570
|
"doc": ""
|
|
4469
4571
|
}
|
|
4470
4572
|
],
|
|
4471
4573
|
"examples": [
|
|
4472
|
-
"
|
|
4574
|
+
"// weekly EMA(20) — computed over weekly bars, drawn on the chart\nconst trend = request.security({ interval: \"1W\" }, (bar) => ta.ema(bar.close, 20));\nplot(trend, { title: \"Weekly EMA(20)\" });",
|
|
4575
|
+
"// data form — aligned weekly close\nconst weekly = request.security({ interval: \"1W\" });\nplot(weekly.close, { title: \"Weekly close\" });"
|
|
4473
4576
|
],
|
|
4474
4577
|
"since": "0.4",
|
|
4475
4578
|
"stability": "stable"
|
|
@@ -4694,6 +4797,28 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
4694
4797
|
"since": "0.4",
|
|
4695
4798
|
"stability": "stable"
|
|
4696
4799
|
},
|
|
4800
|
+
"SecurityExpr": {
|
|
4801
|
+
"fqn": "SecurityExpr",
|
|
4802
|
+
"kind": "type",
|
|
4803
|
+
"title": "SecurityExpr",
|
|
4804
|
+
"summary": "/**\nA higher-timeframe expression callback for {@link RequestNamespace.security} .\nReceives the HTF {@link SecurityBar} (OHLCV series on the secondary\nstream's own clock) and returns the value to evaluate per HTF bar.\nThe body may reference only the `bar` parameter, the ambient `ta`\nnamespace, `inputs`, safe `Math.*` globals, and literal constants —\ncapturing any other outer binding is a compile error\n(`request-security-expr-captures-local`).",
|
|
4805
|
+
"examples": [
|
|
4806
|
+
"const trend: SecurityExpr = (bar) => bar.close;\nvoid trend;"
|
|
4807
|
+
],
|
|
4808
|
+
"since": "0.7",
|
|
4809
|
+
"stability": "stable"
|
|
4810
|
+
},
|
|
4811
|
+
"SecurityExpressionDescriptor": {
|
|
4812
|
+
"fqn": "SecurityExpressionDescriptor",
|
|
4813
|
+
"kind": "type",
|
|
4814
|
+
"title": "SecurityExpressionDescriptor",
|
|
4815
|
+
"summary": "One higher-timeframe expression unit in `ScriptManifest.securityExpressions`.\nThe compiler emits one entry per `request.security({ interval }, (bar) => …)`\ncallsite so the runtime knows which `slotId` is an HTF expression, on which\n`interval` to clock it, and the callback's single parameter name. The\ncallback body stays inline in the compiled module — this descriptor is only\nthe registry pointing at it.",
|
|
4816
|
+
"examples": [
|
|
4817
|
+
"const unit: SecurityExpressionDescriptor = {\nslotId: \"trend.ts:8:21#0\",\ninterval: \"1W\",\nparamName: \"bar\",\n};\nvoid unit;"
|
|
4818
|
+
],
|
|
4819
|
+
"since": "0.7",
|
|
4820
|
+
"stability": "stable"
|
|
4821
|
+
},
|
|
4697
4822
|
"Series": {
|
|
4698
4823
|
"fqn": "Series",
|
|
4699
4824
|
"kind": "type",
|
|
@@ -4786,7 +4911,7 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
4786
4911
|
"fqn": "SmaOpts",
|
|
4787
4912
|
"kind": "type",
|
|
4788
4913
|
"title": "SmaOpts",
|
|
4789
|
-
"summary": "Options bag for `ta.sma`. `offset`
|
|
4914
|
+
"summary": "Options bag for `ta.sma`. `offset` is the universal **display shift**\n(in bars) applied to where the series renders, not to its value:\n`+n` shifts the plotted series `n` bars right (into the future), `−n`\nshifts it `n` bars left (into the past), and `0`/omitted is no shift.\nThe shift is presentation-only — `series.current` is the unshifted\nvalue — and rides the plot emission as `xShift`; both signs are valid.",
|
|
4790
4915
|
"examples": [
|
|
4791
4916
|
"const opts: SmaOpts = { offset: 0 };"
|
|
4792
4917
|
],
|
|
@@ -4913,6 +5038,24 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
4913
5038
|
"since": "0.4",
|
|
4914
5039
|
"stability": "stable"
|
|
4915
5040
|
},
|
|
5041
|
+
"state.series": {
|
|
5042
|
+
"fqn": "state.series",
|
|
5043
|
+
"kind": "function",
|
|
5044
|
+
"title": "state.series(_init)",
|
|
5045
|
+
"summary": "Allocate or read a persistent **series** slot — a writable, indexable\nnumber history. `s.value = expr` writes the current bar's value;\n`s[0]` / `s.current` / `+s` read it back, `s[1]` reads one bar ago.\nThe allocation bar's pre-write head is seeded with `init`; unwritten later\nbars and out-of-range history reads are `NaN`. Unlike `state.float`, the\nslot retains a bounded window of prior committed values (sized to the\nscript's deepest literal `s[n]` lookback).",
|
|
5046
|
+
"paramTable": [
|
|
5047
|
+
{
|
|
5048
|
+
"name": "_init",
|
|
5049
|
+
"type": "number",
|
|
5050
|
+
"doc": ""
|
|
5051
|
+
}
|
|
5052
|
+
],
|
|
5053
|
+
"examples": [
|
|
5054
|
+
"const fn: typeof state.series = state.series;\nvoid fn;"
|
|
5055
|
+
],
|
|
5056
|
+
"since": "1.3",
|
|
5057
|
+
"stability": "stable"
|
|
5058
|
+
},
|
|
4916
5059
|
"state.string": {
|
|
4917
5060
|
"fqn": "state.string",
|
|
4918
5061
|
"kind": "function",
|
|
@@ -4957,7 +5100,7 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
4957
5100
|
"fqn": "STATEFUL_PRIMITIVES_BY_NAME",
|
|
4958
5101
|
"kind": "property",
|
|
4959
5102
|
"title": "STATEFUL_PRIMITIVES_BY_NAME",
|
|
4960
|
-
"summary": "/**\nName → entry index of {@link STATEFUL_PRIMITIVES} . The compiler's\n`callsiteIdInjection` and `statefulCallInLoop` passes consult this map\nby callee name once per call site — O(1) lookup instead of an O(n) scan\nover the
|
|
5103
|
+
"summary": "/**\nName → entry index of {@link STATEFUL_PRIMITIVES} . The compiler's\n`callsiteIdInjection` and `statefulCallInLoop` passes consult this map\nby callee name once per call site — O(1) lookup instead of an O(n) scan\nover the 176-entry set on every visited call. The map is derived from\nthe same canonical entry list as {@link STATEFUL_PRIMITIVES} so adding\na primitive to the set adds it here automatically.",
|
|
4961
5104
|
"examples": [
|
|
4962
5105
|
"import { STATEFUL_PRIMITIVES_BY_NAME } from \"@invinite-org/chartlang-core\";\nconst entry = STATEFUL_PRIMITIVES_BY_NAME.get(\"ta.ema\");\n// entry is { name: \"ta.ema\", slot: true } | undefined"
|
|
4963
5106
|
],
|
|
@@ -5917,6 +6060,31 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
5917
6060
|
"since": "0.1",
|
|
5918
6061
|
"stability": "stable"
|
|
5919
6062
|
},
|
|
6063
|
+
"ta.highestbars": {
|
|
6064
|
+
"fqn": "ta.highestbars",
|
|
6065
|
+
"kind": "function",
|
|
6066
|
+
"title": "ta.highestbars(source, length, opts?)",
|
|
6067
|
+
"summary": "The typed surface of the `ta` namespace. The runtime registers concrete\nimplementations against this interface; scripts call it through the\n`ta` constant exported from `@invinite-org/chartlang-core`. Method: ta.highestbars.",
|
|
6068
|
+
"paramTable": [
|
|
6069
|
+
{
|
|
6070
|
+
"name": "source",
|
|
6071
|
+
"type": "Series<number>",
|
|
6072
|
+
"doc": ""
|
|
6073
|
+
},
|
|
6074
|
+
{
|
|
6075
|
+
"name": "length",
|
|
6076
|
+
"type": "number",
|
|
6077
|
+
"doc": ""
|
|
6078
|
+
},
|
|
6079
|
+
{
|
|
6080
|
+
"name": "opts",
|
|
6081
|
+
"type": "HighestbarsOpts",
|
|
6082
|
+
"doc": ""
|
|
6083
|
+
}
|
|
6084
|
+
],
|
|
6085
|
+
"since": "0.1",
|
|
6086
|
+
"stability": "stable"
|
|
6087
|
+
},
|
|
5920
6088
|
"ta.historicalVolatility": {
|
|
5921
6089
|
"fqn": "ta.historicalVolatility",
|
|
5922
6090
|
"kind": "function",
|
|
@@ -6077,6 +6245,31 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
6077
6245
|
"since": "0.1",
|
|
6078
6246
|
"stability": "stable"
|
|
6079
6247
|
},
|
|
6248
|
+
"ta.lowestbars": {
|
|
6249
|
+
"fqn": "ta.lowestbars",
|
|
6250
|
+
"kind": "function",
|
|
6251
|
+
"title": "ta.lowestbars(source, length, opts?)",
|
|
6252
|
+
"summary": "The typed surface of the `ta` namespace. The runtime registers concrete\nimplementations against this interface; scripts call it through the\n`ta` constant exported from `@invinite-org/chartlang-core`. Method: ta.lowestbars.",
|
|
6253
|
+
"paramTable": [
|
|
6254
|
+
{
|
|
6255
|
+
"name": "source",
|
|
6256
|
+
"type": "Series<number>",
|
|
6257
|
+
"doc": ""
|
|
6258
|
+
},
|
|
6259
|
+
{
|
|
6260
|
+
"name": "length",
|
|
6261
|
+
"type": "number",
|
|
6262
|
+
"doc": ""
|
|
6263
|
+
},
|
|
6264
|
+
{
|
|
6265
|
+
"name": "opts",
|
|
6266
|
+
"type": "LowestbarsOpts",
|
|
6267
|
+
"doc": ""
|
|
6268
|
+
}
|
|
6269
|
+
],
|
|
6270
|
+
"since": "0.1",
|
|
6271
|
+
"stability": "stable"
|
|
6272
|
+
},
|
|
6080
6273
|
"ta.lsma": {
|
|
6081
6274
|
"fqn": "ta.lsma",
|
|
6082
6275
|
"kind": "function",
|
|
@@ -7429,6 +7622,17 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
7429
7622
|
"since": "0.1",
|
|
7430
7623
|
"stability": "stable"
|
|
7431
7624
|
},
|
|
7625
|
+
"VolumeSeries": {
|
|
7626
|
+
"fqn": "VolumeSeries",
|
|
7627
|
+
"kind": "type",
|
|
7628
|
+
"title": "VolumeSeries",
|
|
7629
|
+
"summary": "/**\nVolume counterpart of {@link PriceSeries} : a bar `volume` field usable both\nas a scalar `Volume` and as an indexable `Series<Volume>` (`bar.volume[1]`).",
|
|
7630
|
+
"examples": [
|
|
7631
|
+
"function avgVol(v: VolumeSeries): number {\nreturn (v[0] + v[1] + v[2]) / 3;\n}"
|
|
7632
|
+
],
|
|
7633
|
+
"since": "1.3",
|
|
7634
|
+
"stability": "stable"
|
|
7635
|
+
},
|
|
7432
7636
|
"VortexOpts": {
|
|
7433
7637
|
"fqn": "VortexOpts",
|
|
7434
7638
|
"kind": "type",
|
|
@@ -7590,7 +7794,7 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
7590
7794
|
"fqn": "WmaOpts",
|
|
7591
7795
|
"kind": "type",
|
|
7592
7796
|
"title": "WmaOpts",
|
|
7593
|
-
"summary": "
|
|
7797
|
+
"summary": "/**\nOptions bag for `ta.wma`. `offset` matches {@link SmaOpts} (the\nuniversal bidirectional display shift). `lineStyle` is a\npass-through for the script-author's downstream `plot(wma, { lineStyle })`\ncall — not consumed by the primitive itself.",
|
|
7594
7798
|
"examples": [
|
|
7595
7799
|
"const opts: WmaOpts = { offset: 0 };"
|
|
7596
7800
|
],
|
|
@@ -7640,6 +7844,17 @@ export const HOVER_REGISTRY = Object.freeze({
|
|
|
7640
7844
|
],
|
|
7641
7845
|
"since": "0.2",
|
|
7642
7846
|
"stability": "stable"
|
|
7847
|
+
},
|
|
7848
|
+
"ZOrdered": {
|
|
7849
|
+
"fqn": "ZOrdered",
|
|
7850
|
+
"kind": "type",
|
|
7851
|
+
"title": "ZOrdered",
|
|
7852
|
+
"summary": "Shared render-order mixin intersected into every `draw.*` option bag.",
|
|
7853
|
+
"examples": [
|
|
7854
|
+
"draw.line(a, b, { z: -1 }); // beneath the plots"
|
|
7855
|
+
],
|
|
7856
|
+
"since": "1.4",
|
|
7857
|
+
"stability": "stable"
|
|
7643
7858
|
}
|
|
7644
7859
|
});
|
|
7645
7860
|
//# sourceMappingURL=hoverRegistry.generated.js.map
|