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,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Time zone resolution for the calendar functions.
|
|
3
|
+
*
|
|
4
|
+
* PineScript accepts two time zone notations:
|
|
5
|
+
* - UTC/GMT offset notation: "UTC", "UTC-5", "UTC+05:30", "GMT+0530", "GMT+05:30:00", up to ±18:00
|
|
6
|
+
* - IANA time zone database names, case-sensitive: "America/New_York", "Etc/UTC", "US/Eastern", "CET"
|
|
7
|
+
*
|
|
8
|
+
* "utc+2", "america/new_york", "UTC+5:3", "UTC+5:30:15", "GMT+18:01", "EST", "MST" and "HST" are
|
|
9
|
+
* errors in PineScript, and so here.
|
|
10
|
+
*
|
|
11
|
+
* Offsets of IANA zones (daylight saving time and historical changes included)
|
|
12
|
+
* come from the host's `Intl.DateTimeFormat`, so no time zone data ships with the library.
|
|
13
|
+
*/
|
|
14
|
+
const MS_PER_SECOND = 1000;
|
|
15
|
+
const MS_PER_DAY = 86_400_000;
|
|
16
|
+
const MAX_OFFSET_SECONDS = 18 * 3600;
|
|
17
|
+
const OFFSET_NOTATION = /^(?:UTC|GMT)(?:([+-])(\d{1,2})(?::?(\d{2})(?::?(\d{2}))?)?)?$/;
|
|
18
|
+
/** Time zone database names that PineScript rejects although `Intl` accepts them. */
|
|
19
|
+
const REJECTED_NAMES = new Set(['EST', 'MST', 'HST']);
|
|
20
|
+
let canonicalNames;
|
|
21
|
+
/** False when `name` is a wrong-case spelling of a time zone name (`Intl` matches names case-insensitively). */
|
|
22
|
+
function hasTimeZoneCase(name) {
|
|
23
|
+
if (name.split('/').some((segment) => !/^[A-Z]/.test(segment)))
|
|
24
|
+
return false;
|
|
25
|
+
canonicalNames ??= new Map(Intl.supportedValuesOf('timeZone').map((n) => [n.toLowerCase(), n]));
|
|
26
|
+
const canonical = canonicalNames.get(name.toLowerCase());
|
|
27
|
+
return canonical === undefined || canonical === name;
|
|
28
|
+
}
|
|
29
|
+
const MS_PER_HOUR = 3_600_000;
|
|
30
|
+
/** Cached hours per zone before the cache restarts (about 11 years of hours) */
|
|
31
|
+
const MAX_CACHED_HOURS = 100_000;
|
|
32
|
+
const zones = new Map();
|
|
33
|
+
function resolveZone(timezone) {
|
|
34
|
+
let zone = zones.get(timezone);
|
|
35
|
+
if (zone)
|
|
36
|
+
return zone;
|
|
37
|
+
const invalid = () => new RangeError(`Invalid time zone "${timezone}": use UTC/GMT offset notation ("UTC-5", "GMT+0530") or an IANA name ("America/New_York")`);
|
|
38
|
+
const m = OFFSET_NOTATION.exec(timezone);
|
|
39
|
+
if (m) {
|
|
40
|
+
const [, sign, h = '0', mi = '0', s] = m;
|
|
41
|
+
const minutes = Number(mi);
|
|
42
|
+
const seconds = s === undefined ? 0 : Number(s);
|
|
43
|
+
if (minutes > 59 || seconds > 59 || (s !== undefined && h.length !== 2))
|
|
44
|
+
throw invalid();
|
|
45
|
+
const offsetSeconds = Number(h) * 3600 + minutes * 60 + seconds;
|
|
46
|
+
if (offsetSeconds > MAX_OFFSET_SECONDS)
|
|
47
|
+
throw invalid();
|
|
48
|
+
zone = { kind: 'fixed', offsetMs: (sign === '-' ? -offsetSeconds : offsetSeconds) * MS_PER_SECOND };
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
if (REJECTED_NAMES.has(timezone) || !hasTimeZoneCase(timezone))
|
|
52
|
+
throw invalid();
|
|
53
|
+
let format;
|
|
54
|
+
try {
|
|
55
|
+
format = new Intl.DateTimeFormat('en-US', {
|
|
56
|
+
timeZone: timezone,
|
|
57
|
+
hourCycle: 'h23',
|
|
58
|
+
year: 'numeric',
|
|
59
|
+
month: 'numeric',
|
|
60
|
+
day: 'numeric',
|
|
61
|
+
hour: 'numeric',
|
|
62
|
+
minute: 'numeric',
|
|
63
|
+
second: 'numeric',
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
throw invalid();
|
|
68
|
+
}
|
|
69
|
+
zone = { kind: 'iana', format, hours: new Map() };
|
|
70
|
+
}
|
|
71
|
+
zones.set(timezone, zone);
|
|
72
|
+
return zone;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Offset of the zone from UTC at instant `time`, in milliseconds (local = UTC + offset).
|
|
76
|
+
* An offset change happens at most once in a UTC hour, so when the first and the last second of the hour have the
|
|
77
|
+
* same offset, the whole hour has it: it is computed once and cached.
|
|
78
|
+
*/
|
|
79
|
+
function offsetAt(zone, time) {
|
|
80
|
+
if (zone.kind === 'fixed')
|
|
81
|
+
return zone.offsetMs;
|
|
82
|
+
const hour = Math.floor(time / MS_PER_HOUR);
|
|
83
|
+
let offset = zone.hours.get(hour);
|
|
84
|
+
if (offset === undefined) {
|
|
85
|
+
const first = formattedOffset(zone.format, hour * MS_PER_HOUR);
|
|
86
|
+
const last = formattedOffset(zone.format, hour * MS_PER_HOUR + MS_PER_HOUR - MS_PER_SECOND);
|
|
87
|
+
offset = first === last ? first : null;
|
|
88
|
+
if (zone.hours.size >= MAX_CACHED_HOURS)
|
|
89
|
+
zone.hours.clear();
|
|
90
|
+
zone.hours.set(hour, offset);
|
|
91
|
+
}
|
|
92
|
+
return offset ?? formattedOffset(zone.format, time);
|
|
93
|
+
}
|
|
94
|
+
/** Offset of the zone at instant `time` (whole second), from the host's `Intl` time zone data. */
|
|
95
|
+
function formattedOffset(format, time) {
|
|
96
|
+
const wholeSecond = Math.floor(time / 1000) * 1000;
|
|
97
|
+
const f = {};
|
|
98
|
+
for (const part of format.formatToParts(wholeSecond)) {
|
|
99
|
+
if (part.type !== 'literal')
|
|
100
|
+
f[part.type] = Number(part.value);
|
|
101
|
+
}
|
|
102
|
+
const local = Date.UTC(f.year, f.month - 1, f.day, f.hour, f.minute, f.second);
|
|
103
|
+
return local - wholeSecond;
|
|
104
|
+
}
|
|
105
|
+
/** Offset of `timezone` from UTC at `time`, in milliseconds (local = UTC + offset). */
|
|
106
|
+
export function zoneOffset(time, timezone) {
|
|
107
|
+
return offsetAt(resolveZone(timezone), time);
|
|
108
|
+
}
|
|
109
|
+
/** Splits a UNIX time (ms) into calendar fields in `timezone`. */
|
|
110
|
+
export function zonedFields(time, timezone) {
|
|
111
|
+
const local = new Date(time + offsetAt(resolveZone(timezone), time));
|
|
112
|
+
return {
|
|
113
|
+
year: local.getUTCFullYear(),
|
|
114
|
+
month: local.getUTCMonth() + 1,
|
|
115
|
+
day: local.getUTCDate(),
|
|
116
|
+
hour: local.getUTCHours(),
|
|
117
|
+
minute: local.getUTCMinutes(),
|
|
118
|
+
second: local.getUTCSeconds(),
|
|
119
|
+
dayOfWeek: local.getUTCDay() + 1,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Converts a wall-clock date and time in `timezone` to a UNIX time (ms).
|
|
124
|
+
* Out-of-range fields roll over like `Date.UTC` (month 13 is January of the next year).
|
|
125
|
+
*
|
|
126
|
+
* As in PineScript: wall-clock times that occur twice (end of daylight saving time)
|
|
127
|
+
* resolve to the later instant, and wall-clock times that do not exist (start of
|
|
128
|
+
* daylight saving time) are shifted forward by the length of the gap.
|
|
129
|
+
*/
|
|
130
|
+
export function zonedToUnix(timezone, year, month, day, hour = 0, minute = 0, second = 0) {
|
|
131
|
+
const zone = resolveZone(timezone);
|
|
132
|
+
const local = Date.UTC(year, month - 1, day, hour, minute, second);
|
|
133
|
+
if (zone.kind === 'fixed')
|
|
134
|
+
return local - zone.offsetMs;
|
|
135
|
+
// At most one offset transition happens within a day of `local`: the offsets
|
|
136
|
+
// one day before and one day after are the two candidates.
|
|
137
|
+
const before = offsetAt(zone, local - MS_PER_DAY);
|
|
138
|
+
const after = offsetAt(zone, local + MS_PER_DAY);
|
|
139
|
+
const candidates = [local - before, local - after].filter((t) => local - offsetAt(zone, t) === t);
|
|
140
|
+
if (candidates.length)
|
|
141
|
+
return Math.max(...candidates);
|
|
142
|
+
return local - before;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=timezone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timezone.js","sourceRoot":"","sources":["../../../src/time/timezone.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,UAAU,GAAG,UAAU,CAAC;AAC9B,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC;AAErC,MAAM,eAAe,GAAG,+DAA+D,CAAC;AAExF,qFAAqF;AACrF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAEtD,IAAI,cAA+C,CAAC;AAEpD,gHAAgH;AAChH,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7E,cAAc,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,OAAO,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC;AACvD,CAAC;AAWD,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEtC,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,OAAO,GAAG,GAAG,EAAE,CACnB,IAAI,UAAU,CACZ,sBAAsB,QAAQ,2FAA2F,CAC1H,CAAC;IACJ,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,CAAC;QACN,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;YAAE,MAAM,OAAO,EAAE,CAAC;QACzF,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC;QAChE,IAAI,aAAa,GAAG,kBAAkB;YAAE,MAAM,OAAO,EAAE,CAAC;QACxD,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,aAAa,EAAE,CAAC;IACtG,CAAC;SAAM,CAAC;QACN,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAAE,MAAM,OAAO,EAAE,CAAC;QAChF,IAAI,MAA2B,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;gBACxC,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,KAAK;gBAChB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IACpD,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,IAAU,EAAE,IAAY;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC;IAC5C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC,CAAC;QAC5F,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACvC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,gBAAgB;YAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,kGAAkG;AAClG,SAAS,eAAe,CAAC,MAA2B,EAAE,IAAY;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnD,MAAM,CAAC,GAA2B,EAAE,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QACrD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAK,EAAE,CAAC,CAAC,KAAM,GAAG,CAAC,EAAE,CAAC,CAAC,GAAI,EAAE,CAAC,CAAC,IAAK,EAAE,CAAC,CAAC,MAAO,EAAE,CAAC,CAAC,MAAO,CAAC,CAAC;IACrF,OAAO,KAAK,GAAG,WAAW,CAAC;AAC7B,CAAC;AAgBD,uFAAuF;AACvF,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,QAAgB;IACvD,OAAO,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,QAAgB;IACxD,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACrE,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,cAAc,EAAE;QAC5B,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QAC9B,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE;QACvB,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE;QACzB,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE;QAC7B,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE;QAC7B,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC;KACjC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,IAAY,EACZ,KAAa,EACb,GAAW,EACX,OAAe,CAAC,EAChB,SAAiB,CAAC,EAClB,SAAiB,CAAC;IAElB,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;IAExD,6EAA6E;IAC7E,2DAA2D;IAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAClG,IAAI,UAAU,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IACtD,OAAO,KAAK,GAAG,MAAM,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeframe namespace
|
|
3
|
+
* Mirrors PineScript's timeframe string functions.
|
|
4
|
+
*
|
|
5
|
+
* Timeframe strings: a multiplier and a unit letter, "S" seconds, "D" days,
|
|
6
|
+
* "W" weeks, "M" months, "T" ticks, no letter for minutes ("60" is one hour, "1H" is not valid).
|
|
7
|
+
* Without a multiplier, 1 is used ("D" is "1D").
|
|
8
|
+
*/
|
|
9
|
+
import type { int, simple_string } from '../types/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Converts a timeframe string into seconds.
|
|
12
|
+
*
|
|
13
|
+
* As in PineScript: months count 2,628,003 seconds (365/12 days), any multiplier is
|
|
14
|
+
* accepted ("13M", "1441", "7S"), and tick timeframes ("1T") give NaN.
|
|
15
|
+
*
|
|
16
|
+
* @param timeframe - Timeframe string, e.g. "1", "60", "1D", "W", "3M", "30S"
|
|
17
|
+
* @returns Number of seconds in the timeframe
|
|
18
|
+
* @throws RangeError for an empty string (the chart timeframe is not known here) and for
|
|
19
|
+
* strings that are not timeframes ("1H", "1d")
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* timeframe.in_seconds('60'); // 3600
|
|
24
|
+
* timeframe.in_seconds('1D'); // 86400
|
|
25
|
+
* timeframe.in_seconds('M'); // 2628003
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function in_seconds(timeframe: simple_string): int;
|
|
29
|
+
/**
|
|
30
|
+
* Converts a number of seconds into a valid timeframe string.
|
|
31
|
+
*
|
|
32
|
+
* PineScript rules:
|
|
33
|
+
* - when no valid timeframe has exactly this duration, the next higher one is returned:
|
|
34
|
+
* 1 second or less gives "1S", 2-5 seconds give "5S", 31-60 seconds give "1",
|
|
35
|
+
* 604,799 seconds give "7D"
|
|
36
|
+
* - when several timeframes have exactly this duration, the larger unit is used:
|
|
37
|
+
* 604,800 seconds give "1W", not "7D"; months are used for exact multiples of 2,628,003 seconds
|
|
38
|
+
* - from 31,536,000 seconds (365 days) the result is "12M"
|
|
39
|
+
*
|
|
40
|
+
* @param seconds - Number of seconds
|
|
41
|
+
* @returns Timeframe string
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* timeframe.from_seconds(3600); // "60"
|
|
46
|
+
* timeframe.from_seconds(86400); // "1D"
|
|
47
|
+
* timeframe.from_seconds(604800); // "1W"
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function from_seconds(seconds: int): simple_string;
|
|
51
|
+
/** Properties of a chart timeframe, as PineScript's `timeframe.*` variables give them. */
|
|
52
|
+
export interface TimeframeInfo {
|
|
53
|
+
/** Timeframe string with its multiplier: "1D", "60", "1S" (PineScript `timeframe.period`) */
|
|
54
|
+
period: string;
|
|
55
|
+
multiplier: number;
|
|
56
|
+
isintraday: boolean;
|
|
57
|
+
isdaily: boolean;
|
|
58
|
+
isweekly: boolean;
|
|
59
|
+
ismonthly: boolean;
|
|
60
|
+
isminutes: boolean;
|
|
61
|
+
isseconds: boolean;
|
|
62
|
+
isticks: boolean;
|
|
63
|
+
isdwm: boolean;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Describes a chart timeframe like PineScript's `timeframe.*` variables.
|
|
67
|
+
* The period always carries its multiplier: "D" becomes "1D".
|
|
68
|
+
*
|
|
69
|
+
* @param timeframe - Chart timeframe string, e.g. "5", "60", "D", "1W", "30S"
|
|
70
|
+
* @throws RangeError for strings that are not timeframes
|
|
71
|
+
*/
|
|
72
|
+
export declare function info(timeframe: simple_string): TimeframeInfo;
|
|
73
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/timeframe/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAqB5D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,aAAa,GAAG,GAAG,CAaxD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,aAAa,CAiBxD;AAED,0FAA0F;AAC1F,MAAM,WAAW,aAAa;IAC5B,6FAA6F;IAC7F,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,aAAa,CAkB5D"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeframe namespace
|
|
3
|
+
* Mirrors PineScript's timeframe string functions.
|
|
4
|
+
*
|
|
5
|
+
* Timeframe strings: a multiplier and a unit letter, "S" seconds, "D" days,
|
|
6
|
+
* "W" weeks, "M" months, "T" ticks, no letter for minutes ("60" is one hour, "1H" is not valid).
|
|
7
|
+
* Without a multiplier, 1 is used ("D" is "1D").
|
|
8
|
+
*/
|
|
9
|
+
const SECONDS_PER_MINUTE = 60;
|
|
10
|
+
const SECONDS_PER_DAY = 86_400;
|
|
11
|
+
const SECONDS_PER_WEEK = 604_800;
|
|
12
|
+
/** PineScript uses 365/12 days (30.4167) for one month. */
|
|
13
|
+
const SECONDS_PER_MONTH = 2_628_003;
|
|
14
|
+
/** From 365 days, `from_seconds` returns "12M". */
|
|
15
|
+
const SECONDS_365_DAYS = 365 * SECONDS_PER_DAY;
|
|
16
|
+
const UNIT_SECONDS = {
|
|
17
|
+
S: 1,
|
|
18
|
+
'': SECONDS_PER_MINUTE,
|
|
19
|
+
D: SECONDS_PER_DAY,
|
|
20
|
+
W: SECONDS_PER_WEEK,
|
|
21
|
+
M: SECONDS_PER_MONTH,
|
|
22
|
+
};
|
|
23
|
+
/** Second-based timeframes that `from_seconds` can return. */
|
|
24
|
+
const SECOND_TIMEFRAMES = [1, 5, 10, 15, 30];
|
|
25
|
+
/**
|
|
26
|
+
* Converts a timeframe string into seconds.
|
|
27
|
+
*
|
|
28
|
+
* As in PineScript: months count 2,628,003 seconds (365/12 days), any multiplier is
|
|
29
|
+
* accepted ("13M", "1441", "7S"), and tick timeframes ("1T") give NaN.
|
|
30
|
+
*
|
|
31
|
+
* @param timeframe - Timeframe string, e.g. "1", "60", "1D", "W", "3M", "30S"
|
|
32
|
+
* @returns Number of seconds in the timeframe
|
|
33
|
+
* @throws RangeError for an empty string (the chart timeframe is not known here) and for
|
|
34
|
+
* strings that are not timeframes ("1H", "1d")
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* timeframe.in_seconds('60'); // 3600
|
|
39
|
+
* timeframe.in_seconds('1D'); // 86400
|
|
40
|
+
* timeframe.in_seconds('M'); // 2628003
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export function in_seconds(timeframe) {
|
|
44
|
+
const text = timeframe.trim();
|
|
45
|
+
if (text === '') {
|
|
46
|
+
throw new RangeError('timeframe.in_seconds() needs a timeframe: the chart timeframe is not known here');
|
|
47
|
+
}
|
|
48
|
+
// Multiplier before the unit ("30S"), or after it ("S30"), as PineScript accepts both.
|
|
49
|
+
const before = /^(\d*)([SDWMT]?)$/.exec(text);
|
|
50
|
+
const after = before ? null : /^([SDWMT])(\d+)$/.exec(text);
|
|
51
|
+
if (!before && !after)
|
|
52
|
+
throw new RangeError(`Invalid timeframe "${timeframe}"`);
|
|
53
|
+
const [digits, unit] = before ? [before[1], before[2]] : [after[2], after[1]];
|
|
54
|
+
if (unit === 'T')
|
|
55
|
+
return NaN;
|
|
56
|
+
const multiplier = digits === '' ? 1 : Number(digits);
|
|
57
|
+
return multiplier * UNIT_SECONDS[unit];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Converts a number of seconds into a valid timeframe string.
|
|
61
|
+
*
|
|
62
|
+
* PineScript rules:
|
|
63
|
+
* - when no valid timeframe has exactly this duration, the next higher one is returned:
|
|
64
|
+
* 1 second or less gives "1S", 2-5 seconds give "5S", 31-60 seconds give "1",
|
|
65
|
+
* 604,799 seconds give "7D"
|
|
66
|
+
* - when several timeframes have exactly this duration, the larger unit is used:
|
|
67
|
+
* 604,800 seconds give "1W", not "7D"; months are used for exact multiples of 2,628,003 seconds
|
|
68
|
+
* - from 31,536,000 seconds (365 days) the result is "12M"
|
|
69
|
+
*
|
|
70
|
+
* @param seconds - Number of seconds
|
|
71
|
+
* @returns Timeframe string
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* timeframe.from_seconds(3600); // "60"
|
|
76
|
+
* timeframe.from_seconds(86400); // "1D"
|
|
77
|
+
* timeframe.from_seconds(604800); // "1W"
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export function from_seconds(seconds) {
|
|
81
|
+
if (Number.isNaN(seconds))
|
|
82
|
+
throw new RangeError('timeframe.from_seconds() needs a number of seconds');
|
|
83
|
+
if (seconds >= SECONDS_365_DAYS)
|
|
84
|
+
return '12M';
|
|
85
|
+
// Exact durations, larger unit first.
|
|
86
|
+
if (seconds > 0) {
|
|
87
|
+
if (seconds % SECONDS_PER_MONTH === 0)
|
|
88
|
+
return `${seconds / SECONDS_PER_MONTH}M`;
|
|
89
|
+
if (seconds % SECONDS_PER_WEEK === 0)
|
|
90
|
+
return `${seconds / SECONDS_PER_WEEK}W`;
|
|
91
|
+
if (seconds % SECONDS_PER_DAY === 0)
|
|
92
|
+
return `${seconds / SECONDS_PER_DAY}D`;
|
|
93
|
+
if (seconds % SECONDS_PER_MINUTE === 0 && seconds < SECONDS_PER_DAY)
|
|
94
|
+
return `${seconds / SECONDS_PER_MINUTE}`;
|
|
95
|
+
}
|
|
96
|
+
// Next higher valid timeframe.
|
|
97
|
+
const second = SECOND_TIMEFRAMES.find((m) => seconds <= m);
|
|
98
|
+
if (second !== undefined)
|
|
99
|
+
return `${second}S`;
|
|
100
|
+
if (seconds < SECONDS_PER_DAY)
|
|
101
|
+
return `${Math.ceil(seconds / SECONDS_PER_MINUTE)}`;
|
|
102
|
+
return `${Math.ceil(seconds / SECONDS_PER_DAY)}D`;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Describes a chart timeframe like PineScript's `timeframe.*` variables.
|
|
106
|
+
* The period always carries its multiplier: "D" becomes "1D".
|
|
107
|
+
*
|
|
108
|
+
* @param timeframe - Chart timeframe string, e.g. "5", "60", "D", "1W", "30S"
|
|
109
|
+
* @throws RangeError for strings that are not timeframes
|
|
110
|
+
*/
|
|
111
|
+
export function info(timeframe) {
|
|
112
|
+
const text = timeframe.trim();
|
|
113
|
+
const m = /^(\d*)([SDWMT]?)$/.exec(text);
|
|
114
|
+
if (!m || text === '')
|
|
115
|
+
throw new RangeError(`Invalid timeframe "${timeframe}"`);
|
|
116
|
+
const unit = m[2];
|
|
117
|
+
const multiplier = m[1] === '' ? 1 : Number(m[1]);
|
|
118
|
+
return {
|
|
119
|
+
period: unit === '' ? String(multiplier) : `${multiplier}${unit}`,
|
|
120
|
+
multiplier,
|
|
121
|
+
isintraday: unit === '' || unit === 'S' || unit === 'T',
|
|
122
|
+
isdaily: unit === 'D',
|
|
123
|
+
isweekly: unit === 'W',
|
|
124
|
+
ismonthly: unit === 'M',
|
|
125
|
+
isminutes: unit === '',
|
|
126
|
+
isseconds: unit === 'S',
|
|
127
|
+
isticks: unit === 'T',
|
|
128
|
+
isdwm: unit === 'D' || unit === 'W' || unit === 'M',
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/timeframe/index.ts"],"names":[],"mappings":"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"}
|