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,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/box/index.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Box namespace\n * Functions for creating and manipulating box drawing objects.\n *\n * @remarks\n * Box objects represent rectangular areas on the chart. The getter functions\n * (get_top, get_bottom, get_left, get_right) enable computational use cases like:\n * - Gap detection and tracking (detecting when price fills gaps)\n * - Range breakout analysis (detecting when price breaks out of consolidation)\n * - Rectangle pattern recognition\n *\n * @version 6\n */\n\nimport { all as allDrawings, isDeleted, register, remove } from '../drawing/registry.js';\nimport type { ChartPoint, Box, color } from '../types/index.js';\n\ntype BoxXloc = 'bar_index' | 'bar_time';\ntype BoxExtend = 'none' | 'left' | 'right' | 'both';\n\n/**\n * Creates a new box (PineScript `box.new`), with two chart points or with coordinates, in PineScript's\n * parameter order:\n *\n * - `box.new(top_left, bottom_right, border_color?, border_width?, border_style?, extend?, xloc?, bgcolor?,\n * text?, text_size?, text_color?, text_halign?, text_valign?, text_wrap?, text_font_family?,\n * force_overlay?, text_formatting?)`\n * - `box.new(left, top, right, bottom, border_color?, border_width?, border_style?, extend?, xloc?, ...)`\n *\n * With chart points, x is `point.index` for `bar_index` boxes and `point.time` for `bar_time` boxes.\n *\n * @example\n * ```typescript\n * // Gap box from bar 10 to 20, between 100 and 105, extended to the right\n * const gap = box.new(10, 105, 20, 100, '#2196F3', 1, 'solid', 'right');\n * ```\n */\nexport function new_box(\n top_left: ChartPoint,\n bottom_right: ChartPoint,\n border_color?: color,\n border_width?: number,\n border_style?: 'solid' | 'dotted' | 'dashed',\n extend?: BoxExtend,\n xloc?: BoxXloc,\n bgcolor?: color,\n text?: string,\n text_size?: string | number,\n text_color?: color,\n text_halign?: 'left' | 'center' | 'right',\n text_valign?: 'top' | 'center' | 'bottom',\n text_wrap?: 'none' | 'auto',\n text_font_family?: 'default' | 'monospace',\n force_overlay?: boolean,\n text_formatting?: number\n): Box;\nexport function new_box(\n left: number,\n top: number,\n right: number,\n bottom: number,\n border_color?: color,\n border_width?: number,\n border_style?: 'solid' | 'dotted' | 'dashed',\n extend?: BoxExtend,\n xloc?: BoxXloc,\n bgcolor?: color,\n text?: string,\n text_size?: string | number,\n text_color?: color,\n text_halign?: 'left' | 'center' | 'right',\n text_valign?: 'top' | 'center' | 'bottom',\n text_wrap?: 'none' | 'auto',\n text_font_family?: 'default' | 'monospace',\n force_overlay?: boolean,\n text_formatting?: number\n): Box;\nexport function new_box(...args: unknown[]): Box {\n let left: number, top: number, right: number, bottom: number, rest: unknown[];\n if (typeof args[0] === 'object' && args[0] !== null) {\n const [tl, br, ...others] = args as [ChartPoint, ChartPoint, ...unknown[]];\n const xloc = (others[4] as BoxXloc | undefined) ?? 'bar_index';\n [left, top, right, bottom, rest] = [pointX(tl, xloc), tl.price, pointX(br, xloc), br.price, others];\n } else {\n [left, top, right, bottom] = args as [number, number, number, number];\n rest = args.slice(4);\n }\n const [border_color, border_width, border_style, extend, xloc, bgcolor, text, text_size, text_color,\n text_halign, text_valign, text_wrap, text_font_family, force_overlay, text_formatting] = rest as [\n color?, number?, ('solid' | 'dotted' | 'dashed')?, BoxExtend?, BoxXloc?, color?, string?,\n (string | number)?, color?, ('left' | 'center' | 'right')?, ('top' | 'center' | 'bottom')?,\n ('none' | 'auto')?, ('default' | 'monospace')?, boolean?, number?,\n ];\n return register('box', {\n left,\n top,\n right,\n bottom,\n xloc: xloc ?? 'bar_index',\n extend: extend ?? 'none',\n border_color,\n border_width: border_width || 1,\n border_style: border_style || 'solid',\n bgcolor,\n text,\n text_size,\n text_color,\n text_halign,\n text_valign,\n text_wrap,\n text_font_family,\n force_overlay: force_overlay ?? false,\n text_formatting,\n });\n}\n\n/**\n * Returns the left border x coordinate.\n *\n * @param id - Box object\n * @returns Left border coordinate (bar index or timestamp)\n *\n * @remarks\n * **COMPUTATIONAL USE**: Calculate gap duration, validate range timeframes\n *\n * @example\n * ```typescript\n * const gap = box.new(10, 105, 20, 100);\n * const currentBar = 30;\n * const duration = currentBar - box.get_left(gap); // Returns 20\n *\n * if (duration > 50) {\n * console.log('Gap has been open for 50+ bars');\n * }\n * ```\n */\nexport function get_left(id: Box): number {\n return id.left;\n}\n\n/**\n * Returns the right border x coordinate.\n *\n * @param id - Box object\n * @returns Right border coordinate (bar index or timestamp)\n *\n * @remarks\n * **COMPUTATIONAL USE**: Calculate gap duration, update trailing edges\n *\n * @example\n * ```typescript\n * const range = box.new(100, 155, 150, 145);\n * const width = box.get_right(range) - box.get_left(range); // Returns 50 bars\n * ```\n */\nexport function get_right(id: Box): number {\n return id.right;\n}\n\n/**\n * Returns the top border price level.\n *\n * @param id - Box object\n * @returns Top border price\n *\n * @remarks\n * **COMPUTATIONAL USE**: Detect breakouts above resistance, check gap fills\n *\n * @example\n * ```typescript\n * const gap = box.new(10, 105, 20, 100); // Bearish gap\n *\n * // Check if price has filled gap from below\n * const high = 106;\n * if (high > box.get_top(gap)) {\n * console.log('Gap completely filled!');\n * }\n * ```\n */\nexport function get_top(id: Box): number {\n return id.top;\n}\n\n/**\n * Returns the bottom border price level.\n *\n * @param id - Box object\n * @returns Bottom border price\n *\n * @remarks\n * **COMPUTATIONAL USE**: Detect breakouts below support, check gap fills\n *\n * @example\n * ```typescript\n * const gap = box.new(10, 105, 20, 100); // Bearish gap\n *\n * // Check if price has touched gap from above\n * const low = 104;\n * if (low < box.get_top(gap) && low > box.get_bottom(gap)) {\n * console.log('Price entered the gap!');\n * }\n * ```\n */\nexport function get_bottom(id: Box): number {\n return id.bottom;\n}\n\n/**\n * Creates a copy of the box object.\n *\n * @param id - Box object to copy\n * @returns New box object with same properties\n *\n * @remarks\n * Creates a shallow copy of the box. Modifications to the copy won't affect the original.\n *\n * @example\n * ```typescript\n * const originalBox = box.new(10, 105, 20, 100);\n * const copiedBox = box.copy(originalBox);\n *\n * // Modify copy without affecting original\n * copiedBox.top = 110;\n * ```\n */\nexport function copy(id: Box): Box {\n return register('box', { ...id });\n}\n\n// =============================================================================\n// COORDINATE SETTERS\n// =============================================================================\n\n/**\n * Sets the left border x coordinate.\n *\n * @param id - Box object to modify\n * @param left - New left border coordinate\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_left(box, 15); // Move left edge to bar 15\n * ```\n */\nexport function set_left(id: Box, left: number): Box {\n if (isDeleted(id)) return id;\n id.left = left;\n return id;\n}\n\n/**\n * Sets the right border x coordinate.\n *\n * @param id - Box object to modify\n * @param right - New right border coordinate\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_right(box, 25); // Move right edge to bar 25\n * ```\n */\nexport function set_right(id: Box, right: number): Box {\n if (isDeleted(id)) return id;\n id.right = right;\n return id;\n}\n\n/**\n * Sets the top border price level.\n *\n * @param id - Box object to modify\n * @param top - New top border price\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_top(box, 110); // Move top edge to price 110\n * ```\n */\nexport function set_top(id: Box, top: number): Box {\n if (isDeleted(id)) return id;\n id.top = top;\n return id;\n}\n\n/**\n * Sets the bottom border price level.\n *\n * @param id - Box object to modify\n * @param bottom - New bottom border price\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_bottom(box, 95); // Move bottom edge to price 95\n * ```\n */\nexport function set_bottom(id: Box, bottom: number): Box {\n if (isDeleted(id)) return id;\n id.bottom = bottom;\n return id;\n}\n\n/**\n * Sets the left and top coordinates.\n *\n * @param id - Box object to modify\n * @param left - New left border coordinate\n * @param top - New top border price\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_lefttop(box, 12, 108); // Move top-left corner\n * ```\n */\nexport function set_lefttop(id: Box, left: number, top: number): Box {\n if (isDeleted(id)) return id;\n id.left = left;\n id.top = top;\n return id;\n}\n\n/**\n * Sets the right and bottom coordinates.\n *\n * @param id - Box object to modify\n * @param right - New right border coordinate\n * @param bottom - New bottom border price\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_rightbottom(box, 25, 98); // Move bottom-right corner\n * ```\n */\nexport function set_rightbottom(id: Box, right: number, bottom: number): Box {\n if (isDeleted(id)) return id;\n id.right = right;\n id.bottom = bottom;\n return id;\n}\n\n/**\n * Sets the coordinate system for the box.\n *\n * @param id - Box object to modify\n * @param left - New left border coordinate\n * @param right - New right border coordinate\n * @param xloc - New coordinate system ('bar_index' or 'bar_time')\n * @returns Modified box object\n *\n * @remarks\n * When changing xloc, you must provide appropriate x coordinates for the new system.\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * // Change to timestamp-based coordinates\n * box.set_xloc(box, 1609459200000, 1609545600000, 'bar_time');\n * ```\n */\nexport function set_xloc(id: Box, left: number, right: number, xloc: 'bar_index' | 'bar_time'): Box {\n if (isDeleted(id)) return id;\n id.left = left;\n id.right = right;\n id.xloc = xloc;\n return id;\n}\n\n/**\n * Sets the horizontal extension mode.\n *\n * @param id - Box object to modify\n * @param extend - New extension mode\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_extend(box, 'right'); // Extend box to the right\n * ```\n */\nexport function set_extend(id: Box, extend: 'none' | 'left' | 'right' | 'both'): Box {\n if (isDeleted(id)) return id;\n id.extend = extend;\n return id;\n}\n\n// =============================================================================\n// STYLING SETTERS\n// =============================================================================\n\n/**\n * Sets the border color.\n *\n * @param id - Box object to modify\n * @param borderColor - New border color\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_border_color(box, '#FF0000'); // Red border\n * ```\n */\nexport function set_border_color(id: Box, borderColor: color): Box {\n if (isDeleted(id)) return id;\n id.border_color = borderColor;\n return id;\n}\n\n/**\n * Sets the border width.\n *\n * @param id - Box object to modify\n * @param width - New border width in pixels\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_border_width(box, 2); // Thicker border\n * ```\n */\nexport function set_border_width(id: Box, width: number): Box {\n if (isDeleted(id)) return id;\n id.border_width = width;\n return id;\n}\n\n/**\n * Sets the border style.\n *\n * @param id - Box object to modify\n * @param style - New border style\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_border_style(box, 'dashed'); // Dashed border\n * ```\n */\nexport function set_border_style(id: Box, style: 'solid' | 'dotted' | 'dashed'): Box {\n if (isDeleted(id)) return id;\n id.border_style = style;\n return id;\n}\n\n/**\n * Sets the background fill color.\n *\n * @param id - Box object to modify\n * @param bgColor - New background color\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_bgcolor(box, '#00FF0030'); // Transparent green fill\n * ```\n */\nexport function set_bgcolor(id: Box, bgColor: color): Box {\n if (isDeleted(id)) return id;\n id.bgcolor = bgColor;\n return id;\n}\n\n// =============================================================================\n// TEXT SETTERS\n// =============================================================================\n\n/**\n * Sets the text content.\n *\n * @param id - Box object to modify\n * @param text - New text content\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_text(box, 'Gap Filled'); // Update text\n * ```\n */\nexport function set_text(id: Box, text: string): Box {\n if (isDeleted(id)) return id;\n id.text = text;\n return id;\n}\n\n/**\n * Sets the text color.\n *\n * @param id - Box object to modify\n * @param textColor - New text color\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_text_color(box, '#FFFFFF'); // White text\n * ```\n */\nexport function set_text_color(id: Box, textColor: color): Box {\n if (isDeleted(id)) return id;\n id.text_color = textColor;\n return id;\n}\n\n/**\n * Sets the text size.\n *\n * @param id - Box object to modify\n * @param size - New text size\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_text_size(box, 'large'); // Larger text\n * ```\n */\nexport function set_text_size(id: Box, size: string | number): Box {\n if (isDeleted(id)) return id;\n id.text_size = size;\n return id;\n}\n\n/**\n * Sets the horizontal text alignment.\n *\n * @param id - Box object to modify\n * @param align - New horizontal alignment\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_text_halign(box, 'center'); // Center text horizontally\n * ```\n */\nexport function set_text_halign(id: Box, align: 'left' | 'center' | 'right'): Box {\n if (isDeleted(id)) return id;\n id.text_halign = align;\n return id;\n}\n\n/**\n * Sets the vertical text alignment.\n *\n * @param id - Box object to modify\n * @param align - New vertical alignment\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_text_valign(box, 'center'); // Center text vertically\n * ```\n */\nexport function set_text_valign(id: Box, align: 'top' | 'center' | 'bottom'): Box {\n if (isDeleted(id)) return id;\n id.text_valign = align;\n return id;\n}\n\n/**\n * Sets the text wrapping mode.\n *\n * @param id - Box object to modify\n * @param wrap - New text wrap mode\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_text_wrap(box, 'auto'); // Enable text wrapping\n * ```\n */\nexport function set_text_wrap(id: Box, wrap: 'none' | 'auto'): Box {\n if (isDeleted(id)) return id;\n id.text_wrap = wrap;\n return id;\n}\n\n/**\n * Sets the text font family.\n *\n * @param id - Box object to modify\n * @param font - New font family\n * @returns Modified box object\n *\n * @example\n * ```typescript\n * const box = box.new(10, 105, 20, 100);\n * box.set_text_font_family(box, 'monospace'); // Monospace font\n * ```\n */\nexport function set_text_font_family(id: Box, font: 'default' | 'monospace'): Box {\n if (isDeleted(id)) return id;\n id.text_font_family = font;\n return id;\n}\n\n/**\n * Deletes the box object.\n *\n * @param id - Box object to delete\n *\n * @remarks\n * Removes the box from `box.all()`. As in PineScript, the deleted box 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 box = box.new(10, 105, 20, 100);\n * box.delete(box);\n * // box.all() no longer contains it\n * ```\n */\nexport function delete_box(id: Box): void {\n remove('box', 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 boxes, in creation order (PineScript `box.all`). A new array.\n */\nexport function all(): Box[] {\n return allDrawings('box');\n}\n\n/**\n * Sets the left and top borders from a chart point (`point.index` or `point.time` by xloc, and `point.price`).\n */\nexport function set_top_left_point(id: Box, point: ChartPoint): Box {\n if (isDeleted(id)) return id;\n id.left = pointX(point, id.xloc);\n id.top = point.price;\n return id;\n}\n\n/**\n * Sets the right and bottom borders from a chart point (`point.index` or `point.time` by xloc, and `point.price`).\n */\nexport function set_bottom_right_point(id: Box, point: ChartPoint): Box {\n if (isDeleted(id)) return id;\n id.right = pointX(point, id.xloc);\n id.bottom = 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: Box, formatting: number): Box {\n if (isDeleted(id)) return id;\n id.text_formatting = formatting;\n return id;\n}\n\n// Alias to match PineScript API\nexport { new_box as new };\nexport { delete_box as delete };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["xloc", "allDrawings"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Per-call history of ta.* functions called in a conditional block.
|
|
3
|
+
*
|
|
4
|
+
* In PineScript, every ta.* call keeps its own history of the values it receives. A call inside
|
|
5
|
+
* an `if` block receives values only on the bars where the block runs, so its history skips the
|
|
6
|
+
* other bars: `ta.crossover(a, b)` is false on the first bar the block runs, and `ta.sma(x, 3)`
|
|
7
|
+
* averages the last 3 values it received, not the last 3 bars.
|
|
8
|
+
*
|
|
9
|
+
* - {@link whenCalled}: vectorized, when the bars of the calls are known in advance.
|
|
10
|
+
* - {@link crossover} / {@link crossunder} / {@link cross} / {@link barssince}: one stateful call site for bar
|
|
11
|
+
* loops, called only on the bars where the Pine call runs.
|
|
12
|
+
*
|
|
13
|
+
* Since PineScript v6, `and` / `or` are lazy: the right operand runs only when the left operand does not decide
|
|
14
|
+
* the result. A ta.* call in the right operand of `a or b` runs on the bars where `a` is false, in `a and b` on the
|
|
15
|
+
* bars where `a` is true, so it needs a call site too:
|
|
16
|
+
*
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // Pine: longCond = longUp or (src > sig and ta.barssince(longUp) <= lookback)
|
|
19
|
+
* const since = callsite.whenCalled(longUp.map((u, i) => !u && src[i] > sig[i]), (c) => taCore.barssince(c.map(Boolean)), longUp);
|
|
20
|
+
* // ta.barssince(longUp) only runs where longUp is false: it never sees true and stays na
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* ```typescript
|
|
24
|
+
* // Pine: if inRange
|
|
25
|
+
* // buy = ta.crossover(cumRsi, 60)
|
|
26
|
+
* const buy = callsite.whenCalled(inRange, (a) => taCore.crossover(a, a.map(() => 60)), cumRsi);
|
|
27
|
+
*
|
|
28
|
+
* // Same call in a bar loop
|
|
29
|
+
* const buyCross = callsite.crossover();
|
|
30
|
+
* for (let i = 0; i < n; i++) {
|
|
31
|
+
* if (inRange[i]) {
|
|
32
|
+
* const buy = buyCross(cumRsi[i], 60);
|
|
33
|
+
* }
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @module callsite
|
|
38
|
+
*/
|
|
39
|
+
import type { Source } from '../types/index.js';
|
|
40
|
+
/**
|
|
41
|
+
* Runs `fn` on the bars where `called` is true only, like a ta.* call inside an `if` block.
|
|
42
|
+
* `fn` receives the values of `sources` on those bars, in order; its results are placed back on
|
|
43
|
+
* the same bars. The other bars get na (NaN).
|
|
44
|
+
*
|
|
45
|
+
* @param called - true (or non-zero) on the bars where the call runs
|
|
46
|
+
* @param fn - the calculation, for example `(x) => taCore.sma(x, 3)`
|
|
47
|
+
* @param sources - the arguments of the call, one value per chart bar
|
|
48
|
+
*/
|
|
49
|
+
export declare function whenCalled<T extends number | boolean>(called: ArrayLike<boolean | number>, fn: (...values: number[][]) => ArrayLike<T>, ...sources: Source[]): Array<T | number>;
|
|
50
|
+
/** One `ta.crossover(a, b)` call site: false on its first call, as its history is na. */
|
|
51
|
+
export declare function crossover(): (a: number, b: number) => boolean;
|
|
52
|
+
/** One `ta.crossunder(a, b)` call site: false on its first call, as its history is na. */
|
|
53
|
+
export declare function crossunder(): (a: number, b: number) => boolean;
|
|
54
|
+
/**
|
|
55
|
+
* One `ta.barssince(condition)` call site: the number of calls since the condition was true on a call (0 on that
|
|
56
|
+
* call), na before the first true condition. An na condition counts as false.
|
|
57
|
+
*/
|
|
58
|
+
export declare function barssince(): (condition: boolean | number) => number;
|
|
59
|
+
/** One `ta.cross(a, b)` call site: false on its first call, as its history is na. */
|
|
60
|
+
export declare function cross(): (a: number, b: number) => boolean;
|
|
61
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/callsite/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,OAAO,EACnD,MAAM,EAAE,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,EACnC,EAAE,EAAE,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAC3C,GAAG,OAAO,EAAE,MAAM,EAAE,GACnB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CASnB;AAcD,yFAAyF;AACzF,wBAAgB,SAAS,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAE7D;AAED,0FAA0F;AAC1F,wBAAgB,UAAU,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAE9D;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,KAAK,MAAM,CAOnE;AAED,qFAAqF;AACrF,wBAAgB,KAAK,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAEzD"}
|
|
@@ -0,0 +1,65 @@
|
|
|
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 callsite_exports = {};
|
|
20
|
+
__export(callsite_exports, {
|
|
21
|
+
barssince: () => barssince,
|
|
22
|
+
cross: () => cross,
|
|
23
|
+
crossover: () => crossover,
|
|
24
|
+
crossunder: () => crossunder,
|
|
25
|
+
whenCalled: () => whenCalled
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(callsite_exports);
|
|
28
|
+
function whenCalled(called, fn, ...sources) {
|
|
29
|
+
const bars = [];
|
|
30
|
+
for (let i = 0; i < called.length; i++) if (called[i]) bars.push(i);
|
|
31
|
+
const result = fn(...sources.map((s) => bars.map((i) => s[i] ?? NaN)));
|
|
32
|
+
const out = new Array(called.length).fill(NaN);
|
|
33
|
+
bars.forEach((bar, k) => {
|
|
34
|
+
out[bar] = result[k];
|
|
35
|
+
});
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
function twoSeriesSite(test) {
|
|
39
|
+
let prevA = NaN;
|
|
40
|
+
let prevB = NaN;
|
|
41
|
+
return (a, b) => {
|
|
42
|
+
const result = test(a, b, prevA, prevB);
|
|
43
|
+
prevA = a;
|
|
44
|
+
prevB = b;
|
|
45
|
+
return result;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function crossover() {
|
|
49
|
+
return twoSeriesSite((a, b, pa, pb) => a > b && pa <= pb);
|
|
50
|
+
}
|
|
51
|
+
function crossunder() {
|
|
52
|
+
return twoSeriesSite((a, b, pa, pb) => a < b && pa >= pb);
|
|
53
|
+
}
|
|
54
|
+
function barssince() {
|
|
55
|
+
let count = NaN;
|
|
56
|
+
return (condition) => {
|
|
57
|
+
if (condition && !Number.isNaN(condition)) count = 0;
|
|
58
|
+
else if (!Number.isNaN(count)) count++;
|
|
59
|
+
return count;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function cross() {
|
|
63
|
+
return twoSeriesSite((a, b, pa, pb) => a > b && pa <= pb || a < b && pa >= pb);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/callsite/index.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * @fileoverview Per-call history of ta.* functions called in a conditional block.\n *\n * In PineScript, every ta.* call keeps its own history of the values it receives. A call inside\n * an `if` block receives values only on the bars where the block runs, so its history skips the\n * other bars: `ta.crossover(a, b)` is false on the first bar the block runs, and `ta.sma(x, 3)`\n * averages the last 3 values it received, not the last 3 bars.\n *\n * - {@link whenCalled}: vectorized, when the bars of the calls are known in advance.\n * - {@link crossover} / {@link crossunder} / {@link cross} / {@link barssince}: one stateful call site for bar\n * loops, called only on the bars where the Pine call runs.\n *\n * Since PineScript v6, `and` / `or` are lazy: the right operand runs only when the left operand does not decide\n * the result. A ta.* call in the right operand of `a or b` runs on the bars where `a` is false, in `a and b` on the\n * bars where `a` is true, so it needs a call site too:\n *\n * ```typescript\n * // Pine: longCond = longUp or (src > sig and ta.barssince(longUp) <= lookback)\n * const since = callsite.whenCalled(longUp.map((u, i) => !u && src[i] > sig[i]), (c) => taCore.barssince(c.map(Boolean)), longUp);\n * // ta.barssince(longUp) only runs where longUp is false: it never sees true and stays na\n * ```\n *\n * ```typescript\n * // Pine: if inRange\n * // buy = ta.crossover(cumRsi, 60)\n * const buy = callsite.whenCalled(inRange, (a) => taCore.crossover(a, a.map(() => 60)), cumRsi);\n *\n * // Same call in a bar loop\n * const buyCross = callsite.crossover();\n * for (let i = 0; i < n; i++) {\n * if (inRange[i]) {\n * const buy = buyCross(cumRsi[i], 60);\n * }\n * }\n * ```\n *\n * @module callsite\n */\n\nimport type { Source } from '../types/index.js';\n\n/**\n * Runs `fn` on the bars where `called` is true only, like a ta.* call inside an `if` block.\n * `fn` receives the values of `sources` on those bars, in order; its results are placed back on\n * the same bars. The other bars get na (NaN).\n *\n * @param called - true (or non-zero) on the bars where the call runs\n * @param fn - the calculation, for example `(x) => taCore.sma(x, 3)`\n * @param sources - the arguments of the call, one value per chart bar\n */\nexport function whenCalled<T extends number | boolean>(\n called: ArrayLike<boolean | number>,\n fn: (...values: number[][]) => ArrayLike<T>,\n ...sources: Source[]\n): Array<T | number> {\n const bars: number[] = [];\n for (let i = 0; i < called.length; i++) if (called[i]) bars.push(i);\n const result = fn(...sources.map(s => bars.map(i => s[i] ?? NaN)));\n const out = new Array<T | number>(called.length).fill(NaN);\n bars.forEach((bar, k) => {\n out[bar] = result[k]!;\n });\n return out;\n}\n\n/** A call site that keeps the two previous arguments (na before the first call). */\nfunction twoSeriesSite(test: (a: number, b: number, prevA: number, prevB: number) => boolean) {\n let prevA = NaN;\n let prevB = NaN;\n return (a: number, b: number): boolean => {\n const result = test(a, b, prevA, prevB);\n prevA = a;\n prevB = b;\n return result;\n };\n}\n\n/** One `ta.crossover(a, b)` call site: false on its first call, as its history is na. */\nexport function crossover(): (a: number, b: number) => boolean {\n return twoSeriesSite((a, b, pa, pb) => a > b && pa <= pb);\n}\n\n/** One `ta.crossunder(a, b)` call site: false on its first call, as its history is na. */\nexport function crossunder(): (a: number, b: number) => boolean {\n return twoSeriesSite((a, b, pa, pb) => a < b && pa >= pb);\n}\n\n/**\n * One `ta.barssince(condition)` call site: the number of calls since the condition was true on a call (0 on that\n * call), na before the first true condition. An na condition counts as false.\n */\nexport function barssince(): (condition: boolean | number) => number {\n let count = NaN;\n return (condition) => {\n if (condition && !Number.isNaN(condition)) count = 0;\n else if (!Number.isNaN(count)) count++;\n return count;\n };\n}\n\n/** One `ta.cross(a, b)` call site: false on its first call, as its history is na. */\nexport function cross(): (a: number, b: number) => boolean {\n return twoSeriesSite((a, b, pa, pb) => (a > b && pa <= pb) || (a < b && pa >= pb));\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkDO,SAAS,WACd,QACA,OACG,SACgB;AACnB,QAAM,OAAiB,CAAC;AACxB,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAK,KAAI,OAAO,CAAC,EAAG,MAAK,KAAK,CAAC;AAClE,QAAM,SAAS,GAAG,GAAG,QAAQ,IAAI,OAAK,KAAK,IAAI,OAAK,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;AACjE,QAAM,MAAM,IAAI,MAAkB,OAAO,MAAM,EAAE,KAAK,GAAG;AACzD,OAAK,QAAQ,CAAC,KAAK,MAAM;AACvB,QAAI,GAAG,IAAI,OAAO,CAAC;AAAA,EACrB,CAAC;AACD,SAAO;AACT;AAGA,SAAS,cAAc,MAAuE;AAC5F,MAAI,QAAQ;AACZ,MAAI,QAAQ;AACZ,SAAO,CAAC,GAAW,MAAuB;AACxC,UAAM,SAAS,KAAK,GAAG,GAAG,OAAO,KAAK;AACtC,YAAQ;AACR,YAAQ;AACR,WAAO;AAAA,EACT;AACF;AAGO,SAAS,YAA+C;AAC7D,SAAO,cAAc,CAAC,GAAG,GAAG,IAAI,OAAO,IAAI,KAAK,MAAM,EAAE;AAC1D;AAGO,SAAS,aAAgD;AAC9D,SAAO,cAAc,CAAC,GAAG,GAAG,IAAI,OAAO,IAAI,KAAK,MAAM,EAAE;AAC1D;AAMO,SAAS,YAAqD;AACnE,MAAI,QAAQ;AACZ,SAAO,CAAC,cAAc;AACpB,QAAI,aAAa,CAAC,OAAO,MAAM,SAAS,EAAG,SAAQ;AAAA,aAC1C,CAAC,OAAO,MAAM,KAAK,EAAG;AAC/B,WAAO;AAAA,EACT;AACF;AAGO,SAAS,QAA2C;AACzD,SAAO,cAAc,CAAC,GAAG,GAAG,IAAI,OAAQ,IAAI,KAAK,MAAM,MAAQ,IAAI,KAAK,MAAM,EAAG;AACnF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chart Point namespace
|
|
3
|
+
* Functions for creating and manipulating chart point objects.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Chart points represent specific locations on a chart with time, index, and price coordinates.
|
|
7
|
+
* They are primarily used with polylines and other drawing objects that require multiple points.
|
|
8
|
+
*
|
|
9
|
+
* @version 6
|
|
10
|
+
*/
|
|
11
|
+
import type { ChartPoint } from '../types/index.js';
|
|
12
|
+
export type { ChartPoint };
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new chart point with all coordinates.
|
|
15
|
+
*
|
|
16
|
+
* @param time - UNIX timestamp in milliseconds (or null if using bar index)
|
|
17
|
+
* @param index - Bar index (or null if using time)
|
|
18
|
+
* @param price - Y-axis price value
|
|
19
|
+
* @returns New ChartPoint object
|
|
20
|
+
*
|
|
21
|
+
* @remarks
|
|
22
|
+
* Creates a chart point that can be used with polylines and other multi-point drawing objects.
|
|
23
|
+
* Typically, you would provide either time or index, not both, depending on the xloc mode.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* // Create a point with both time and index
|
|
28
|
+
* const point = chartPoint.new(1609459200000, 100, 150.5);
|
|
29
|
+
*
|
|
30
|
+
* // Create a point with only index
|
|
31
|
+
* const indexPoint = chartPoint.new(null, 50, 200);
|
|
32
|
+
*
|
|
33
|
+
* // Create a point with only time
|
|
34
|
+
* const timePoint = chartPoint.new(1609459200000, null, 175);
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function new_point(time: number | null, index: number | null, price: number): ChartPoint;
|
|
38
|
+
/**
|
|
39
|
+
* Creates a chart point from time and price.
|
|
40
|
+
*
|
|
41
|
+
* @param time - UNIX timestamp in milliseconds
|
|
42
|
+
* @param price - Y-axis price value
|
|
43
|
+
* @returns New ChartPoint object with index set to null
|
|
44
|
+
*
|
|
45
|
+
* @remarks
|
|
46
|
+
* Convenience function for creating points when using xloc.bar_time mode.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* // Create a point using timestamp
|
|
51
|
+
* const point = chartPoint.from_time(1609459200000, 150.5);
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function from_time(time: number, price: number): ChartPoint;
|
|
55
|
+
/**
|
|
56
|
+
* Creates a chart point from bar index and price.
|
|
57
|
+
*
|
|
58
|
+
* @param index - Bar index
|
|
59
|
+
* @param price - Y-axis price value
|
|
60
|
+
* @returns New ChartPoint object with time set to null
|
|
61
|
+
*
|
|
62
|
+
* @remarks
|
|
63
|
+
* Convenience function for creating points when using xloc.bar_index mode.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* // Create a point using bar index
|
|
68
|
+
* const point = chartPoint.from_index(50, 150.5);
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare function from_index(index: number, price: number): ChartPoint;
|
|
72
|
+
/**
|
|
73
|
+
* Creates a copy of a chart point.
|
|
74
|
+
*
|
|
75
|
+
* @param point - ChartPoint to copy
|
|
76
|
+
* @returns New ChartPoint object with same values
|
|
77
|
+
*
|
|
78
|
+
* @remarks
|
|
79
|
+
* Creates a shallow copy of the chart point. Since ChartPoint is immutable (readonly properties),
|
|
80
|
+
* this creates an independent copy.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const original = chartPoint.from_index(10, 100);
|
|
85
|
+
* const copied = chartPoint.copy(original);
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export declare function copy(point: ChartPoint): ChartPoint;
|
|
89
|
+
export { new_point as new };
|
|
90
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chartpoint/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,KAAK,EAAE,MAAM,GACZ,UAAU,CAMZ;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAMjE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAMnE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAMlD;AAGD,OAAO,EAAE,SAAS,IAAI,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
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 chartpoint_exports = {};
|
|
20
|
+
__export(chartpoint_exports, {
|
|
21
|
+
copy: () => copy,
|
|
22
|
+
from_index: () => from_index,
|
|
23
|
+
from_time: () => from_time,
|
|
24
|
+
new: () => new_point,
|
|
25
|
+
new_point: () => new_point
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(chartpoint_exports);
|
|
28
|
+
function new_point(time, index, price) {
|
|
29
|
+
return {
|
|
30
|
+
time,
|
|
31
|
+
index,
|
|
32
|
+
price
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function from_time(time, price) {
|
|
36
|
+
return {
|
|
37
|
+
time,
|
|
38
|
+
index: null,
|
|
39
|
+
price
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function from_index(index, price) {
|
|
43
|
+
return {
|
|
44
|
+
time: null,
|
|
45
|
+
index,
|
|
46
|
+
price
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function copy(point) {
|
|
50
|
+
return {
|
|
51
|
+
time: point.time,
|
|
52
|
+
index: point.index,
|
|
53
|
+
price: point.price
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/chartpoint/index.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Chart Point namespace\n * Functions for creating and manipulating chart point objects.\n *\n * @remarks\n * Chart points represent specific locations on a chart with time, index, and price coordinates.\n * They are primarily used with polylines and other drawing objects that require multiple points.\n *\n * @version 6\n */\n\nimport type { ChartPoint } from '../types/index.js';\n\n// Re-export the ChartPoint type for convenience\nexport type { ChartPoint };\n\n/**\n * Creates a new chart point with all coordinates.\n *\n * @param time - UNIX timestamp in milliseconds (or null if using bar index)\n * @param index - Bar index (or null if using time)\n * @param price - Y-axis price value\n * @returns New ChartPoint object\n *\n * @remarks\n * Creates a chart point that can be used with polylines and other multi-point drawing objects.\n * Typically, you would provide either time or index, not both, depending on the xloc mode.\n *\n * @example\n * ```typescript\n * // Create a point with both time and index\n * const point = chartPoint.new(1609459200000, 100, 150.5);\n *\n * // Create a point with only index\n * const indexPoint = chartPoint.new(null, 50, 200);\n *\n * // Create a point with only time\n * const timePoint = chartPoint.new(1609459200000, null, 175);\n * ```\n */\nexport function new_point(\n time: number | null,\n index: number | null,\n price: number\n): ChartPoint {\n return {\n time,\n index,\n price,\n };\n}\n\n/**\n * Creates a chart point from time and price.\n *\n * @param time - UNIX timestamp in milliseconds\n * @param price - Y-axis price value\n * @returns New ChartPoint object with index set to null\n *\n * @remarks\n * Convenience function for creating points when using xloc.bar_time mode.\n *\n * @example\n * ```typescript\n * // Create a point using timestamp\n * const point = chartPoint.from_time(1609459200000, 150.5);\n * ```\n */\nexport function from_time(time: number, price: number): ChartPoint {\n return {\n time,\n index: null,\n price,\n };\n}\n\n/**\n * Creates a chart point from bar index and price.\n *\n * @param index - Bar index\n * @param price - Y-axis price value\n * @returns New ChartPoint object with time set to null\n *\n * @remarks\n * Convenience function for creating points when using xloc.bar_index mode.\n *\n * @example\n * ```typescript\n * // Create a point using bar index\n * const point = chartPoint.from_index(50, 150.5);\n * ```\n */\nexport function from_index(index: number, price: number): ChartPoint {\n return {\n time: null,\n index,\n price,\n };\n}\n\n/**\n * Creates a copy of a chart point.\n *\n * @param point - ChartPoint to copy\n * @returns New ChartPoint object with same values\n *\n * @remarks\n * Creates a shallow copy of the chart point. Since ChartPoint is immutable (readonly properties),\n * this creates an independent copy.\n *\n * @example\n * ```typescript\n * const original = chartPoint.from_index(10, 100);\n * const copied = chartPoint.copy(original);\n * ```\n */\nexport function copy(point: ChartPoint): ChartPoint {\n return {\n time: point.time,\n index: point.index,\n price: point.price,\n };\n}\n\n// Alias to match PineScript API (chart.point.new)\nexport { new_point as new };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwCO,SAAS,UACd,MACA,OACA,OACY;AACZ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAkBO,SAAS,UAAU,MAAc,OAA2B;AACjE,SAAO;AAAA,IACL;AAAA,IACA,OAAO;AAAA,IACP;AAAA,EACF;AACF;AAkBO,SAAS,WAAW,OAAe,OAA2B;AACnE,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF;AACF;AAkBO,SAAS,KAAK,OAA+B;AAClD,SAAO;AAAA,IACL,MAAM,MAAM;AAAA,IACZ,OAAO,MAAM;AAAA,IACb,OAAO,MAAM;AAAA,EACf;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Color namespace
|
|
3
|
+
* Mirrors PineScript's color.* functions for color creation and manipulation.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* All color functions in this namespace follow PineScript v6 API specifications.
|
|
7
|
+
* Colors are represented as RGB or RGBA strings.
|
|
8
|
+
* Transparency values range from 0 (fully opaque) to 100 (fully transparent).
|
|
9
|
+
*
|
|
10
|
+
* @version 6
|
|
11
|
+
*/
|
|
12
|
+
import type { color, int, float, simple_int, simple_float } from '../types/index.js';
|
|
13
|
+
/**
|
|
14
|
+
* Creates a color from RGB values with optional transparency.
|
|
15
|
+
*
|
|
16
|
+
* @param red - Red component (0-255, values are clamped)
|
|
17
|
+
* @param green - Green component (0-255, values are clamped)
|
|
18
|
+
* @param blue - Blue component (0-255, values are clamped)
|
|
19
|
+
* @param transp - Optional transparency (0-100). 0 = opaque, 100 = fully transparent
|
|
20
|
+
* @returns Color string in rgb() or rgba() format
|
|
21
|
+
*
|
|
22
|
+
* @remarks
|
|
23
|
+
* - RGB values are automatically clamped to the 0-255 range
|
|
24
|
+
* - Transparency of 0 or omitted results in rgb() format
|
|
25
|
+
* - Transparency > 0 results in rgba() format
|
|
26
|
+
* - Transparency is converted to alpha channel (0-1 range)
|
|
27
|
+
*
|
|
28
|
+
* PineScript rules:
|
|
29
|
+
* - an `na` channel is 0; a fractional channel is truncated (127.6 is 127)
|
|
30
|
+
* - the transparency is clamped to 0..100 (140 is fully transparent, -5 is opaque); an `na` transparency is fully
|
|
31
|
+
* transparent
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* color.rgb(255, 0, 0) // Returns: "rgb(255, 0, 0)" - Red
|
|
36
|
+
* color.rgb(0, 255, 0, 50) // Returns: "rgba(0, 255, 0, 0.5)" - Semi-transparent green
|
|
37
|
+
* color.rgb(300, 0, 0) // Returns: "rgb(255, 0, 0)" - Clamped to 255
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare function rgb(red: simple_int, green: simple_int, blue: simple_int, transp?: simple_float): string;
|
|
41
|
+
/**
|
|
42
|
+
* Creates a color from a hexadecimal string with optional transparency.
|
|
43
|
+
*
|
|
44
|
+
* @param hex - Hex color string (with or without '#' prefix, e.g., "#FF0000" or "FF0000")
|
|
45
|
+
* @param transp - Optional transparency (0-100). 0 = opaque, 100 = fully transparent
|
|
46
|
+
* @returns Color string in rgb() or rgba() format
|
|
47
|
+
*
|
|
48
|
+
* @remarks
|
|
49
|
+
* - Accepts hex strings with or without '#' prefix
|
|
50
|
+
* - Case-insensitive (accepts both "FF0000" and "ff0000")
|
|
51
|
+
* - Must be 6 characters (excluding '#')
|
|
52
|
+
* - Format: RRGGBB where each component is 00-FF
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* color.from_hex("#FF0000") // Returns: "rgb(255, 0, 0)" - Red
|
|
57
|
+
* color.from_hex("00FF00", 50) // Returns: "rgba(0, 255, 0, 0.5)" - Semi-transparent green
|
|
58
|
+
* color.from_hex("#0000FF") // Returns: "rgb(0, 0, 255)" - Blue
|
|
59
|
+
* color.from_hex("FFA500") // Returns: "rgb(255, 165, 0)" - Orange
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare function from_hex(hex: string, transp?: simple_float): string;
|
|
63
|
+
/**
|
|
64
|
+
* Creates a new color with modified transparency, preserving RGB components.
|
|
65
|
+
*
|
|
66
|
+
* @param baseColor - The base color to modify
|
|
67
|
+
* @param transp - New transparency value (0-100). 0 = opaque, 100 = fully transparent
|
|
68
|
+
* @returns New color with updated transparency
|
|
69
|
+
*
|
|
70
|
+
* @remarks
|
|
71
|
+
* - Preserves the RGB values from the base color
|
|
72
|
+
* - Replaces the transparency with the new value
|
|
73
|
+
* - Useful for creating semi-transparent versions of existing colors
|
|
74
|
+
* - PineScript clamps the transparency to 0..100 (`color.new(c, 140)` is fully transparent, `color.new(c, -5)` is
|
|
75
|
+
* opaque); an `na` transparency is fully transparent
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* const red = color.rgb(255, 0, 0)
|
|
80
|
+
* color.new_color(red, 50) // Returns: "rgba(255, 0, 0, 0.5)" - Semi-transparent red
|
|
81
|
+
* color.new_color(red, 0) // Returns: "rgb(255, 0, 0)" - Fully opaque
|
|
82
|
+
* color.new_color(red, 100) // Returns: "rgba(255, 0, 0, 0)" - Fully transparent
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare function new_color(baseColor: color, transp: simple_float): string;
|
|
86
|
+
/**
|
|
87
|
+
* Extracts the red component from a color.
|
|
88
|
+
*
|
|
89
|
+
* @param clr - The color to extract from
|
|
90
|
+
* @returns Red component value (0-255)
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* color.r(color.rgb(255, 128, 64)) // Returns: 255
|
|
95
|
+
* color.r(color.from_hex("#FF0000")) // Returns: 255
|
|
96
|
+
* color.r(color.from_hex("#FFA500")) // Returns: 255 (orange)
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare function r(clr: color): int;
|
|
100
|
+
/**
|
|
101
|
+
* Extracts the green component from a color.
|
|
102
|
+
*
|
|
103
|
+
* @param clr - The color to extract from
|
|
104
|
+
* @returns Green component value (0-255)
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* color.g(color.rgb(255, 128, 64)) // Returns: 128
|
|
109
|
+
* color.g(color.from_hex("#00FF00")) // Returns: 255
|
|
110
|
+
* color.g(color.from_hex("#FFA500")) // Returns: 165 (orange)
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export declare function g(clr: color): int;
|
|
114
|
+
/**
|
|
115
|
+
* Extracts the blue component from a color.
|
|
116
|
+
*
|
|
117
|
+
* @param clr - The color to extract from
|
|
118
|
+
* @returns Blue component value (0-255)
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```typescript
|
|
122
|
+
* color.b(color.rgb(255, 128, 64)) // Returns: 64
|
|
123
|
+
* color.b(color.from_hex("#0000FF")) // Returns: 255
|
|
124
|
+
* color.b(color.from_hex("#FFA500")) // Returns: 0 (orange)
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export declare function b(clr: color): int;
|
|
128
|
+
/**
|
|
129
|
+
* Extracts the transparency component from a color.
|
|
130
|
+
*
|
|
131
|
+
* @param clr - The color to extract from
|
|
132
|
+
* @returns Transparency value (0-100). 0 = fully opaque, 100 = fully transparent
|
|
133
|
+
*
|
|
134
|
+
* @remarks
|
|
135
|
+
* - Returns 0 for colors without transparency (rgb format)
|
|
136
|
+
* - Converts alpha channel (0-1) to transparency (0-100)
|
|
137
|
+
* - PineScript stores the alpha as a byte (0-255) and returns an integer transparency:
|
|
138
|
+
* `color.t(color.new(c, 33.3))` is 33
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* color.t(color.rgb(255, 0, 0)) // Returns: 0 (opaque)
|
|
143
|
+
* color.t(color.rgb(255, 0, 0, 50)) // Returns: 50
|
|
144
|
+
* color.t(color.rgb(255, 0, 0, 100)) // Returns: 100 (fully transparent)
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
export declare function t(clr: color): float;
|
|
148
|
+
/**
|
|
149
|
+
* Aqua/Cyan color constant
|
|
150
|
+
* @constant {string} #00BCD4 - RGB(0, 188, 212)
|
|
151
|
+
*/
|
|
152
|
+
export declare const aqua = "#00BCD4";
|
|
153
|
+
/**
|
|
154
|
+
* Black color constant
|
|
155
|
+
* @constant {string} #363A45 - RGB(54, 58, 69)
|
|
156
|
+
*/
|
|
157
|
+
export declare const black = "#363A45";
|
|
158
|
+
/**
|
|
159
|
+
* Blue color constant
|
|
160
|
+
* @constant {string} #2962FF - RGB(41, 98, 255)
|
|
161
|
+
*/
|
|
162
|
+
export declare const blue = "#2962FF";
|
|
163
|
+
/**
|
|
164
|
+
* Fuchsia/Magenta color constant
|
|
165
|
+
* @constant {string} #E040FB - RGB(224, 64, 251)
|
|
166
|
+
*/
|
|
167
|
+
export declare const fuchsia = "#E040FB";
|
|
168
|
+
/**
|
|
169
|
+
* Gray color constant
|
|
170
|
+
* @constant {string} #787B86 - RGB(120, 123, 134)
|
|
171
|
+
*/
|
|
172
|
+
export declare const gray = "#787B86";
|
|
173
|
+
/**
|
|
174
|
+
* Green color constant (same as lime)
|
|
175
|
+
* @constant {string} #4CAF50 - RGB(76, 175, 80)
|
|
176
|
+
*/
|
|
177
|
+
export declare const green = "#4CAF50";
|
|
178
|
+
/**
|
|
179
|
+
* Lime color constant (same as green)
|
|
180
|
+
* @constant {string} #00E676 - RGB(0, 230, 118)
|
|
181
|
+
*/
|
|
182
|
+
export declare const lime = "#00E676";
|
|
183
|
+
/**
|
|
184
|
+
* Maroon color constant
|
|
185
|
+
* @constant {string} #880E4F - RGB(136, 14, 79)
|
|
186
|
+
*/
|
|
187
|
+
export declare const maroon = "#880E4F";
|
|
188
|
+
/**
|
|
189
|
+
* Navy color constant
|
|
190
|
+
* @constant {string} #311B92 - RGB(49, 27, 146)
|
|
191
|
+
*/
|
|
192
|
+
export declare const navy = "#311B92";
|
|
193
|
+
/**
|
|
194
|
+
* Olive color constant
|
|
195
|
+
* @constant {string} #808000 - RGB(128, 128, 0)
|
|
196
|
+
*/
|
|
197
|
+
export declare const olive = "#808000";
|
|
198
|
+
/**
|
|
199
|
+
* Orange color constant
|
|
200
|
+
* @constant {string} #FF9800 - RGB(255, 152, 0)
|
|
201
|
+
*/
|
|
202
|
+
export declare const orange = "#FF9800";
|
|
203
|
+
/**
|
|
204
|
+
* Purple color constant
|
|
205
|
+
* @constant {string} #9C27B0 - RGB(156, 39, 176)
|
|
206
|
+
*/
|
|
207
|
+
export declare const purple = "#9C27B0";
|
|
208
|
+
/**
|
|
209
|
+
* Red color constant
|
|
210
|
+
* @constant {string} #F23645 - RGB(242, 54, 69)
|
|
211
|
+
*/
|
|
212
|
+
export declare const red = "#F23645";
|
|
213
|
+
/**
|
|
214
|
+
* Silver color constant
|
|
215
|
+
* @constant {string} #B2B5BE - RGB(178, 181, 190)
|
|
216
|
+
*/
|
|
217
|
+
export declare const silver = "#B2B5BE";
|
|
218
|
+
/**
|
|
219
|
+
* Teal color constant
|
|
220
|
+
* @constant {string} #089981 - RGB(8, 153, 129)
|
|
221
|
+
*/
|
|
222
|
+
export declare const teal = "#089981";
|
|
223
|
+
/**
|
|
224
|
+
* White color constant
|
|
225
|
+
* @constant {string} #FFFFFF - RGB(255, 255, 255)
|
|
226
|
+
*/
|
|
227
|
+
export declare const white = "#FFFFFF";
|
|
228
|
+
/**
|
|
229
|
+
* Yellow color constant
|
|
230
|
+
* @constant {string} #FDD835 - RGB(253, 216, 53)
|
|
231
|
+
*/
|
|
232
|
+
export declare const yellow = "#FDD835";
|
|
233
|
+
/**
|
|
234
|
+
* Creates a color from a gradient based on value position.
|
|
235
|
+
*
|
|
236
|
+
* @param value - Value to calculate position-dependent color
|
|
237
|
+
* @param bottom_value - Bottom position value corresponding to bottom_color
|
|
238
|
+
* @param top_value - Top position value corresponding to top_color
|
|
239
|
+
* @param bottom_color - Bottom position color
|
|
240
|
+
* @param top_color - Top position color
|
|
241
|
+
* @returns Color calculated from linear gradient
|
|
242
|
+
*
|
|
243
|
+
* @remarks
|
|
244
|
+
* PineScript rules:
|
|
245
|
+
* - If value <= bottom_value, returns bottom_color; else if value >= top_value, returns top_color
|
|
246
|
+
* - Otherwise the colours are mixed with their transparency (premultiplied alpha, alpha as a byte); the RGB channels
|
|
247
|
+
* and the alpha are truncated. PineScript's float rounding order is not known: a channel can differ by 1 when the
|
|
248
|
+
* exact result is an integer (same RGB at both ends)
|
|
249
|
+
* - An na value or bottom_value / top_value, or bottom_value == top_value, gives a fully transparent colour
|
|
250
|
+
* - An na colour counts as fully transparent
|
|
251
|
+
* - Works with rgb(), rgba() and hex (#RRGGBB, #RRGGBBAA) colours
|
|
252
|
+
*
|
|
253
|
+
* @example
|
|
254
|
+
* ```typescript
|
|
255
|
+
* // Value at middle of range gets middle color
|
|
256
|
+
* const midColor = color.from_gradient(50, 0, 100,
|
|
257
|
+
* color.rgb(255, 0, 0), // Red at bottom
|
|
258
|
+
* color.rgb(0, 255, 0) // Green at top
|
|
259
|
+
* ); // Returns color between red and green
|
|
260
|
+
*
|
|
261
|
+
* // Value at extremes
|
|
262
|
+
* const lowColor = color.from_gradient(-10, 0, 100, red, green); // Returns red
|
|
263
|
+
* const highColor = color.from_gradient(150, 0, 100, red, green); // Returns green
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
266
|
+
export declare function from_gradient(value: float, bottom_value: float, top_value: float, bottom_color: color, top_color: color): string;
|
|
267
|
+
/**
|
|
268
|
+
* Alias for new_color function.
|
|
269
|
+
* Creates a new color with specified transparency from an existing color.
|
|
270
|
+
*
|
|
271
|
+
* @param baseColor - The base color
|
|
272
|
+
* @param transp - Transparency value (0-100). 0 = fully opaque, 100 = fully transparent
|
|
273
|
+
* @returns New color with applied transparency
|
|
274
|
+
*
|
|
275
|
+
* @remarks
|
|
276
|
+
* This is an alias for `new_color()` to match PineScript's `color.new()` syntax.
|
|
277
|
+
*
|
|
278
|
+
* @example
|
|
279
|
+
* ```typescript
|
|
280
|
+
* const redColor = color.rgb(255, 0, 0);
|
|
281
|
+
* const transparentRed = color.new(redColor, 50); // 50% transparent red
|
|
282
|
+
* ```
|
|
283
|
+
*/
|
|
284
|
+
export { new_color as new };
|
|
285
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/color/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUrF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAUvG;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CASnE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAIxE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,GAAG,CAEjC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,GAAG,CAEjC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,GAAG,CAEjC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK,CAGnC;AAmCD;;;GAGG;AACH,eAAO,MAAM,IAAI,YAAY,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,KAAK,YAAY,CAAC;AAE/B;;;GAGG;AACH,eAAO,MAAM,IAAI,YAAY,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,OAAO,YAAY,CAAC;AAEjC;;;GAGG;AACH,eAAO,MAAM,IAAI,YAAY,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,KAAK,YAAY,CAAC;AAE/B;;;GAGG;AACH,eAAO,MAAM,IAAI,YAAY,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,MAAM,YAAY,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,IAAI,YAAY,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,KAAK,YAAY,CAAC;AAE/B;;;GAGG;AACH,eAAO,MAAM,MAAM,YAAY,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,MAAM,YAAY,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,GAAG,YAAY,CAAC;AAE7B;;;GAGG;AACH,eAAO,MAAM,MAAM,YAAY,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,IAAI,YAAY,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,KAAK,YAAY,CAAC;AAE/B;;;GAGG;AACH,eAAO,MAAM,MAAM,YAAY,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,KAAK,EACnB,SAAS,EAAE,KAAK,EAChB,YAAY,EAAE,KAAK,EACnB,SAAS,EAAE,KAAK,GACf,MAAM,CAqBR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,SAAS,IAAI,GAAG,EAAE,CAAC"}
|