oakscriptjs 0.8.1 → 0.9.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/LICENSE +1 -1
- package/README.md +31 -9
- package/dist/cjs/array/index.d.ts +701 -0
- package/dist/cjs/array/index.d.ts.map +1 -0
- package/dist/cjs/array/index.js +392 -0
- package/dist/cjs/array/index.js.map +7 -0
- package/dist/cjs/box/index.d.ts +444 -0
- package/dist/cjs/box/index.d.ts.map +1 -0
- package/dist/cjs/box/index.js +246 -0
- package/dist/cjs/box/index.js.map +7 -0
- package/dist/cjs/callsite/index.d.ts +61 -0
- package/dist/cjs/callsite/index.d.ts.map +1 -0
- package/dist/cjs/callsite/index.js +65 -0
- package/dist/cjs/callsite/index.js.map +7 -0
- package/dist/cjs/chartpoint/index.d.ts +90 -0
- package/dist/cjs/chartpoint/index.d.ts.map +1 -0
- package/dist/cjs/chartpoint/index.js +56 -0
- package/dist/cjs/chartpoint/index.js.map +7 -0
- package/dist/cjs/color/index.d.ts +285 -0
- package/dist/cjs/color/index.d.ts.map +1 -0
- package/dist/cjs/color/index.js +143 -0
- package/dist/cjs/color/index.js.map +7 -0
- package/dist/cjs/compare/index.d.ts +26 -0
- package/dist/cjs/compare/index.d.ts.map +1 -0
- package/dist/cjs/compare/index.js +50 -0
- package/dist/cjs/compare/index.js.map +7 -0
- package/dist/cjs/drawing/registry.d.ts +42 -0
- package/dist/cjs/drawing/registry.d.ts.map +1 -0
- package/dist/cjs/drawing/registry.js +87 -0
- package/dist/cjs/drawing/registry.js.map +7 -0
- package/dist/cjs/index.d.ts +85 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +184 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/indicator.d.ts +117 -0
- package/dist/cjs/indicator.d.ts.map +1 -0
- package/dist/cjs/indicator.js +74 -0
- package/dist/cjs/indicator.js.map +7 -0
- package/dist/cjs/input.d.ts +196 -0
- package/dist/cjs/input.d.ts.map +1 -0
- package/dist/cjs/input.js +197 -0
- package/dist/cjs/input.js.map +7 -0
- package/dist/cjs/label/index.d.ts +303 -0
- package/dist/cjs/label/index.d.ts.map +1 -0
- package/dist/cjs/label/index.js +190 -0
- package/dist/cjs/label/index.js.map +7 -0
- package/dist/cjs/lib/index.d.ts +8 -0
- package/dist/cjs/lib/index.d.ts.map +1 -0
- package/dist/cjs/lib/index.js +19 -0
- package/dist/cjs/lib/index.js.map +7 -0
- package/dist/{lib → cjs/lib}/zigzag/index.d.ts +4 -1
- package/dist/cjs/lib/zigzag/index.d.ts.map +1 -0
- package/dist/cjs/lib/zigzag/index.js +27 -0
- package/dist/cjs/lib/zigzag/index.js.map +7 -0
- package/dist/cjs/lib/zigzag/zigzag.d.ts +100 -0
- package/dist/cjs/lib/zigzag/zigzag.d.ts.map +1 -0
- package/dist/cjs/lib/zigzag/zigzag.js +207 -0
- package/dist/cjs/lib/zigzag/zigzag.js.map +7 -0
- package/dist/cjs/line/index.d.ts +342 -0
- package/dist/cjs/line/index.d.ts.map +1 -0
- package/dist/cjs/line/index.js +193 -0
- package/dist/cjs/line/index.js.map +7 -0
- package/dist/cjs/linefill/index.d.ts +124 -0
- package/dist/cjs/linefill/index.d.ts.map +1 -0
- package/dist/cjs/linefill/index.js +56 -0
- package/dist/cjs/linefill/index.js.map +7 -0
- package/dist/cjs/map/index.d.ts +69 -0
- package/dist/cjs/map/index.d.ts.map +1 -0
- package/dist/cjs/map/index.js +80 -0
- package/dist/cjs/map/index.js.map +7 -0
- package/dist/cjs/math/index.d.ts +560 -0
- package/dist/cjs/math/index.d.ts.map +1 -0
- package/dist/cjs/math/index.js +441 -0
- package/dist/cjs/math/index.js.map +7 -0
- package/dist/cjs/matrix/index.d.ts +1231 -0
- package/dist/cjs/matrix/index.d.ts.map +1 -0
- package/dist/cjs/matrix/index.js +1200 -0
- package/dist/cjs/matrix/index.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/plot.d.ts +76 -0
- package/dist/cjs/plot.d.ts.map +1 -0
- package/dist/cjs/plot.js +51 -0
- package/dist/cjs/plot.js.map +7 -0
- package/dist/cjs/polyline/index.d.ts +115 -0
- package/dist/cjs/polyline/index.d.ts.map +1 -0
- package/dist/cjs/polyline/index.js +76 -0
- package/dist/cjs/polyline/index.js.map +7 -0
- package/dist/cjs/runtime/adapters/LightweightChartsAdapter.d.ts +86 -0
- package/dist/cjs/runtime/adapters/LightweightChartsAdapter.d.ts.map +1 -0
- package/dist/cjs/runtime/adapters/LightweightChartsAdapter.js +141 -0
- package/dist/cjs/runtime/adapters/LightweightChartsAdapter.js.map +7 -0
- package/dist/cjs/runtime/adapters/SimpleInputAdapter.d.ts +59 -0
- package/dist/cjs/runtime/adapters/SimpleInputAdapter.d.ts.map +1 -0
- package/dist/cjs/runtime/adapters/SimpleInputAdapter.js +117 -0
- package/dist/cjs/runtime/adapters/SimpleInputAdapter.js.map +7 -0
- package/dist/{runtime → cjs/runtime}/index.d.ts +12 -5
- package/dist/cjs/runtime/index.d.ts.map +1 -0
- package/dist/cjs/runtime/index.js +49 -0
- package/dist/cjs/runtime/index.js.map +7 -0
- package/dist/cjs/runtime/inputs.d.ts +91 -0
- package/dist/cjs/runtime/inputs.d.ts.map +1 -0
- package/dist/cjs/runtime/inputs.js +262 -0
- package/dist/cjs/runtime/inputs.js.map +7 -0
- package/dist/cjs/runtime/runtime.d.ts +70 -0
- package/dist/cjs/runtime/runtime.d.ts.map +1 -0
- package/dist/cjs/runtime/runtime.js +148 -0
- package/dist/cjs/runtime/runtime.js.map +7 -0
- package/dist/cjs/runtime/series.d.ts +362 -0
- package/dist/cjs/runtime/series.d.ts.map +1 -0
- package/dist/cjs/runtime/series.js +560 -0
- package/dist/cjs/runtime/series.js.map +7 -0
- package/dist/cjs/runtime/types.d.ts +282 -0
- package/dist/cjs/runtime/types.d.ts.map +1 -0
- package/dist/cjs/runtime/types.js +17 -0
- package/dist/cjs/runtime/types.js.map +7 -0
- package/dist/cjs/script/index.d.ts +987 -0
- package/dist/cjs/script/index.d.ts.map +1 -0
- package/dist/cjs/script/index.js +1169 -0
- package/dist/cjs/script/index.js.map +7 -0
- package/dist/cjs/security/resample.d.ts +63 -0
- package/dist/cjs/security/resample.d.ts.map +1 -0
- package/dist/cjs/security/resample.js +84 -0
- package/dist/cjs/security/resample.js.map +7 -0
- package/dist/cjs/session/bars.d.ts +80 -0
- package/dist/cjs/session/bars.d.ts.map +1 -0
- package/dist/cjs/session/bars.js +219 -0
- package/dist/cjs/session/bars.js.map +7 -0
- package/dist/cjs/session/calendar.d.ts +70 -0
- package/dist/cjs/session/calendar.d.ts.map +1 -0
- package/dist/cjs/session/calendar.js +164 -0
- package/dist/cjs/session/calendar.js.map +7 -0
- package/dist/cjs/str/dateformat.d.ts +15 -0
- package/dist/cjs/str/dateformat.d.ts.map +1 -0
- package/dist/cjs/str/dateformat.js +149 -0
- package/dist/cjs/str/dateformat.js.map +7 -0
- package/dist/cjs/str/index.d.ts +459 -0
- package/dist/cjs/str/index.d.ts.map +1 -0
- package/dist/cjs/str/index.js +143 -0
- package/dist/cjs/str/index.js.map +7 -0
- package/dist/cjs/str/messageformat.d.ts +14 -0
- package/dist/cjs/str/messageformat.d.ts.map +1 -0
- package/dist/cjs/str/messageformat.js +114 -0
- package/dist/cjs/str/messageformat.js.map +7 -0
- package/dist/cjs/str/numberformat.d.ts +19 -0
- package/dist/cjs/str/numberformat.d.ts.map +1 -0
- package/dist/cjs/str/numberformat.js +170 -0
- package/dist/cjs/str/numberformat.js.map +7 -0
- package/dist/{strategy → cjs/strategy}/index.d.ts +50 -0
- package/dist/cjs/strategy/index.d.ts.map +1 -0
- package/dist/cjs/strategy/index.js +92 -0
- package/dist/cjs/strategy/index.js.map +7 -0
- package/dist/cjs/ta/index.d.ts +1397 -0
- package/dist/cjs/ta/index.d.ts.map +1 -0
- package/dist/cjs/ta/index.js +1715 -0
- package/dist/cjs/ta/index.js.map +7 -0
- package/dist/cjs/ta/running-sum.d.ts +30 -0
- package/dist/cjs/ta/running-sum.d.ts.map +1 -0
- package/dist/cjs/ta/running-sum.js +99 -0
- package/dist/cjs/ta/running-sum.js.map +7 -0
- package/dist/cjs/ta-series.d.ts +558 -0
- package/dist/cjs/ta-series.d.ts.map +1 -0
- package/dist/cjs/ta-series.js +606 -0
- package/dist/cjs/ta-series.js.map +7 -0
- package/dist/cjs/text/index.d.ts +14 -0
- package/dist/cjs/text/index.d.ts.map +1 -0
- package/dist/cjs/text/index.js +29 -0
- package/dist/cjs/text/index.js.map +7 -0
- package/dist/cjs/time/datestring.d.ts +23 -0
- package/dist/cjs/time/datestring.d.ts.map +1 -0
- package/dist/cjs/time/datestring.js +106 -0
- package/dist/cjs/time/datestring.js.map +7 -0
- package/dist/cjs/time/index.d.ts +89 -0
- package/dist/cjs/time/index.d.ts.map +1 -0
- package/dist/cjs/time/index.js +85 -0
- package/dist/cjs/time/index.js.map +7 -0
- package/dist/cjs/time/session.d.ts +17 -0
- package/dist/cjs/time/session.d.ts.map +1 -0
- package/dist/cjs/time/session.js +65 -0
- package/dist/cjs/time/session.js.map +7 -0
- package/dist/cjs/time/timezone.d.ts +40 -0
- package/dist/cjs/time/timezone.d.ts.map +1 -0
- package/dist/cjs/time/timezone.js +125 -0
- package/dist/cjs/time/timezone.js.map +7 -0
- package/dist/cjs/timeframe/index.d.ts +73 -0
- package/dist/cjs/timeframe/index.d.ts.map +1 -0
- package/dist/cjs/timeframe/index.js +85 -0
- package/dist/cjs/timeframe/index.js.map +7 -0
- package/dist/cjs/types/index.d.ts +343 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +32 -0
- package/dist/cjs/types/index.js.map +7 -0
- package/dist/cjs/types/metadata.d.ts +300 -0
- package/dist/cjs/types/metadata.d.ts.map +1 -0
- package/dist/cjs/types/metadata.js +17 -0
- package/dist/cjs/types/metadata.js.map +7 -0
- package/dist/cjs/utils/index.d.ts +167 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +209 -0
- package/dist/cjs/utils/index.js.map +7 -0
- package/dist/esm/array/index.d.ts +701 -0
- package/dist/esm/array/index.d.ts.map +1 -0
- package/dist/esm/array/index.js +983 -0
- package/dist/esm/array/index.js.map +1 -0
- package/dist/esm/box/index.d.ts +444 -0
- package/dist/esm/box/index.d.ts.map +1 -0
- package/dist/esm/box/index.js +602 -0
- package/dist/esm/box/index.js.map +1 -0
- package/dist/esm/callsite/index.d.ts +61 -0
- package/dist/esm/callsite/index.d.ts.map +1 -0
- package/dist/esm/callsite/index.js +97 -0
- package/dist/esm/callsite/index.js.map +1 -0
- package/dist/esm/chartpoint/index.d.ts +90 -0
- package/dist/esm/chartpoint/index.d.ts.map +1 -0
- package/dist/esm/chartpoint/index.js +113 -0
- package/dist/esm/chartpoint/index.js.map +1 -0
- package/dist/esm/color/index.d.ts +285 -0
- package/dist/esm/color/index.d.ts.map +1 -0
- package/dist/esm/color/index.js +373 -0
- package/dist/esm/color/index.js.map +1 -0
- package/dist/esm/compare/index.d.ts +26 -0
- package/dist/esm/compare/index.d.ts.map +1 -0
- package/dist/esm/compare/index.js +39 -0
- package/dist/esm/compare/index.js.map +1 -0
- package/dist/esm/drawing/registry.d.ts +42 -0
- package/dist/esm/drawing/registry.d.ts.map +1 -0
- package/dist/esm/drawing/registry.js +89 -0
- package/dist/esm/drawing/registry.js.map +1 -0
- package/dist/esm/index.d.ts +85 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +96 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/indicator.d.ts +117 -0
- package/dist/esm/indicator.d.ts.map +1 -0
- package/dist/esm/indicator.js +84 -0
- package/dist/esm/indicator.js.map +1 -0
- package/dist/esm/input.d.ts +196 -0
- package/dist/esm/input.d.ts.map +1 -0
- package/dist/esm/input.js +183 -0
- package/dist/esm/input.js.map +1 -0
- package/dist/esm/label/index.d.ts +303 -0
- package/dist/esm/label/index.d.ts.map +1 -0
- package/dist/esm/label/index.js +417 -0
- package/dist/esm/label/index.js.map +1 -0
- package/dist/esm/lib/index.d.ts +8 -0
- package/dist/esm/lib/index.d.ts.map +1 -0
- package/dist/esm/lib/index.js +8 -0
- package/dist/esm/lib/index.js.map +1 -0
- package/dist/esm/lib/zigzag/index.d.ts +5 -0
- package/dist/esm/lib/zigzag/index.d.ts.map +1 -0
- package/dist/esm/lib/zigzag/index.js +5 -0
- package/dist/esm/lib/zigzag/index.js.map +1 -0
- package/dist/esm/lib/zigzag/zigzag.d.ts +100 -0
- package/dist/esm/lib/zigzag/zigzag.d.ts.map +1 -0
- package/dist/esm/lib/zigzag/zigzag.js +229 -0
- package/dist/esm/lib/zigzag/zigzag.js.map +1 -0
- package/dist/esm/line/index.d.ts +342 -0
- package/dist/esm/line/index.d.ts.map +1 -0
- package/dist/esm/line/index.js +470 -0
- package/dist/esm/line/index.js.map +1 -0
- package/dist/esm/linefill/index.d.ts +124 -0
- package/dist/esm/linefill/index.d.ts.map +1 -0
- package/dist/esm/linefill/index.js +144 -0
- package/dist/esm/linefill/index.js.map +1 -0
- package/dist/esm/map/index.d.ts +69 -0
- package/dist/esm/map/index.d.ts.map +1 -0
- package/dist/esm/map/index.js +106 -0
- package/dist/esm/map/index.js.map +1 -0
- package/dist/esm/math/index.d.ts +560 -0
- package/dist/esm/math/index.d.ts.map +1 -0
- package/dist/esm/math/index.js +495 -0
- package/dist/esm/math/index.js.map +1 -0
- package/dist/esm/matrix/index.d.ts +1231 -0
- package/dist/esm/matrix/index.d.ts.map +1 -0
- package/dist/esm/matrix/index.js +2450 -0
- package/dist/esm/matrix/index.js.map +1 -0
- package/dist/esm/plot.d.ts +76 -0
- package/dist/esm/plot.d.ts.map +1 -0
- package/dist/esm/plot.js +63 -0
- package/dist/esm/plot.js.map +1 -0
- package/dist/esm/polyline/index.d.ts +115 -0
- package/dist/esm/polyline/index.d.ts.map +1 -0
- package/dist/esm/polyline/index.js +157 -0
- package/dist/esm/polyline/index.js.map +1 -0
- package/dist/esm/runtime/adapters/LightweightChartsAdapter.d.ts +86 -0
- package/dist/esm/runtime/adapters/LightweightChartsAdapter.d.ts.map +1 -0
- package/dist/esm/runtime/adapters/LightweightChartsAdapter.js +140 -0
- package/dist/esm/runtime/adapters/LightweightChartsAdapter.js.map +1 -0
- package/dist/esm/runtime/adapters/SimpleInputAdapter.d.ts +59 -0
- package/dist/esm/runtime/adapters/SimpleInputAdapter.d.ts.map +1 -0
- package/dist/esm/runtime/adapters/SimpleInputAdapter.js +115 -0
- package/dist/esm/runtime/adapters/SimpleInputAdapter.js.map +1 -0
- package/dist/esm/runtime/index.d.ts +13 -0
- package/dist/esm/runtime/index.d.ts.map +1 -0
- package/dist/esm/runtime/index.js +14 -0
- package/dist/esm/runtime/index.js.map +1 -0
- package/dist/esm/runtime/inputs.d.ts +91 -0
- package/dist/esm/runtime/inputs.d.ts.map +1 -0
- package/dist/esm/runtime/inputs.js +334 -0
- package/dist/esm/runtime/inputs.js.map +1 -0
- package/dist/esm/runtime/runtime.d.ts +70 -0
- package/dist/esm/runtime/runtime.d.ts.map +1 -0
- package/dist/esm/runtime/runtime.js +193 -0
- package/dist/esm/runtime/runtime.js.map +1 -0
- package/dist/esm/runtime/series.d.ts +362 -0
- package/dist/esm/runtime/series.d.ts.map +1 -0
- package/dist/esm/runtime/series.js +583 -0
- package/dist/esm/runtime/series.js.map +1 -0
- package/dist/esm/runtime/types.d.ts +282 -0
- package/dist/esm/runtime/types.d.ts.map +1 -0
- package/dist/esm/runtime/types.js +7 -0
- package/dist/esm/runtime/types.js.map +1 -0
- package/dist/esm/script/index.d.ts +987 -0
- package/dist/esm/script/index.d.ts.map +1 -0
- package/dist/esm/script/index.js +1289 -0
- package/dist/esm/script/index.js.map +1 -0
- package/dist/esm/security/resample.d.ts +63 -0
- package/dist/esm/security/resample.d.ts.map +1 -0
- package/dist/esm/security/resample.js +110 -0
- package/dist/esm/security/resample.js.map +1 -0
- package/dist/esm/session/bars.d.ts +80 -0
- package/dist/esm/session/bars.d.ts.map +1 -0
- package/dist/esm/session/bars.js +232 -0
- package/dist/esm/session/bars.js.map +1 -0
- package/dist/esm/session/calendar.d.ts +70 -0
- package/dist/esm/session/calendar.d.ts.map +1 -0
- package/dist/esm/session/calendar.js +172 -0
- package/dist/esm/session/calendar.js.map +1 -0
- package/dist/esm/str/dateformat.d.ts +15 -0
- package/dist/esm/str/dateformat.d.ts.map +1 -0
- package/dist/esm/str/dateformat.js +136 -0
- package/dist/esm/str/dateformat.js.map +1 -0
- package/dist/esm/str/index.d.ts +459 -0
- package/dist/esm/str/index.d.ts.map +1 -0
- package/dist/esm/str/index.js +540 -0
- package/dist/esm/str/index.js.map +1 -0
- package/dist/esm/str/messageformat.d.ts +14 -0
- package/dist/esm/str/messageformat.d.ts.map +1 -0
- package/dist/esm/str/messageformat.js +111 -0
- package/dist/esm/str/messageformat.js.map +1 -0
- package/dist/esm/str/numberformat.d.ts +19 -0
- package/dist/esm/str/numberformat.d.ts.map +1 -0
- package/dist/esm/str/numberformat.js +189 -0
- package/dist/esm/str/numberformat.js.map +1 -0
- package/dist/esm/strategy/index.d.ts +245 -0
- package/dist/esm/strategy/index.d.ts.map +1 -0
- package/dist/esm/strategy/index.js +84 -0
- package/dist/esm/strategy/index.js.map +1 -0
- package/dist/esm/ta/index.d.ts +1397 -0
- package/dist/esm/ta/index.d.ts.map +1 -0
- package/dist/esm/ta/index.js +3227 -0
- package/dist/esm/ta/index.js.map +1 -0
- package/dist/esm/ta/running-sum.d.ts +30 -0
- package/dist/esm/ta/running-sum.d.ts.map +1 -0
- package/dist/esm/ta/running-sum.js +113 -0
- package/dist/esm/ta/running-sum.js.map +1 -0
- package/dist/esm/ta-series.d.ts +558 -0
- package/dist/esm/ta-series.d.ts.map +1 -0
- package/dist/esm/ta-series.js +910 -0
- package/dist/esm/ta-series.js.map +1 -0
- package/dist/esm/text/index.d.ts +14 -0
- package/dist/esm/text/index.d.ts.map +1 -0
- package/dist/esm/text/index.js +14 -0
- package/dist/esm/text/index.js.map +1 -0
- package/dist/esm/time/datestring.d.ts +23 -0
- package/dist/esm/time/datestring.d.ts.map +1 -0
- package/dist/esm/time/datestring.js +94 -0
- package/dist/esm/time/datestring.js.map +1 -0
- package/dist/esm/time/index.d.ts +89 -0
- package/dist/esm/time/index.d.ts.map +1 -0
- package/dist/esm/time/index.js +108 -0
- package/dist/esm/time/index.js.map +1 -0
- package/dist/esm/time/session.d.ts +17 -0
- package/dist/esm/time/session.d.ts.map +1 -0
- package/dist/esm/time/session.js +69 -0
- package/dist/esm/time/session.js.map +1 -0
- package/dist/esm/time/timezone.d.ts +40 -0
- package/dist/esm/time/timezone.d.ts.map +1 -0
- package/dist/esm/time/timezone.js +144 -0
- package/dist/esm/time/timezone.js.map +1 -0
- package/dist/esm/timeframe/index.d.ts +73 -0
- package/dist/esm/timeframe/index.d.ts.map +1 -0
- package/dist/esm/timeframe/index.js +131 -0
- package/dist/esm/timeframe/index.js.map +1 -0
- package/dist/esm/types/index.d.ts +343 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +17 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/metadata.d.ts +300 -0
- package/dist/esm/types/metadata.d.ts.map +1 -0
- package/dist/esm/types/metadata.js +7 -0
- package/dist/esm/types/metadata.js.map +1 -0
- package/dist/esm/utils/index.d.ts +167 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +295 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/package.json +53 -23
- package/src/array/index.ts +1056 -0
- package/src/box/index.ts +680 -0
- package/src/callsite/index.ts +104 -0
- package/src/chartpoint/index.ts +126 -0
- package/src/color/index.ts +411 -0
- package/src/compare/index.ts +46 -0
- package/src/drawing/registry.ts +106 -0
- package/src/index.ts +201 -0
- package/src/indicator.ts +185 -0
- package/src/input.ts +280 -0
- package/src/label/index.ts +490 -0
- package/src/lib/index.ts +8 -0
- package/src/lib/zigzag/index.ts +13 -0
- package/src/lib/zigzag/zigzag.ts +318 -0
- package/src/line/index.ts +530 -0
- package/src/linefill/index.ts +152 -0
- package/src/map/index.ts +115 -0
- package/src/math/index.ts +1071 -0
- package/src/matrix/index.ts +2697 -0
- package/src/plot.ts +121 -0
- package/src/polyline/index.ts +184 -0
- package/src/runtime/adapters/LightweightChartsAdapter.ts +201 -0
- package/src/runtime/adapters/SimpleInputAdapter.ts +132 -0
- package/src/runtime/index.ts +52 -0
- package/src/runtime/inputs.ts +377 -0
- package/src/runtime/runtime.ts +241 -0
- package/src/runtime/series.ts +644 -0
- package/src/runtime/types.ts +292 -0
- package/src/script/index.ts +1865 -0
- package/src/security/resample.ts +119 -0
- package/src/session/bars.ts +262 -0
- package/src/session/calendar.ts +199 -0
- package/src/str/dateformat.ts +104 -0
- package/src/str/index.ts +557 -0
- package/src/str/messageformat.ts +109 -0
- package/src/str/numberformat.ts +197 -0
- package/src/strategy/index.ts +281 -0
- package/src/ta/index.ts +3580 -0
- package/src/ta/running-sum.ts +117 -0
- package/src/ta-series.ts +1036 -0
- package/src/text/index.ts +14 -0
- package/src/time/datestring.ts +96 -0
- package/src/time/index.ts +161 -0
- package/src/time/session.ts +79 -0
- package/src/time/timezone.ts +180 -0
- package/src/timeframe/index.ts +144 -0
- package/src/types/index.ts +398 -0
- package/src/types/metadata.ts +334 -0
- package/src/utils/index.ts +334 -0
- package/dist/array/index.d.ts +0 -57
- package/dist/array/index.d.ts.map +0 -1
- package/dist/box/index.d.ts +0 -37
- package/dist/box/index.d.ts.map +0 -1
- package/dist/callsite/index.d.ts +0 -7
- package/dist/callsite/index.d.ts.map +0 -1
- package/dist/chartpoint/index.d.ts +0 -8
- package/dist/chartpoint/index.d.ts.map +0 -1
- package/dist/color/index.d.ts +0 -28
- package/dist/color/index.d.ts.map +0 -1
- package/dist/compare/index.d.ts +0 -8
- package/dist/compare/index.d.ts.map +0 -1
- package/dist/drawing/registry.d.ts +0 -19
- package/dist/drawing/registry.d.ts.map +0 -1
- package/dist/index.cjs +0 -7979
- package/dist/index.d.ts +0 -64
- package/dist/index.d.ts.map +0 -1
- package/dist/index.mjs +0 -7962
- package/dist/indicator.d.ts +0 -42
- package/dist/indicator.d.ts.map +0 -1
- package/dist/input.d.ts +0 -47
- package/dist/input.d.ts.map +0 -1
- package/dist/label/index.d.ts +0 -30
- package/dist/label/index.d.ts.map +0 -1
- package/dist/lib/index.d.ts +0 -2
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/zigzag/index.d.ts.map +0 -1
- package/dist/lib/zigzag/zigzag.d.ts +0 -47
- package/dist/lib/zigzag/zigzag.d.ts.map +0 -1
- package/dist/line/index.d.ts +0 -30
- package/dist/line/index.d.ts.map +0 -1
- package/dist/linefill/index.d.ts +0 -10
- package/dist/linefill/index.d.ts.map +0 -1
- package/dist/map/index.d.ts +0 -14
- package/dist/map/index.d.ts.map +0 -1
- package/dist/math/index.d.ts +0 -53
- package/dist/math/index.d.ts.map +0 -1
- package/dist/matrix/index.d.ts +0 -52
- package/dist/matrix/index.d.ts.map +0 -1
- package/dist/plot.d.ts +0 -20
- package/dist/plot.d.ts.map +0 -1
- package/dist/polyline/index.d.ts +0 -11
- package/dist/polyline/index.d.ts.map +0 -1
- package/dist/runtime/adapters/LightweightChartsAdapter.d.ts +0 -15
- package/dist/runtime/adapters/LightweightChartsAdapter.d.ts.map +0 -1
- package/dist/runtime/adapters/SimpleInputAdapter.d.ts +0 -16
- package/dist/runtime/adapters/SimpleInputAdapter.d.ts.map +0 -1
- package/dist/runtime/index.cjs +0 -600
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.mjs +0 -577
- package/dist/runtime/inputs.d.ts +0 -13
- package/dist/runtime/inputs.d.ts.map +0 -1
- package/dist/runtime/runtime.d.ts +0 -16
- package/dist/runtime/runtime.d.ts.map +0 -1
- package/dist/runtime/series.d.ts +0 -60
- package/dist/runtime/series.d.ts.map +0 -1
- package/dist/runtime/types.d.ts +0 -122
- package/dist/runtime/types.d.ts.map +0 -1
- package/dist/script/index.cjs +0 -6372
- package/dist/script/index.d.ts +0 -709
- package/dist/script/index.d.ts.map +0 -1
- package/dist/script/index.mjs +0 -6355
- package/dist/security/resample.d.ts +0 -13
- package/dist/security/resample.d.ts.map +0 -1
- package/dist/session/bars.d.ts +0 -34
- package/dist/session/bars.d.ts.map +0 -1
- package/dist/session/calendar.d.ts +0 -31
- package/dist/session/calendar.d.ts.map +0 -1
- package/dist/str/dateformat.d.ts +0 -2
- package/dist/str/dateformat.d.ts.map +0 -1
- package/dist/str/index.d.ts +0 -24
- package/dist/str/index.d.ts.map +0 -1
- package/dist/str/messageformat.d.ts +0 -2
- package/dist/str/messageformat.d.ts.map +0 -1
- package/dist/str/numberformat.d.ts +0 -3
- package/dist/str/numberformat.d.ts.map +0 -1
- package/dist/strategy/index.d.ts.map +0 -1
- package/dist/ta/index.d.ts +0 -72
- package/dist/ta/index.d.ts.map +0 -1
- package/dist/ta-series.d.ts +0 -143
- package/dist/ta-series.d.ts.map +0 -1
- package/dist/text/index.d.ts +0 -4
- package/dist/text/index.d.ts.map +0 -1
- package/dist/time/datestring.d.ts +0 -2
- package/dist/time/datestring.d.ts.map +0 -1
- package/dist/time/index.d.ts +0 -15
- package/dist/time/index.d.ts.map +0 -1
- package/dist/time/session.d.ts +0 -2
- package/dist/time/session.d.ts.map +0 -1
- package/dist/time/timezone.d.ts +0 -13
- package/dist/time/timezone.d.ts.map +0 -1
- package/dist/timeframe/index.d.ts +0 -17
- package/dist/timeframe/index.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -181
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/metadata.d.ts +0 -131
- package/dist/types/metadata.d.ts.map +0 -1
- package/dist/utils/index.d.ts +0 -26
- package/dist/utils/index.d.ts.map +0 -1
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Simplified Series class for lazy time-series computation
|
|
3
|
+
* Represents a time-series of values with lazy evaluation
|
|
4
|
+
* @module runtime/series
|
|
5
|
+
*/
|
|
6
|
+
import * as compare from '../compare/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* BarData - Versioned wrapper around Bar[] array for cache invalidation
|
|
9
|
+
*
|
|
10
|
+
* This class wraps a Bar[] array and tracks a version number that increments
|
|
11
|
+
* whenever the data is mutated. Series objects reference this to detect when
|
|
12
|
+
* their cached values need to be recomputed.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const barData = new BarData(bars);
|
|
17
|
+
* const close = Series.fromBars(barData, 'close');
|
|
18
|
+
* const values1 = close.toArray(); // Computes and caches
|
|
19
|
+
*
|
|
20
|
+
* barData.push(newBar); // Increments version
|
|
21
|
+
* const values2 = close.toArray(); // Detects stale cache, recomputes
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export class BarData {
|
|
25
|
+
_bars;
|
|
26
|
+
_version = 0;
|
|
27
|
+
/**
|
|
28
|
+
* Create a new BarData wrapper
|
|
29
|
+
* @param bars - Initial bar data (defaults to empty array)
|
|
30
|
+
*/
|
|
31
|
+
constructor(bars = []) {
|
|
32
|
+
this._bars = bars;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get the current version number
|
|
36
|
+
* Version increments whenever data is mutated
|
|
37
|
+
*/
|
|
38
|
+
get version() {
|
|
39
|
+
return this._version;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get the underlying bar array
|
|
43
|
+
* Note: Direct mutations to this array will NOT increment version
|
|
44
|
+
* Use the provided mutation methods instead
|
|
45
|
+
*/
|
|
46
|
+
get bars() {
|
|
47
|
+
return this._bars;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get the number of bars
|
|
51
|
+
*/
|
|
52
|
+
get length() {
|
|
53
|
+
return this._bars.length;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Add a new bar to the end
|
|
57
|
+
* @param bar - Bar to add
|
|
58
|
+
*/
|
|
59
|
+
push(bar) {
|
|
60
|
+
this._bars.push(bar);
|
|
61
|
+
this._version++;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Remove and return the last bar
|
|
65
|
+
* @returns The removed bar, or undefined if empty
|
|
66
|
+
*/
|
|
67
|
+
pop() {
|
|
68
|
+
const bar = this._bars.pop();
|
|
69
|
+
if (bar !== undefined) {
|
|
70
|
+
this._version++;
|
|
71
|
+
}
|
|
72
|
+
return bar;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Replace a bar at a specific index
|
|
76
|
+
* @param index - Index to update
|
|
77
|
+
* @param bar - New bar data
|
|
78
|
+
*/
|
|
79
|
+
set(index, bar) {
|
|
80
|
+
if (index >= 0 && index < this._bars.length) {
|
|
81
|
+
this._bars[index] = bar;
|
|
82
|
+
this._version++;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Update the last bar (useful for real-time/streaming updates)
|
|
87
|
+
* @param bar - New bar data
|
|
88
|
+
*/
|
|
89
|
+
updateLast(bar) {
|
|
90
|
+
if (this._bars.length > 0) {
|
|
91
|
+
this._bars[this._bars.length - 1] = bar;
|
|
92
|
+
this._version++;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Replace all bars with new data
|
|
97
|
+
* @param bars - New bar array
|
|
98
|
+
*/
|
|
99
|
+
setAll(bars) {
|
|
100
|
+
this._bars = bars;
|
|
101
|
+
this._version++;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Manually increment version (for advanced use cases)
|
|
105
|
+
* Call this after direct mutations to the bars array
|
|
106
|
+
*/
|
|
107
|
+
invalidate() {
|
|
108
|
+
this._version++;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get a bar at a specific index
|
|
112
|
+
* @param index - Bar index
|
|
113
|
+
* @returns Bar at that index, or undefined
|
|
114
|
+
*/
|
|
115
|
+
at(index) {
|
|
116
|
+
return this._bars[index];
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Create a BarData from an existing Bar array
|
|
120
|
+
* @param bars - Bar array
|
|
121
|
+
* @returns New BarData instance
|
|
122
|
+
*/
|
|
123
|
+
static from(bars) {
|
|
124
|
+
return new BarData(bars);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Series - represents a time-series of values with lazy evaluation
|
|
129
|
+
*
|
|
130
|
+
* Series are lazy - they don't compute values until needed.
|
|
131
|
+
* Operations on Series return new Series with composed extractors.
|
|
132
|
+
*
|
|
133
|
+
* Now supports automatic cache invalidation via BarData versioning
|
|
134
|
+
* and memory-efficient closure chain breaking via materialize().
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```typescript
|
|
138
|
+
* // Basic usage (backward compatible)
|
|
139
|
+
* const close = Series.fromBars(bars, 'close');
|
|
140
|
+
* const open = Series.fromBars(bars, 'open');
|
|
141
|
+
* const range = close.sub(open); // Creates new Series, doesn't compute yet
|
|
142
|
+
* const values = range.toArray(); // Now computes for all bars
|
|
143
|
+
*
|
|
144
|
+
* // With automatic cache invalidation
|
|
145
|
+
* const barData = new BarData(bars);
|
|
146
|
+
* const close = Series.fromBars(barData, 'close');
|
|
147
|
+
* const values1 = close.toArray(); // Computes and caches
|
|
148
|
+
* barData.push(newBar); // Version increments
|
|
149
|
+
* const values2 = close.toArray(); // Detects stale cache, recomputes
|
|
150
|
+
*
|
|
151
|
+
* // Breaking closure chains for memory efficiency
|
|
152
|
+
* const complex = a.add(b).mul(c).div(d).sub(e);
|
|
153
|
+
* const materialized = complex.materialize(); // Breaks closure chain
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
export class Series {
|
|
157
|
+
extractor;
|
|
158
|
+
dataSource;
|
|
159
|
+
cached = null;
|
|
160
|
+
cachedVersion = -1;
|
|
161
|
+
/**
|
|
162
|
+
* Create a new Series
|
|
163
|
+
*
|
|
164
|
+
* @param data - Bar data (Bar[] or BarData)
|
|
165
|
+
* @param extractor - Function to extract/compute value for each bar
|
|
166
|
+
*/
|
|
167
|
+
constructor(data, extractor) {
|
|
168
|
+
// Support both Bar[] and BarData for backward compatibility
|
|
169
|
+
this.dataSource = data instanceof BarData ? data : new BarData(data);
|
|
170
|
+
this.extractor = extractor;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get the underlying bar data
|
|
174
|
+
* @returns Bar array
|
|
175
|
+
*/
|
|
176
|
+
get bars() {
|
|
177
|
+
return this.dataSource.bars;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get the underlying BarData source
|
|
181
|
+
* @returns BarData instance
|
|
182
|
+
*/
|
|
183
|
+
get barData() {
|
|
184
|
+
return this.dataSource;
|
|
185
|
+
}
|
|
186
|
+
// ============================================
|
|
187
|
+
// Static Factory Methods
|
|
188
|
+
// ============================================
|
|
189
|
+
/**
|
|
190
|
+
* Create Series from bar data by extracting a specific field
|
|
191
|
+
* @param bars - Bar data (Bar[] or BarData)
|
|
192
|
+
* @param field - Field to extract ('open', 'high', 'low', 'close', 'volume')
|
|
193
|
+
* @returns Series with extracted field values
|
|
194
|
+
*/
|
|
195
|
+
static fromBars(bars, field) {
|
|
196
|
+
return new Series(bars, (bar) => bar[field] ?? NaN);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Create a constant series (same value for all bars)
|
|
200
|
+
* @param bars - Bar data (Bar[] or BarData)
|
|
201
|
+
* @param value - Constant value
|
|
202
|
+
* @returns Series with constant value
|
|
203
|
+
*/
|
|
204
|
+
static constant(bars, value) {
|
|
205
|
+
return new Series(bars, () => value);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Create series from array of values
|
|
209
|
+
* @param bars - Bar data (Bar[] or BarData) for time alignment
|
|
210
|
+
* @param values - Array of values
|
|
211
|
+
* @returns Series
|
|
212
|
+
* @throws When read on other bars with a different length than `values` (e.g. a series computed on the
|
|
213
|
+
* chart bars and read inside a `request.security` expression, which runs on the higher-timeframe bars)
|
|
214
|
+
*/
|
|
215
|
+
static fromArray(bars, values) {
|
|
216
|
+
const origin = bars instanceof BarData ? bars.bars : bars;
|
|
217
|
+
return new Series(bars, (_bar, i, data) => {
|
|
218
|
+
if (data !== origin && data.length !== values.length) {
|
|
219
|
+
throw new Error(`Series values were computed on other bars (${values.length} values, ${data.length} bars). ` +
|
|
220
|
+
'Inside request.security(), compute the series inside the expression, e.g. () => ta.ema(close, 10).');
|
|
221
|
+
}
|
|
222
|
+
return values[i] ?? NaN;
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
// ============================================
|
|
226
|
+
// Arithmetic Operations
|
|
227
|
+
// ============================================
|
|
228
|
+
/**
|
|
229
|
+
* Add two series or a series and a number
|
|
230
|
+
* @param other - Series or number to add
|
|
231
|
+
* @returns New Series representing the sum
|
|
232
|
+
*/
|
|
233
|
+
add(other) {
|
|
234
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
235
|
+
const a = this.extractor(bar, i, data);
|
|
236
|
+
const b = typeof other === 'number' ? other : other.extractor(bar, i, data);
|
|
237
|
+
return a + b;
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Subtract two series or subtract a number from a series
|
|
242
|
+
* @param other - Series or number to subtract
|
|
243
|
+
* @returns New Series representing the difference
|
|
244
|
+
*/
|
|
245
|
+
sub(other) {
|
|
246
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
247
|
+
const a = this.extractor(bar, i, data);
|
|
248
|
+
const b = typeof other === 'number' ? other : other.extractor(bar, i, data);
|
|
249
|
+
return a - b;
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Multiply two series or a series by a number
|
|
254
|
+
* @param other - Series or number to multiply
|
|
255
|
+
* @returns New Series representing the product
|
|
256
|
+
*/
|
|
257
|
+
mul(other) {
|
|
258
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
259
|
+
const a = this.extractor(bar, i, data);
|
|
260
|
+
const b = typeof other === 'number' ? other : other.extractor(bar, i, data);
|
|
261
|
+
return a * b;
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Raise the series to a power (PineScript math.pow on a series)
|
|
266
|
+
* @param exponent - Series or number exponent
|
|
267
|
+
* @returns New Series representing base ** exponent
|
|
268
|
+
*/
|
|
269
|
+
pow(exponent) {
|
|
270
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
271
|
+
const a = this.extractor(bar, i, data);
|
|
272
|
+
const b = typeof exponent === 'number' ? exponent : exponent.extractor(bar, i, data);
|
|
273
|
+
return Math.pow(a, b);
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Divide two series or a series by a number
|
|
278
|
+
* @param other - Series or number to divide by
|
|
279
|
+
* @returns New Series representing the quotient
|
|
280
|
+
*/
|
|
281
|
+
div(other) {
|
|
282
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
283
|
+
const a = this.extractor(bar, i, data);
|
|
284
|
+
const b = typeof other === 'number' ? other : other.extractor(bar, i, data);
|
|
285
|
+
return a / b; // PineScript: x / 0 is +/-Infinity (na() is true for it), 0 / 0 is na
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Modulo operation
|
|
290
|
+
* @param other - Series or number for modulo
|
|
291
|
+
* @returns New Series representing the remainder
|
|
292
|
+
*/
|
|
293
|
+
mod(other) {
|
|
294
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
295
|
+
const a = this.extractor(bar, i, data);
|
|
296
|
+
const b = typeof other === 'number' ? other : other.extractor(bar, i, data);
|
|
297
|
+
return b !== 0 ? a % b : NaN;
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Negation
|
|
302
|
+
* @returns New Series with negated values
|
|
303
|
+
*/
|
|
304
|
+
neg() {
|
|
305
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
306
|
+
return -this.extractor(bar, i, data);
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
// ============================================
|
|
310
|
+
// Comparison Operations (PineScript operators: tolerance 1e-10, false with na; see src/compare)
|
|
311
|
+
// ============================================
|
|
312
|
+
/**
|
|
313
|
+
* Greater than comparison
|
|
314
|
+
* @param other - Series or number to compare
|
|
315
|
+
* @returns New Series with 1 where true, 0 where false
|
|
316
|
+
*/
|
|
317
|
+
gt(other) {
|
|
318
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
319
|
+
const a = this.extractor(bar, i, data);
|
|
320
|
+
const b = typeof other === 'number' ? other : other.extractor(bar, i, data);
|
|
321
|
+
return compare.gt(a, b) ? 1 : 0;
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Greater than or equal comparison
|
|
326
|
+
* @param other - Series or number to compare
|
|
327
|
+
* @returns New Series with 1 where true, 0 where false
|
|
328
|
+
*/
|
|
329
|
+
gte(other) {
|
|
330
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
331
|
+
const a = this.extractor(bar, i, data);
|
|
332
|
+
const b = typeof other === 'number' ? other : other.extractor(bar, i, data);
|
|
333
|
+
return compare.ge(a, b) ? 1 : 0;
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Less than comparison
|
|
338
|
+
* @param other - Series or number to compare
|
|
339
|
+
* @returns New Series with 1 where true, 0 where false
|
|
340
|
+
*/
|
|
341
|
+
lt(other) {
|
|
342
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
343
|
+
const a = this.extractor(bar, i, data);
|
|
344
|
+
const b = typeof other === 'number' ? other : other.extractor(bar, i, data);
|
|
345
|
+
return compare.lt(a, b) ? 1 : 0;
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Less than or equal comparison
|
|
350
|
+
* @param other - Series or number to compare
|
|
351
|
+
* @returns New Series with 1 where true, 0 where false
|
|
352
|
+
*/
|
|
353
|
+
lte(other) {
|
|
354
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
355
|
+
const a = this.extractor(bar, i, data);
|
|
356
|
+
const b = typeof other === 'number' ? other : other.extractor(bar, i, data);
|
|
357
|
+
return compare.le(a, b) ? 1 : 0;
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Equality comparison
|
|
362
|
+
* @param other - Series or number to compare
|
|
363
|
+
* @returns New Series with 1 where true, 0 where false
|
|
364
|
+
*/
|
|
365
|
+
eq(other) {
|
|
366
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
367
|
+
const a = this.extractor(bar, i, data);
|
|
368
|
+
const b = typeof other === 'number' ? other : other.extractor(bar, i, data);
|
|
369
|
+
return compare.eq(a, b) ? 1 : 0;
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Not equal comparison
|
|
374
|
+
* @param other - Series or number to compare
|
|
375
|
+
* @returns New Series with 1 where true, 0 where false
|
|
376
|
+
*/
|
|
377
|
+
neq(other) {
|
|
378
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
379
|
+
const a = this.extractor(bar, i, data);
|
|
380
|
+
const b = typeof other === 'number' ? other : other.extractor(bar, i, data);
|
|
381
|
+
return compare.ne(a, b) ? 1 : 0;
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
// ============================================
|
|
385
|
+
// Logical Operations (for boolean series)
|
|
386
|
+
// ============================================
|
|
387
|
+
/**
|
|
388
|
+
* Logical AND
|
|
389
|
+
* @param other - Series or number (truthy/falsy)
|
|
390
|
+
* @returns New Series with 1 where both true, 0 otherwise
|
|
391
|
+
*/
|
|
392
|
+
and(other) {
|
|
393
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
394
|
+
const a = this.extractor(bar, i, data);
|
|
395
|
+
const b = typeof other === 'number' ? other : other.extractor(bar, i, data);
|
|
396
|
+
return a && b ? 1 : 0;
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Logical OR
|
|
401
|
+
* @param other - Series or number (truthy/falsy)
|
|
402
|
+
* @returns New Series with 1 where either true, 0 otherwise
|
|
403
|
+
*/
|
|
404
|
+
or(other) {
|
|
405
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
406
|
+
const a = this.extractor(bar, i, data);
|
|
407
|
+
const b = typeof other === 'number' ? other : other.extractor(bar, i, data);
|
|
408
|
+
return a || b ? 1 : 0;
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Logical NOT
|
|
413
|
+
* @returns New Series with inverted boolean values
|
|
414
|
+
*/
|
|
415
|
+
not() {
|
|
416
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
417
|
+
const a = this.extractor(bar, i, data);
|
|
418
|
+
return !a ? 1 : 0;
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
// ============================================
|
|
422
|
+
// Conditional Selection
|
|
423
|
+
// ============================================
|
|
424
|
+
/**
|
|
425
|
+
* Bar-by-bar conditional selection (ternary operator for Series)
|
|
426
|
+
* Uses this Series as the condition (truthy = nonzero, falsy = zero/NaN)
|
|
427
|
+
*
|
|
428
|
+
* @param trueValue - Value or Series to use when condition is truthy
|
|
429
|
+
* @param falseValue - Value or Series to use when condition is falsy
|
|
430
|
+
* @returns New Series with bar-by-bar selected values
|
|
431
|
+
*
|
|
432
|
+
* @example
|
|
433
|
+
* ```typescript
|
|
434
|
+
* // PineScript: result = condition ? trueVal : falseVal
|
|
435
|
+
* const result = condition.iff(trueVal, falseVal);
|
|
436
|
+
*
|
|
437
|
+
* // Example: RSI formula uses ternary for edge cases
|
|
438
|
+
* // rsi = down == 0 ? 100 : up == 0 ? 0 : formula
|
|
439
|
+
* const rsi = down.eq(0).iff(100, up.eq(0).iff(0, formula));
|
|
440
|
+
* ```
|
|
441
|
+
*/
|
|
442
|
+
iff(trueValue, falseValue) {
|
|
443
|
+
return new Series(this.dataSource, (bar, i, data) => {
|
|
444
|
+
const condition = this.extractor(bar, i, data);
|
|
445
|
+
// Truthy: nonzero and not NaN
|
|
446
|
+
const isTruthy = condition !== 0 && !Number.isNaN(condition);
|
|
447
|
+
if (isTruthy) {
|
|
448
|
+
return typeof trueValue === 'number' ? trueValue : trueValue.extractor(bar, i, data);
|
|
449
|
+
}
|
|
450
|
+
else {
|
|
451
|
+
return typeof falseValue === 'number' ? falseValue : falseValue.extractor(bar, i, data);
|
|
452
|
+
}
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
// ============================================
|
|
456
|
+
// Offset/History
|
|
457
|
+
// ============================================
|
|
458
|
+
/**
|
|
459
|
+
* Access previous bars (like close[1] in PineScript)
|
|
460
|
+
* @param offset - Number of bars back (0 or more)
|
|
461
|
+
* @returns New Series with offset values
|
|
462
|
+
* @throws RangeError when `offset` is negative
|
|
463
|
+
*/
|
|
464
|
+
offset(offset) {
|
|
465
|
+
if (offset < 0)
|
|
466
|
+
throw new RangeError(`Series.offset(${offset}): the offset cannot be negative (it would read a future bar).`);
|
|
467
|
+
return new Series(this.dataSource, (_bar, i, data) => {
|
|
468
|
+
const targetIndex = i - offset;
|
|
469
|
+
if (targetIndex < 0 || targetIndex >= data.length) {
|
|
470
|
+
return NaN;
|
|
471
|
+
}
|
|
472
|
+
return this.extractor(data[targetIndex], targetIndex, data);
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
// ============================================
|
|
476
|
+
// Computation & Access
|
|
477
|
+
// ============================================
|
|
478
|
+
/**
|
|
479
|
+
* Compute all values for the series
|
|
480
|
+
*
|
|
481
|
+
* Now includes automatic cache invalidation:
|
|
482
|
+
* - Checks if dataSource version has changed since cache was computed
|
|
483
|
+
* - Recomputes if version mismatch detected
|
|
484
|
+
* - Stores version when cache is created
|
|
485
|
+
*
|
|
486
|
+
* @returns Array of computed values
|
|
487
|
+
*/
|
|
488
|
+
toArray() {
|
|
489
|
+
// Check if cache is valid by comparing versions
|
|
490
|
+
if (this.cached !== null && this.cachedVersion === this.dataSource.version) {
|
|
491
|
+
return this.cached;
|
|
492
|
+
}
|
|
493
|
+
// Recompute and update cache
|
|
494
|
+
const bars = this.dataSource.bars;
|
|
495
|
+
this.cached = bars.map((bar, i) => this.extractor(bar, i, bars));
|
|
496
|
+
this.cachedVersion = this.dataSource.version;
|
|
497
|
+
return this.cached;
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Materialize this Series by eagerly computing values and breaking closure chain
|
|
501
|
+
*
|
|
502
|
+
* This method addresses the closure chain memory leak issue:
|
|
503
|
+
* - Computes all values immediately
|
|
504
|
+
* - Creates a new Series that stores values directly
|
|
505
|
+
* - Breaks references to parent Series objects
|
|
506
|
+
* - Useful for complex expressions to free intermediate Series memory
|
|
507
|
+
*
|
|
508
|
+
* @example
|
|
509
|
+
* ```typescript
|
|
510
|
+
* // Without materialize: keeps a, b, c, d in memory via closures
|
|
511
|
+
* const result = a.add(b).mul(c).div(d).sub(e);
|
|
512
|
+
*
|
|
513
|
+
* // With materialize: breaks chain, frees a, b, c memory
|
|
514
|
+
* const result = a.add(b).mul(c).materialize().div(d).sub(e);
|
|
515
|
+
* ```
|
|
516
|
+
*
|
|
517
|
+
* @returns New Series with computed values and no closure dependencies
|
|
518
|
+
*/
|
|
519
|
+
materialize() {
|
|
520
|
+
const values = this.toArray();
|
|
521
|
+
// Create a copy of values to ensure no shared references
|
|
522
|
+
const valuesCopy = [...values];
|
|
523
|
+
return Series.fromArray(this.dataSource, valuesCopy);
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
* Invalidate cache (when data changes)
|
|
527
|
+
*
|
|
528
|
+
* Note: With BarData versioning, manual invalidation is rarely needed.
|
|
529
|
+
* The cache is automatically invalidated when the underlying BarData changes.
|
|
530
|
+
* This method is kept for backward compatibility and advanced use cases.
|
|
531
|
+
*
|
|
532
|
+
* @internal
|
|
533
|
+
*/
|
|
534
|
+
_invalidate() {
|
|
535
|
+
this.cached = null;
|
|
536
|
+
this.cachedVersion = -1;
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* Compute all values (alias for toArray)
|
|
540
|
+
* @returns Array of computed values
|
|
541
|
+
* @internal
|
|
542
|
+
*/
|
|
543
|
+
_compute() {
|
|
544
|
+
return this.toArray();
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Get value at specific index
|
|
548
|
+
* @param index - Bar index
|
|
549
|
+
* @returns Value at that index
|
|
550
|
+
*/
|
|
551
|
+
get(index) {
|
|
552
|
+
const values = this.toArray();
|
|
553
|
+
return values[index] ?? NaN;
|
|
554
|
+
}
|
|
555
|
+
/**
|
|
556
|
+
* Get the last value (most recent bar)
|
|
557
|
+
* @returns Most recent value
|
|
558
|
+
*/
|
|
559
|
+
last() {
|
|
560
|
+
const values = this.toArray();
|
|
561
|
+
return values[values.length - 1] ?? NaN;
|
|
562
|
+
}
|
|
563
|
+
/**
|
|
564
|
+
* Get number of values
|
|
565
|
+
* @returns Length of series
|
|
566
|
+
*/
|
|
567
|
+
length() {
|
|
568
|
+
return this.dataSource.length;
|
|
569
|
+
}
|
|
570
|
+
/**
|
|
571
|
+
* Convert series to time-value pairs for charting
|
|
572
|
+
* @returns Array of { time, value } objects
|
|
573
|
+
*/
|
|
574
|
+
toTimeValuePairs() {
|
|
575
|
+
const values = this.toArray();
|
|
576
|
+
const bars = this.dataSource.bars;
|
|
577
|
+
return bars.map((bar, i) => ({
|
|
578
|
+
time: bar.time,
|
|
579
|
+
value: values[i]
|
|
580
|
+
})).filter(point => !Number.isNaN(point.value));
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
//# sourceMappingURL=series.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"series.js","sourceRoot":"","sources":["../../../src/runtime/series.ts"],"names":[],"mappings":"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"}
|