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,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all2) => {
|
|
7
|
+
for (var name in all2)
|
|
8
|
+
__defProp(target, name, { get: all2[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var label_exports = {};
|
|
20
|
+
__export(label_exports, {
|
|
21
|
+
all: () => all,
|
|
22
|
+
copy: () => copy,
|
|
23
|
+
delete: () => delete_label,
|
|
24
|
+
delete_label: () => delete_label,
|
|
25
|
+
get_text: () => get_text,
|
|
26
|
+
get_x: () => get_x,
|
|
27
|
+
get_y: () => get_y,
|
|
28
|
+
new: () => new_label,
|
|
29
|
+
new_label: () => new_label,
|
|
30
|
+
set_color: () => set_color,
|
|
31
|
+
set_point: () => set_point,
|
|
32
|
+
set_size: () => set_size,
|
|
33
|
+
set_style: () => set_style,
|
|
34
|
+
set_text: () => set_text,
|
|
35
|
+
set_text_font_family: () => set_text_font_family,
|
|
36
|
+
set_text_formatting: () => set_text_formatting,
|
|
37
|
+
set_textalign: () => set_textalign,
|
|
38
|
+
set_textcolor: () => set_textcolor,
|
|
39
|
+
set_tooltip: () => set_tooltip,
|
|
40
|
+
set_x: () => set_x,
|
|
41
|
+
set_xloc: () => set_xloc,
|
|
42
|
+
set_xy: () => set_xy,
|
|
43
|
+
set_y: () => set_y,
|
|
44
|
+
set_yloc: () => set_yloc
|
|
45
|
+
});
|
|
46
|
+
module.exports = __toCommonJS(label_exports);
|
|
47
|
+
var import_registry = require("../drawing/registry.js");
|
|
48
|
+
function new_label(...args) {
|
|
49
|
+
let x, y, rest;
|
|
50
|
+
if (typeof args[0] === "object" && args[0] !== null) {
|
|
51
|
+
const point = args[0];
|
|
52
|
+
rest = args.slice(1);
|
|
53
|
+
x = pointX(point, rest[1] ?? "bar_index");
|
|
54
|
+
y = point.price;
|
|
55
|
+
} else {
|
|
56
|
+
[x, y] = args;
|
|
57
|
+
rest = args.slice(2);
|
|
58
|
+
}
|
|
59
|
+
const [
|
|
60
|
+
text,
|
|
61
|
+
xloc,
|
|
62
|
+
yloc,
|
|
63
|
+
labelColor,
|
|
64
|
+
style,
|
|
65
|
+
textcolor,
|
|
66
|
+
size,
|
|
67
|
+
textalign,
|
|
68
|
+
tooltip,
|
|
69
|
+
text_font_family,
|
|
70
|
+
force_overlay,
|
|
71
|
+
text_formatting
|
|
72
|
+
] = rest;
|
|
73
|
+
return (0, import_registry.register)("label", {
|
|
74
|
+
x,
|
|
75
|
+
y,
|
|
76
|
+
xloc: xloc ?? "bar_index",
|
|
77
|
+
yloc: yloc ?? "price",
|
|
78
|
+
text,
|
|
79
|
+
tooltip,
|
|
80
|
+
color: labelColor,
|
|
81
|
+
style,
|
|
82
|
+
textcolor,
|
|
83
|
+
size,
|
|
84
|
+
textalign,
|
|
85
|
+
text_font_family,
|
|
86
|
+
force_overlay: force_overlay ?? false,
|
|
87
|
+
text_formatting
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function get_x(id) {
|
|
91
|
+
return id.x;
|
|
92
|
+
}
|
|
93
|
+
function get_y(id) {
|
|
94
|
+
return id.y;
|
|
95
|
+
}
|
|
96
|
+
function get_text(id) {
|
|
97
|
+
return id.text;
|
|
98
|
+
}
|
|
99
|
+
function copy(id) {
|
|
100
|
+
return (0, import_registry.register)("label", { ...id });
|
|
101
|
+
}
|
|
102
|
+
function set_x(id, x) {
|
|
103
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
104
|
+
id.x = x;
|
|
105
|
+
return id;
|
|
106
|
+
}
|
|
107
|
+
function set_y(id, y) {
|
|
108
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
109
|
+
id.y = y;
|
|
110
|
+
return id;
|
|
111
|
+
}
|
|
112
|
+
function set_xy(id, x, y) {
|
|
113
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
114
|
+
id.x = x;
|
|
115
|
+
id.y = y;
|
|
116
|
+
return id;
|
|
117
|
+
}
|
|
118
|
+
function set_xloc(id, x, xloc) {
|
|
119
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
120
|
+
id.x = x;
|
|
121
|
+
id.xloc = xloc;
|
|
122
|
+
return id;
|
|
123
|
+
}
|
|
124
|
+
function set_yloc(id, yloc) {
|
|
125
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
126
|
+
id.yloc = yloc;
|
|
127
|
+
return id;
|
|
128
|
+
}
|
|
129
|
+
function set_text(id, text) {
|
|
130
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
131
|
+
id.text = text;
|
|
132
|
+
return id;
|
|
133
|
+
}
|
|
134
|
+
function set_tooltip(id, tooltip) {
|
|
135
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
136
|
+
id.tooltip = tooltip;
|
|
137
|
+
return id;
|
|
138
|
+
}
|
|
139
|
+
function set_color(id, labelColor) {
|
|
140
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
141
|
+
id.color = labelColor;
|
|
142
|
+
return id;
|
|
143
|
+
}
|
|
144
|
+
function set_textcolor(id, textColor) {
|
|
145
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
146
|
+
id.textcolor = textColor;
|
|
147
|
+
return id;
|
|
148
|
+
}
|
|
149
|
+
function set_style(id, style) {
|
|
150
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
151
|
+
id.style = style;
|
|
152
|
+
return id;
|
|
153
|
+
}
|
|
154
|
+
function set_size(id, size) {
|
|
155
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
156
|
+
id.size = size;
|
|
157
|
+
return id;
|
|
158
|
+
}
|
|
159
|
+
function set_textalign(id, align) {
|
|
160
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
161
|
+
id.textalign = align;
|
|
162
|
+
return id;
|
|
163
|
+
}
|
|
164
|
+
function set_text_font_family(id, font) {
|
|
165
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
166
|
+
id.text_font_family = font;
|
|
167
|
+
return id;
|
|
168
|
+
}
|
|
169
|
+
function delete_label(id) {
|
|
170
|
+
(0, import_registry.remove)("label", id);
|
|
171
|
+
}
|
|
172
|
+
function pointX(point, xloc) {
|
|
173
|
+
const x = xloc === "bar_time" ? point.time : point.index;
|
|
174
|
+
return x ?? NaN;
|
|
175
|
+
}
|
|
176
|
+
function all() {
|
|
177
|
+
return (0, import_registry.all)("label");
|
|
178
|
+
}
|
|
179
|
+
function set_point(id, point) {
|
|
180
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
181
|
+
id.x = pointX(point, id.xloc);
|
|
182
|
+
id.y = point.price;
|
|
183
|
+
return id;
|
|
184
|
+
}
|
|
185
|
+
function set_text_formatting(id, formatting) {
|
|
186
|
+
if ((0, import_registry.isDeleted)(id)) return id;
|
|
187
|
+
id.text_formatting = formatting;
|
|
188
|
+
return id;
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/label/index.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Label namespace\n * Functions for creating and manipulating label drawing objects.\n *\n * @remarks\n * Labels are primarily used for annotations and marking points on the chart.\n * They have limited computational value compared to lines and boxes, but getters\n * allow retrieving position and text for conditional logic.\n *\n * @version 6\n */\n\nimport { all as allDrawings, isDeleted, register, remove } from '../drawing/registry.js';\nimport type { ChartPoint, Label, color } from '../types/index.js';\n\ntype LabelXloc = 'bar_index' | 'bar_time';\ntype LabelYloc = 'price' | 'abovebar' | 'belowbar';\ntype LabelStyle = NonNullable<Label['style']>;\n\n/**\n * Creates a new label (PineScript `label.new`), with a chart point or with coordinates:\n *\n * - `label.new(point, text?, xloc?, yloc?, color?, style?, textcolor?, size?, textalign?, tooltip?,\n * text_font_family?, force_overlay?, text_formatting?)`\n * - `label.new(x, y, text?, xloc?, yloc?, color?, style?, textcolor?, size?, textalign?, tooltip?,\n * text_font_family?, force_overlay?, text_formatting?)`\n *\n * With a chart point, x is `point.index` for `bar_index` labels and `point.time` for `bar_time` labels.\n *\n * @example\n * ```typescript\n * const signal = label.new(10, 105.5, 'BUY');\n * const atPoint = label.new(chartPoint.from_index(10, 105.5), 'BUY');\n * ```\n */\nexport function new_label(\n point: ChartPoint,\n text?: string,\n xloc?: LabelXloc,\n yloc?: LabelYloc,\n labelColor?: color,\n style?: LabelStyle,\n textcolor?: color,\n size?: string | number,\n textalign?: 'left' | 'center' | 'right',\n tooltip?: string,\n text_font_family?: 'default' | 'monospace',\n force_overlay?: boolean,\n text_formatting?: number\n): Label;\nexport function new_label(\n x: number,\n y: number,\n text?: string,\n xloc?: LabelXloc,\n yloc?: LabelYloc,\n labelColor?: color,\n style?: LabelStyle,\n textcolor?: color,\n size?: string | number,\n textalign?: 'left' | 'center' | 'right',\n tooltip?: string,\n text_font_family?: 'default' | 'monospace',\n force_overlay?: boolean,\n text_formatting?: number\n): Label;\nexport function new_label(...args: unknown[]): Label {\n let x: number, y: number, rest: unknown[];\n if (typeof args[0] === 'object' && args[0] !== null) {\n const point = args[0] as ChartPoint;\n rest = args.slice(1);\n x = pointX(point, (rest[1] as LabelXloc | undefined) ?? 'bar_index');\n y = point.price;\n } else {\n [x, y] = args as [number, number];\n rest = args.slice(2);\n }\n const [text, xloc, yloc, labelColor, style, textcolor, size, textalign, tooltip, text_font_family,\n force_overlay, text_formatting] = rest as [\n string?, LabelXloc?, LabelYloc?, color?, LabelStyle?, color?, (string | number)?,\n ('left' | 'center' | 'right')?, string?, ('default' | 'monospace')?, boolean?, number?,\n ];\n return register('label', {\n x,\n y,\n xloc: xloc ?? 'bar_index',\n yloc: yloc ?? 'price',\n text,\n tooltip,\n color: labelColor,\n style,\n textcolor,\n size,\n textalign,\n text_font_family,\n force_overlay: force_overlay ?? false,\n text_formatting,\n });\n}\n\n/**\n * Returns the x coordinate.\n *\n * @param id - Label object\n * @returns X coordinate (bar index or timestamp)\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * const x = label.get_x(label); // Returns 50\n * ```\n */\nexport function get_x(id: Label): number {\n return id.x;\n}\n\n/**\n * Returns the y coordinate (price level).\n *\n * @param id - Label object\n * @returns Y coordinate (price)\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * const y = label.get_y(label); // Returns 155.5\n * ```\n */\nexport function get_y(id: Label): number {\n return id.y;\n}\n\n/**\n * Returns the label text content.\n *\n * @param id - Label object\n * @returns Text content (or undefined if no text)\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot High');\n * const text = label.get_text(label); // Returns 'Pivot High'\n * ```\n */\nexport function get_text(id: Label): string | undefined {\n return id.text;\n}\n\n/**\n * Creates a copy of the label object.\n *\n * @param id - Label object to copy\n * @returns New label object with same properties\n *\n * @remarks\n * Creates a shallow copy of the label. Modifications to the copy won't affect the original.\n *\n * @example\n * ```typescript\n * const original = label.new(50, 155.5, 'Pivot');\n * const copied = label.copy(original);\n *\n * // Modify copy without affecting original\n * copied.text = 'New Text';\n * ```\n */\nexport function copy(id: Label): Label {\n return register('label', { ...id });\n}\n\n// =============================================================================\n// POSITION SETTERS\n// =============================================================================\n\n/**\n * Sets the x coordinate.\n *\n * @param id - Label object to modify\n * @param x - New x coordinate\n * @returns Modified label object\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * label.set_x(label, 55); // Move to bar 55\n * ```\n */\nexport function set_x(id: Label, x: number): Label {\n if (isDeleted(id)) return id;\n id.x = x;\n return id;\n}\n\n/**\n * Sets the y coordinate (price level).\n *\n * @param id - Label object to modify\n * @param y - New y coordinate\n * @returns Modified label object\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * label.set_y(label, 160); // Move to price 160\n * ```\n */\nexport function set_y(id: Label, y: number): Label {\n if (isDeleted(id)) return id;\n id.y = y;\n return id;\n}\n\n/**\n * Sets both x and y coordinates.\n *\n * @param id - Label object to modify\n * @param x - New x coordinate\n * @param y - New y coordinate\n * @returns Modified label object\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * label.set_xy(label, 60, 160); // Move to (60, 160)\n * ```\n */\nexport function set_xy(id: Label, x: number, y: number): Label {\n if (isDeleted(id)) return id;\n id.x = x;\n id.y = y;\n return id;\n}\n\n/**\n * Sets the x-axis coordinate system.\n *\n * @param id - Label object to modify\n * @param x - New x coordinate\n * @param xloc - New coordinate system\n * @returns Modified label object\n *\n * @remarks\n * When changing xloc, you must provide an appropriate x coordinate for the new system.\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * label.set_xloc(label, 1609459200000, 'bar_time'); // Change to timestamp\n * ```\n */\nexport function set_xloc(id: Label, x: number, xloc: 'bar_index' | 'bar_time'): Label {\n if (isDeleted(id)) return id;\n id.x = x;\n id.xloc = xloc;\n return id;\n}\n\n/**\n * Sets the y-location mode of the label (PineScript `label.set_yloc(id, yloc)`): `price` uses the\n * label's y, `abovebar` / `belowbar` place it above / below the bar.\n */\nexport function set_yloc(id: Label, yloc: 'price' | 'abovebar' | 'belowbar'): Label {\n if (isDeleted(id)) return id;\n id.yloc = yloc;\n return id;\n}\n\n// =============================================================================\n// CONTENT SETTERS\n// =============================================================================\n\n/**\n * Sets the text content.\n *\n * @param id - Label object to modify\n * @param text - New text content\n * @returns Modified label object\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * label.set_text(label, 'Updated Text');\n * ```\n */\nexport function set_text(id: Label, text: string): Label {\n if (isDeleted(id)) return id;\n id.text = text;\n return id;\n}\n\n/**\n * Sets the tooltip text.\n *\n * @param id - Label object to modify\n * @param tooltip - New tooltip text\n * @returns Modified label object\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * label.set_tooltip(label, 'Resistance level formed at 155.5');\n * ```\n */\nexport function set_tooltip(id: Label, tooltip: string): Label {\n if (isDeleted(id)) return id;\n id.tooltip = tooltip;\n return id;\n}\n\n// =============================================================================\n// STYLING SETTERS\n// =============================================================================\n\n/**\n * Sets the label color (border and arrow).\n *\n * @param id - Label object to modify\n * @param labelColor - New color\n * @returns Modified label object\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * label.set_color(label, '#FF0000'); // Red label\n * ```\n */\nexport function set_color(id: Label, labelColor: color): Label {\n if (isDeleted(id)) return id;\n id.color = labelColor;\n return id;\n}\n\n/**\n * Sets the text color.\n *\n * @param id - Label object to modify\n * @param textColor - New text color\n * @returns Modified label object\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * label.set_textcolor(label, '#FFFFFF'); // White text\n * ```\n */\nexport function set_textcolor(id: Label, textColor: color): Label {\n if (isDeleted(id)) return id;\n id.textcolor = textColor;\n return id;\n}\n\n/**\n * Sets the label style.\n *\n * @param id - Label object to modify\n * @param style - New label style\n * @returns Modified label object\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * label.set_style(label, 'label_down'); // Arrow pointing down\n * ```\n */\nexport function set_style(\n id: Label,\n style: 'none' | 'xcross' | 'cross' | 'triangleup' | 'triangledown' | 'flag' | 'circle' |\n 'arrowup' | 'arrowdown' | 'label_up' | 'label_down' | 'label_left' | 'label_right' |\n 'label_lower_left' | 'label_lower_right' | 'label_upper_left' | 'label_upper_right' |\n 'label_center' | 'square' | 'diamond' | 'text_outline'\n): Label {\n if (isDeleted(id)) return id;\n id.style = style;\n return id;\n}\n\n/**\n * Sets the label size.\n *\n * @param id - Label object to modify\n * @param size - New size\n * @returns Modified label object\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * label.set_size(label, 'large'); // Larger label\n * ```\n */\nexport function set_size(id: Label, size: string | number): Label {\n if (isDeleted(id)) return id;\n id.size = size;\n return id;\n}\n\n/**\n * Sets the text alignment.\n *\n * @param id - Label object to modify\n * @param align - New text alignment\n * @returns Modified label object\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * label.set_textalign(label, 'center'); // Center-aligned text\n * ```\n */\nexport function set_textalign(id: Label, align: 'left' | 'center' | 'right'): Label {\n if (isDeleted(id)) return id;\n id.textalign = align;\n return id;\n}\n\n/**\n * Sets the text font family.\n *\n * @param id - Label object to modify\n * @param font - New font family\n * @returns Modified label object\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * label.set_text_font_family(label, 'monospace');\n * ```\n */\nexport function set_text_font_family(id: Label, font: 'default' | 'monospace'): Label {\n if (isDeleted(id)) return id;\n id.text_font_family = font;\n return id;\n}\n\n/**\n * Deletes the label object.\n *\n * @param id - Label object to delete\n *\n * @remarks\n * Removes the label from `label.all()`. As in PineScript, the deleted label is `na`: its getters\n * return NaN and its setters do nothing. Deleting it twice has no effect.\n *\n * @example\n * ```typescript\n * const label = label.new(50, 155.5, 'Pivot');\n * label.delete(label);\n * // label.all() no longer contains it\n * ```\n */\nexport function delete_label(id: Label): void {\n remove('label', id);\n}\n\n/** x coordinate of a chart point for an object's xloc (`na` when the point has no such coordinate). */\nfunction pointX(point: ChartPoint, xloc: 'bar_index' | 'bar_time'): number {\n const x = xloc === 'bar_time' ? point.time : point.index;\n return x ?? NaN;\n}\n\n/**\n * All live labels, in creation order (PineScript `label.all`). A new array.\n */\nexport function all(): Label[] {\n return allDrawings('label');\n}\n\n/**\n * Sets the label position from a chart point: `point.index` for `bar_index` labels, `point.time`\n * for `bar_time` labels, and `point.price`.\n */\nexport function set_point(id: Label, point: ChartPoint): Label {\n if (isDeleted(id)) return id;\n id.x = pointX(point, id.xloc);\n id.y = point.price;\n return id;\n}\n\n/**\n * Sets the text formatting: `text.format_none`, `text.format_bold`, `text.format_italic`,\n * or `text.format_bold + text.format_italic`.\n */\nexport function set_text_formatting(id: Label, formatting: number): Label {\n if (isDeleted(id)) return id;\n id.text_formatting = formatting;\n return id;\n}\n\n// Alias to match PineScript API\nexport { new_label as new };\nexport { delete_label as delete };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,sBAAgE;AAsDzD,SAAS,aAAa,MAAwB;AACnD,MAAI,GAAW,GAAW;AAC1B,MAAI,OAAO,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,MAAM,MAAM;AACnD,UAAM,QAAQ,KAAK,CAAC;AACpB,WAAO,KAAK,MAAM,CAAC;AACnB,QAAI,OAAO,OAAQ,KAAK,CAAC,KAA+B,WAAW;AACnE,QAAI,MAAM;AAAA,EACZ,OAAO;AACL,KAAC,GAAG,CAAC,IAAI;AACT,WAAO,KAAK,MAAM,CAAC;AAAA,EACrB;AACA,QAAM;AAAA,IAAC;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAY;AAAA,IAAO;AAAA,IAAW;AAAA,IAAM;AAAA,IAAW;AAAA,IAAS;AAAA,IAC/E;AAAA,IAAe;AAAA,EAAe,IAAI;AAIpC,aAAO,0BAAS,SAAS;AAAA,IACvB;AAAA,IACA;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,MAAM,QAAQ;AAAA,IACd;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe,iBAAiB;AAAA,IAChC;AAAA,EACF,CAAC;AACH;AAcO,SAAS,MAAM,IAAmB;AACvC,SAAO,GAAG;AACZ;AAcO,SAAS,MAAM,IAAmB;AACvC,SAAO,GAAG;AACZ;AAcO,SAAS,SAAS,IAA+B;AACtD,SAAO,GAAG;AACZ;AAoBO,SAAS,KAAK,IAAkB;AACrC,aAAO,0BAAS,SAAS,EAAE,GAAG,GAAG,CAAC;AACpC;AAmBO,SAAS,MAAM,IAAW,GAAkB;AACjD,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,IAAI;AACP,SAAO;AACT;AAeO,SAAS,MAAM,IAAW,GAAkB;AACjD,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,IAAI;AACP,SAAO;AACT;AAgBO,SAAS,OAAO,IAAW,GAAW,GAAkB;AAC7D,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,IAAI;AACP,KAAG,IAAI;AACP,SAAO;AACT;AAmBO,SAAS,SAAS,IAAW,GAAW,MAAuC;AACpF,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,IAAI;AACP,KAAG,OAAO;AACV,SAAO;AACT;AAMO,SAAS,SAAS,IAAW,MAAgD;AAClF,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,OAAO;AACV,SAAO;AACT;AAmBO,SAAS,SAAS,IAAW,MAAqB;AACvD,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,OAAO;AACV,SAAO;AACT;AAeO,SAAS,YAAY,IAAW,SAAwB;AAC7D,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,UAAU;AACb,SAAO;AACT;AAmBO,SAAS,UAAU,IAAW,YAA0B;AAC7D,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,QAAQ;AACX,SAAO;AACT;AAeO,SAAS,cAAc,IAAW,WAAyB;AAChE,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,YAAY;AACf,SAAO;AACT;AAeO,SAAS,UACd,IACA,OAIO;AACP,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,QAAQ;AACX,SAAO;AACT;AAeO,SAAS,SAAS,IAAW,MAA8B;AAChE,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,OAAO;AACV,SAAO;AACT;AAeO,SAAS,cAAc,IAAW,OAA2C;AAClF,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,YAAY;AACf,SAAO;AACT;AAeO,SAAS,qBAAqB,IAAW,MAAsC;AACpF,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,mBAAmB;AACtB,SAAO;AACT;AAkBO,SAAS,aAAa,IAAiB;AAC5C,8BAAO,SAAS,EAAE;AACpB;AAGA,SAAS,OAAO,OAAmB,MAAwC;AACzE,QAAM,IAAI,SAAS,aAAa,MAAM,OAAO,MAAM;AACnD,SAAO,KAAK;AACd;AAKO,SAAS,MAAe;AAC7B,aAAO,gBAAAA,KAAY,OAAO;AAC5B;AAMO,SAAS,UAAU,IAAW,OAA0B;AAC7D,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,IAAI,OAAO,OAAO,GAAG,IAAI;AAC5B,KAAG,IAAI,MAAM;AACb,SAAO;AACT;AAMO,SAAS,oBAAoB,IAAW,YAA2B;AACxE,UAAI,2BAAU,EAAE,EAAG,QAAO;AAC1B,KAAG,kBAAkB;AACrB,SAAO;AACT;",
|
|
6
|
+
"names": ["allDrawings"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var lib_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(lib_exports);
|
|
18
|
+
__reExport(lib_exports, require("./zigzag/index.js"), module.exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/lib/index.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * OakScriptJS Libraries\n *\n * This module exports reusable library implementations\n * ported from PineScript libraries.\n */\n\nexport * from './zigzag/index.js';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAOA,wBAAc,8BAPd;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* ZigZag Library - Public API
|
|
3
|
+
*/
|
|
4
|
+
export { ZigZag, calculateZigZag, defaultSettings as zigZagDefaults, type ZigZagSettings, type ZigZagPoint, type ZigZagPivot, type ZigZagResult, } from './zigzag.js';
|
|
2
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/zigzag/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,MAAM,EACN,eAAe,EACf,eAAe,IAAI,cAAc,EACjC,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var zigzag_exports = {};
|
|
20
|
+
__export(zigzag_exports, {
|
|
21
|
+
ZigZag: () => import_zigzag.ZigZag,
|
|
22
|
+
calculateZigZag: () => import_zigzag.calculateZigZag,
|
|
23
|
+
zigZagDefaults: () => import_zigzag.defaultSettings
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(zigzag_exports);
|
|
26
|
+
var import_zigzag = require("./zigzag.js");
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/lib/zigzag/index.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * ZigZag Library - Public API\n */\n\nexport {\n ZigZag,\n calculateZigZag,\n defaultSettings as zigZagDefaults,\n type ZigZagSettings,\n type ZigZagPoint,\n type ZigZagPivot,\n type ZigZagResult,\n} from './zigzag.js';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,oBAQO;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZigZag Library
|
|
3
|
+
*
|
|
4
|
+
* Identifies trend reversals by connecting pivot highs and lows
|
|
5
|
+
* that exceed a specified percentage deviation threshold.
|
|
6
|
+
*
|
|
7
|
+
* Based on the PineScript ZigZag library v8.
|
|
8
|
+
*/
|
|
9
|
+
import type { Bar } from '../../types/index.js';
|
|
10
|
+
export interface ZigZagSettings {
|
|
11
|
+
/** Minimum percentage deviation from previous pivot to register reversal (default: 5.0) */
|
|
12
|
+
devThreshold: number;
|
|
13
|
+
/** Number of bars required for pivot point detection (default: 10) */
|
|
14
|
+
depth: number;
|
|
15
|
+
/** Line color for ZigZag drawing (default: '#2962FF') */
|
|
16
|
+
lineColor: string;
|
|
17
|
+
/** Extend line from last pivot to current bar (default: true) */
|
|
18
|
+
extendLast: boolean;
|
|
19
|
+
/** Display reversal price in labels (default: true) */
|
|
20
|
+
displayReversalPrice: boolean;
|
|
21
|
+
/** Display cumulative volume in labels (default: true) */
|
|
22
|
+
displayCumulativeVolume: boolean;
|
|
23
|
+
/** Display price change from previous pivot (default: true) */
|
|
24
|
+
displayReversalPriceChange: boolean;
|
|
25
|
+
/** Price change display mode: 'Absolute' or 'Percent' (default: 'Absolute') */
|
|
26
|
+
differencePriceMode: 'Absolute' | 'Percent';
|
|
27
|
+
/** Allow both pivot high and low on same bar (default: true) */
|
|
28
|
+
allowZigZagOnOneBar: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface ZigZagPoint {
|
|
31
|
+
/** Bar timestamp */
|
|
32
|
+
time: number;
|
|
33
|
+
/** Bar index position */
|
|
34
|
+
barIndex: number;
|
|
35
|
+
/** Price at this point */
|
|
36
|
+
price: number;
|
|
37
|
+
}
|
|
38
|
+
export interface ZigZagPivot {
|
|
39
|
+
/** True if this is a pivot high, false for pivot low */
|
|
40
|
+
isHigh: boolean;
|
|
41
|
+
/** Cumulative volume from start to end */
|
|
42
|
+
volume: number;
|
|
43
|
+
/** Starting point of this segment */
|
|
44
|
+
start: ZigZagPoint;
|
|
45
|
+
/** Ending point (the pivot) of this segment */
|
|
46
|
+
end: ZigZagPoint;
|
|
47
|
+
}
|
|
48
|
+
export interface ZigZagResult {
|
|
49
|
+
/** Array of confirmed pivots */
|
|
50
|
+
pivots: ZigZagPivot[];
|
|
51
|
+
/** Extension line to current bar (if extendLast enabled) */
|
|
52
|
+
extension: ZigZagPivot | null;
|
|
53
|
+
}
|
|
54
|
+
export declare const defaultSettings: ZigZagSettings;
|
|
55
|
+
export declare class ZigZag {
|
|
56
|
+
settings: ZigZagSettings;
|
|
57
|
+
pivots: ZigZagPivot[];
|
|
58
|
+
sumVol: number;
|
|
59
|
+
private highBuffer;
|
|
60
|
+
private lowBuffer;
|
|
61
|
+
private timeBuffer;
|
|
62
|
+
private barCount;
|
|
63
|
+
constructor(settings?: Partial<ZigZagSettings>);
|
|
64
|
+
/**
|
|
65
|
+
* Process a single bar, detecting pivots.
|
|
66
|
+
* Must be called sequentially for each bar.
|
|
67
|
+
* @returns true if a new pivot was detected or updated
|
|
68
|
+
*/
|
|
69
|
+
update(bar: Bar, barIndex: number): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Get the last confirmed pivot
|
|
72
|
+
*/
|
|
73
|
+
lastPivot(): ZigZagPivot | null;
|
|
74
|
+
/**
|
|
75
|
+
* Get extension line to current bar (if extendLast enabled)
|
|
76
|
+
*/
|
|
77
|
+
getExtension(currentBar: Bar, barIndex: number): ZigZagPivot | null;
|
|
78
|
+
private tryFindPivot;
|
|
79
|
+
/**
|
|
80
|
+
* Check if a bar from `depth` bars back is a pivot point.
|
|
81
|
+
* A pivot high has prices below it on both sides.
|
|
82
|
+
* A pivot low has prices above it on both sides.
|
|
83
|
+
*/
|
|
84
|
+
private findPivotPoint;
|
|
85
|
+
/**
|
|
86
|
+
* Calculate percentage deviation from base price to new price
|
|
87
|
+
*/
|
|
88
|
+
private calcDev;
|
|
89
|
+
/**
|
|
90
|
+
* Handle a newly detected pivot point.
|
|
91
|
+
* Either updates existing pivot (if same direction) or adds new pivot (if direction changed).
|
|
92
|
+
*/
|
|
93
|
+
private newPivotPointFound;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Convenience function to calculate ZigZag on an array of bars.
|
|
97
|
+
* Processes all bars and returns the resulting pivots and extension.
|
|
98
|
+
*/
|
|
99
|
+
export declare function calculateZigZag(bars: Bar[], settings?: Partial<ZigZagSettings>): ZigZagResult;
|
|
100
|
+
//# sourceMappingURL=zigzag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zigzag.d.ts","sourceRoot":"","sources":["../../../../src/lib/zigzag/zigzag.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAIhD,MAAM,WAAW,cAAc;IAC7B,2FAA2F;IAC3F,YAAY,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,UAAU,EAAE,OAAO,CAAC;IACpB,uDAAuD;IACvD,oBAAoB,EAAE,OAAO,CAAC;IAC9B,0DAA0D;IAC1D,uBAAuB,EAAE,OAAO,CAAC;IACjC,+DAA+D;IAC/D,0BAA0B,EAAE,OAAO,CAAC;IACpC,+EAA+E;IAC/E,mBAAmB,EAAE,UAAU,GAAG,SAAS,CAAC;IAC5C,gEAAgE;IAChE,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,MAAM,EAAE,OAAO,CAAC;IAChB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,KAAK,EAAE,WAAW,CAAC;IACnB,+CAA+C;IAC/C,GAAG,EAAE,WAAW,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,4DAA4D;IAC5D,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;CAC/B;AAID,eAAO,MAAM,eAAe,EAAE,cAU7B,CAAC;AAIF,qBAAa,MAAM;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,WAAW,EAAE,CAAM;IAC3B,MAAM,EAAE,MAAM,CAAK;IAEnB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,QAAQ,CAAa;gBAEjB,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAI9C;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAwB3C;;OAEG;IACH,SAAS,IAAI,WAAW,GAAG,IAAI;IAM/B;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAoBnE,OAAO,CAAC,YAAY;IAWpB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAmDtB;;OAEG;IACH,OAAO,CAAC,OAAO;IAIf;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAsD3B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,GAAG,EAAE,EACX,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GACjC,YAAY,CAwBd"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var zigzag_exports = {};
|
|
20
|
+
__export(zigzag_exports, {
|
|
21
|
+
ZigZag: () => ZigZag,
|
|
22
|
+
calculateZigZag: () => calculateZigZag,
|
|
23
|
+
defaultSettings: () => defaultSettings
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(zigzag_exports);
|
|
26
|
+
const defaultSettings = {
|
|
27
|
+
devThreshold: 5,
|
|
28
|
+
depth: 10,
|
|
29
|
+
lineColor: "#2962FF",
|
|
30
|
+
extendLast: true,
|
|
31
|
+
displayReversalPrice: true,
|
|
32
|
+
displayCumulativeVolume: true,
|
|
33
|
+
displayReversalPriceChange: true,
|
|
34
|
+
differencePriceMode: "Absolute",
|
|
35
|
+
allowZigZagOnOneBar: true
|
|
36
|
+
};
|
|
37
|
+
class ZigZag {
|
|
38
|
+
settings;
|
|
39
|
+
pivots = [];
|
|
40
|
+
sumVol = 0;
|
|
41
|
+
highBuffer = [];
|
|
42
|
+
lowBuffer = [];
|
|
43
|
+
timeBuffer = [];
|
|
44
|
+
barCount = 0;
|
|
45
|
+
constructor(settings) {
|
|
46
|
+
this.settings = { ...defaultSettings, ...settings };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Process a single bar, detecting pivots.
|
|
50
|
+
* Must be called sequentially for each bar.
|
|
51
|
+
* @returns true if a new pivot was detected or updated
|
|
52
|
+
*/
|
|
53
|
+
update(bar, barIndex) {
|
|
54
|
+
this.highBuffer.push(bar.high);
|
|
55
|
+
this.lowBuffer.push(bar.low);
|
|
56
|
+
this.timeBuffer.push(bar.time);
|
|
57
|
+
this.barCount++;
|
|
58
|
+
const depth = Math.max(2, Math.floor(this.settings.depth / 2));
|
|
59
|
+
this.sumVol += bar.volume ?? 0;
|
|
60
|
+
if (this.barCount < depth * 2 + 1) return false;
|
|
61
|
+
let somethingChanged = this.tryFindPivot(true, depth, barIndex);
|
|
62
|
+
somethingChanged = this.tryFindPivot(
|
|
63
|
+
false,
|
|
64
|
+
depth,
|
|
65
|
+
barIndex,
|
|
66
|
+
this.settings.allowZigZagOnOneBar || !somethingChanged
|
|
67
|
+
) || somethingChanged;
|
|
68
|
+
return somethingChanged;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get the last confirmed pivot
|
|
72
|
+
*/
|
|
73
|
+
lastPivot() {
|
|
74
|
+
if (this.pivots.length === 0) return null;
|
|
75
|
+
const last = this.pivots[this.pivots.length - 1];
|
|
76
|
+
return last !== void 0 ? last : null;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get extension line to current bar (if extendLast enabled)
|
|
80
|
+
*/
|
|
81
|
+
getExtension(currentBar, barIndex) {
|
|
82
|
+
if (!this.settings.extendLast) return null;
|
|
83
|
+
const last = this.lastPivot();
|
|
84
|
+
if (!last) return null;
|
|
85
|
+
const isHigh = !last.isHigh;
|
|
86
|
+
const price = isHigh ? currentBar.high : currentBar.low;
|
|
87
|
+
return {
|
|
88
|
+
isHigh,
|
|
89
|
+
volume: this.sumVol,
|
|
90
|
+
start: last.end,
|
|
91
|
+
end: { time: currentBar.time, barIndex, price }
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
// ============ Private Methods ============
|
|
95
|
+
tryFindPivot(isHigh, depth, currentBarIndex, registerPivot = true) {
|
|
96
|
+
const point = this.findPivotPoint(isHigh, depth, currentBarIndex);
|
|
97
|
+
if (!point || !registerPivot) return false;
|
|
98
|
+
return this.newPivotPointFound(isHigh, point);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Check if a bar from `depth` bars back is a pivot point.
|
|
102
|
+
* A pivot high has prices below it on both sides.
|
|
103
|
+
* A pivot low has prices above it on both sides.
|
|
104
|
+
*/
|
|
105
|
+
findPivotPoint(isHigh, depth, currentBarIndex) {
|
|
106
|
+
const buffer = isHigh ? this.highBuffer : this.lowBuffer;
|
|
107
|
+
const pivotBufferIdx = buffer.length - 1 - depth;
|
|
108
|
+
if (pivotBufferIdx < depth) return null;
|
|
109
|
+
const pivotPrice = buffer[pivotBufferIdx];
|
|
110
|
+
if (pivotPrice === void 0) return null;
|
|
111
|
+
for (let i = pivotBufferIdx + 1; i < buffer.length; i++) {
|
|
112
|
+
const price = buffer[i];
|
|
113
|
+
if (price === void 0) return null;
|
|
114
|
+
if (isHigh) {
|
|
115
|
+
if (price > pivotPrice) return null;
|
|
116
|
+
} else {
|
|
117
|
+
if (price < pivotPrice) return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
for (let i = pivotBufferIdx - depth; i < pivotBufferIdx; i++) {
|
|
121
|
+
const price = buffer[i];
|
|
122
|
+
if (price === void 0) return null;
|
|
123
|
+
if (isHigh) {
|
|
124
|
+
if (price >= pivotPrice) return null;
|
|
125
|
+
} else {
|
|
126
|
+
if (price <= pivotPrice) return null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const pivotBarIndex = currentBarIndex - depth;
|
|
130
|
+
const pivotTime = this.timeBuffer[pivotBufferIdx];
|
|
131
|
+
if (pivotTime === void 0) return null;
|
|
132
|
+
return {
|
|
133
|
+
time: pivotTime,
|
|
134
|
+
barIndex: pivotBarIndex,
|
|
135
|
+
price: pivotPrice
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Calculate percentage deviation from base price to new price
|
|
140
|
+
*/
|
|
141
|
+
calcDev(basePrice, price) {
|
|
142
|
+
return 100 * (price - basePrice) / Math.abs(basePrice);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Handle a newly detected pivot point.
|
|
146
|
+
* Either updates existing pivot (if same direction) or adds new pivot (if direction changed).
|
|
147
|
+
*/
|
|
148
|
+
newPivotPointFound(isHigh, point) {
|
|
149
|
+
const last = this.lastPivot();
|
|
150
|
+
if (!last) {
|
|
151
|
+
this.pivots.push({
|
|
152
|
+
isHigh,
|
|
153
|
+
volume: this.sumVol,
|
|
154
|
+
start: point,
|
|
155
|
+
end: point
|
|
156
|
+
});
|
|
157
|
+
this.sumVol = 0;
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
if (last.isHigh === isHigh) {
|
|
161
|
+
const isMoreExtreme = isHigh ? point.price > last.end.price : point.price < last.end.price;
|
|
162
|
+
if (isMoreExtreme) {
|
|
163
|
+
last.end = point;
|
|
164
|
+
last.volume += this.sumVol;
|
|
165
|
+
this.sumVol = 0;
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
} else {
|
|
169
|
+
const dev = this.calcDev(last.end.price, point.price);
|
|
170
|
+
const threshold = this.settings.devThreshold;
|
|
171
|
+
const meetsThreshold = last.isHigh ? dev <= -threshold : dev >= threshold;
|
|
172
|
+
if (meetsThreshold) {
|
|
173
|
+
this.pivots.push({
|
|
174
|
+
isHigh,
|
|
175
|
+
volume: this.sumVol,
|
|
176
|
+
start: last.end,
|
|
177
|
+
end: point
|
|
178
|
+
});
|
|
179
|
+
this.sumVol = 0;
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function calculateZigZag(bars, settings) {
|
|
187
|
+
if (bars.length === 0) {
|
|
188
|
+
return { pivots: [], extension: null };
|
|
189
|
+
}
|
|
190
|
+
const zz = new ZigZag(settings);
|
|
191
|
+
for (let i = 0; i < bars.length; i++) {
|
|
192
|
+
const bar = bars[i];
|
|
193
|
+
if (bar !== void 0) {
|
|
194
|
+
zz.update(bar, i);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
const lastBar = bars[bars.length - 1];
|
|
198
|
+
if (lastBar === void 0) {
|
|
199
|
+
return { pivots: zz.pivots, extension: null };
|
|
200
|
+
}
|
|
201
|
+
const extension = zz.getExtension(lastBar, bars.length - 1);
|
|
202
|
+
return {
|
|
203
|
+
pivots: zz.pivots,
|
|
204
|
+
extension
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=zigzag.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/lib/zigzag/zigzag.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * ZigZag Library\n *\n * Identifies trend reversals by connecting pivot highs and lows\n * that exceed a specified percentage deviation threshold.\n *\n * Based on the PineScript ZigZag library v8.\n */\n\nimport type { Bar } from '../../types/index.js';\n\n// ============ Types ============\n\nexport interface ZigZagSettings {\n /** Minimum percentage deviation from previous pivot to register reversal (default: 5.0) */\n devThreshold: number;\n /** Number of bars required for pivot point detection (default: 10) */\n depth: number;\n /** Line color for ZigZag drawing (default: '#2962FF') */\n lineColor: string;\n /** Extend line from last pivot to current bar (default: true) */\n extendLast: boolean;\n /** Display reversal price in labels (default: true) */\n displayReversalPrice: boolean;\n /** Display cumulative volume in labels (default: true) */\n displayCumulativeVolume: boolean;\n /** Display price change from previous pivot (default: true) */\n displayReversalPriceChange: boolean;\n /** Price change display mode: 'Absolute' or 'Percent' (default: 'Absolute') */\n differencePriceMode: 'Absolute' | 'Percent';\n /** Allow both pivot high and low on same bar (default: true) */\n allowZigZagOnOneBar: boolean;\n}\n\nexport interface ZigZagPoint {\n /** Bar timestamp */\n time: number;\n /** Bar index position */\n barIndex: number;\n /** Price at this point */\n price: number;\n}\n\nexport interface ZigZagPivot {\n /** True if this is a pivot high, false for pivot low */\n isHigh: boolean;\n /** Cumulative volume from start to end */\n volume: number;\n /** Starting point of this segment */\n start: ZigZagPoint;\n /** Ending point (the pivot) of this segment */\n end: ZigZagPoint;\n}\n\nexport interface ZigZagResult {\n /** Array of confirmed pivots */\n pivots: ZigZagPivot[];\n /** Extension line to current bar (if extendLast enabled) */\n extension: ZigZagPivot | null;\n}\n\n// ============ Default Settings ============\n\nexport const defaultSettings: ZigZagSettings = {\n devThreshold: 5.0,\n depth: 10,\n lineColor: '#2962FF',\n extendLast: true,\n displayReversalPrice: true,\n displayCumulativeVolume: true,\n displayReversalPriceChange: true,\n differencePriceMode: 'Absolute',\n allowZigZagOnOneBar: true,\n};\n\n// ============ ZigZag Class ============\n\nexport class ZigZag {\n settings: ZigZagSettings;\n pivots: ZigZagPivot[] = [];\n sumVol: number = 0;\n\n private highBuffer: number[] = [];\n private lowBuffer: number[] = [];\n private timeBuffer: number[] = [];\n private barCount: number = 0;\n\n constructor(settings?: Partial<ZigZagSettings>) {\n this.settings = { ...defaultSettings, ...settings };\n }\n\n /**\n * Process a single bar, detecting pivots.\n * Must be called sequentially for each bar.\n * @returns true if a new pivot was detected or updated\n */\n update(bar: Bar, barIndex: number): boolean {\n // Store price data in buffers for lookback\n this.highBuffer.push(bar.high);\n this.lowBuffer.push(bar.low);\n this.timeBuffer.push(bar.time);\n this.barCount++;\n\n const depth = Math.max(2, Math.floor(this.settings.depth / 2));\n this.sumVol += bar.volume ?? 0;\n\n // Need enough bars for pivot detection (depth bars before and after)\n if (this.barCount < depth * 2 + 1) return false;\n\n let somethingChanged = this.tryFindPivot(true, depth, barIndex);\n somethingChanged = this.tryFindPivot(\n false,\n depth,\n barIndex,\n this.settings.allowZigZagOnOneBar || !somethingChanged\n ) || somethingChanged;\n\n return somethingChanged;\n }\n\n /**\n * Get the last confirmed pivot\n */\n lastPivot(): ZigZagPivot | null {\n if (this.pivots.length === 0) return null;\n const last = this.pivots[this.pivots.length - 1];\n return last !== undefined ? last : null;\n }\n\n /**\n * Get extension line to current bar (if extendLast enabled)\n */\n getExtension(currentBar: Bar, barIndex: number): ZigZagPivot | null {\n if (!this.settings.extendLast) return null;\n\n const last = this.lastPivot();\n if (!last) return null;\n\n // Extension goes opposite direction from last pivot\n const isHigh = !last.isHigh;\n const price = isHigh ? currentBar.high : currentBar.low;\n\n return {\n isHigh,\n volume: this.sumVol,\n start: last.end,\n end: { time: currentBar.time, barIndex, price },\n };\n }\n\n // ============ Private Methods ============\n\n private tryFindPivot(\n isHigh: boolean,\n depth: number,\n currentBarIndex: number,\n registerPivot: boolean = true\n ): boolean {\n const point = this.findPivotPoint(isHigh, depth, currentBarIndex);\n if (!point || !registerPivot) return false;\n return this.newPivotPointFound(isHigh, point);\n }\n\n /**\n * Check if a bar from `depth` bars back is a pivot point.\n * A pivot high has prices below it on both sides.\n * A pivot low has prices above it on both sides.\n */\n private findPivotPoint(\n isHigh: boolean,\n depth: number,\n currentBarIndex: number\n ): ZigZagPoint | null {\n const buffer = isHigh ? this.highBuffer : this.lowBuffer;\n const pivotBufferIdx = buffer.length - 1 - depth;\n\n if (pivotBufferIdx < depth) return null;\n\n const pivotPrice = buffer[pivotBufferIdx];\n if (pivotPrice === undefined) return null;\n\n // Check bars AFTER the potential pivot (more recent bars)\n // For a pivot high, subsequent bars must be strictly lower\n // For a pivot low, subsequent bars must be strictly higher\n for (let i = pivotBufferIdx + 1; i < buffer.length; i++) {\n const price = buffer[i];\n if (price === undefined) return null;\n if (isHigh) {\n if (price > pivotPrice) return null;\n } else {\n if (price < pivotPrice) return null;\n }\n }\n\n // Check bars BEFORE the potential pivot (older bars)\n // For a pivot high, previous bars must be lower or equal\n // For a pivot low, previous bars must be higher or equal\n for (let i = pivotBufferIdx - depth; i < pivotBufferIdx; i++) {\n const price = buffer[i];\n if (price === undefined) return null;\n if (isHigh) {\n if (price >= pivotPrice) return null;\n } else {\n if (price <= pivotPrice) return null;\n }\n }\n\n // It's a valid pivot\n const pivotBarIndex = currentBarIndex - depth;\n const pivotTime = this.timeBuffer[pivotBufferIdx];\n if (pivotTime === undefined) return null;\n\n return {\n time: pivotTime,\n barIndex: pivotBarIndex,\n price: pivotPrice,\n };\n }\n\n /**\n * Calculate percentage deviation from base price to new price\n */\n private calcDev(basePrice: number, price: number): number {\n return 100 * (price - basePrice) / Math.abs(basePrice);\n }\n\n /**\n * Handle a newly detected pivot point.\n * Either updates existing pivot (if same direction) or adds new pivot (if direction changed).\n */\n private newPivotPointFound(isHigh: boolean, point: ZigZagPoint): boolean {\n const last = this.lastPivot();\n\n if (!last) {\n // First pivot - create initial entry\n this.pivots.push({\n isHigh,\n volume: this.sumVol,\n start: point,\n end: point,\n });\n this.sumVol = 0;\n return true;\n }\n\n if (last.isHigh === isHigh) {\n // Same direction - check if this is a more extreme price\n const isMoreExtreme = isHigh\n ? point.price > last.end.price\n : point.price < last.end.price;\n\n if (isMoreExtreme) {\n // Update the existing pivot to the new extreme\n last.end = point;\n last.volume += this.sumVol;\n this.sumVol = 0;\n return true;\n }\n } else {\n // Direction change - check if deviation threshold is met\n const dev = this.calcDev(last.end.price, point.price);\n const threshold = this.settings.devThreshold;\n\n // For pivot high -> low transition, need negative deviation\n // For pivot low -> high transition, need positive deviation\n const meetsThreshold = last.isHigh\n ? dev <= -threshold\n : dev >= threshold;\n\n if (meetsThreshold) {\n // Add new pivot\n this.pivots.push({\n isHigh,\n volume: this.sumVol,\n start: last.end,\n end: point,\n });\n this.sumVol = 0;\n return true;\n }\n }\n\n return false;\n }\n}\n\n/**\n * Convenience function to calculate ZigZag on an array of bars.\n * Processes all bars and returns the resulting pivots and extension.\n */\nexport function calculateZigZag(\n bars: Bar[],\n settings?: Partial<ZigZagSettings>\n): ZigZagResult {\n if (bars.length === 0) {\n return { pivots: [], extension: null };\n }\n\n const zz = new ZigZag(settings);\n\n for (let i = 0; i < bars.length; i++) {\n const bar = bars[i];\n if (bar !== undefined) {\n zz.update(bar, i);\n }\n }\n\n const lastBar = bars[bars.length - 1];\n if (lastBar === undefined) {\n return { pivots: zz.pivots, extension: null };\n }\n const extension = zz.getExtension(lastBar, bars.length - 1);\n\n return {\n pivots: zz.pivots,\n extension,\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|