oakscriptjs 0.8.2 → 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 -7981
- package/dist/index.d.ts +0 -64
- package/dist/index.d.ts.map +0 -1
- package/dist/index.mjs +0 -7964
- 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 -126
- package/dist/runtime/types.d.ts.map +0 -1
- package/dist/script/index.cjs +0 -6377
- package/dist/script/index.d.ts +0 -713
- package/dist/script/index.d.ts.map +0 -1
- package/dist/script/index.mjs +0 -6360
- 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/running-sum.d.ts +0 -3
- package/dist/ta/running-sum.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 -132
- 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,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trading calendar: the session periods of each trading day of a symbol, from the symbol session
|
|
3
|
+
* information (issue #100).
|
|
4
|
+
*
|
|
5
|
+
* Session format (symbol session information, also PineScript session strings):
|
|
6
|
+
* - periods "HHMM-HHMM", several separated by commas; "24x7" is the whole day, every day
|
|
7
|
+
* - a period whose end is not after its start ("1700-1600", "1700-1700") starts the day before the
|
|
8
|
+
* trading day: the session that opens Sunday 17:00 is Monday's
|
|
9
|
+
* - "HHMMF<n>" moves a time <n> days before the trading day ("1700F2-1200F1")
|
|
10
|
+
* - optional days after ":" (1 = Sunday ... 7 = Saturday); without days a symbol session trades Monday to
|
|
11
|
+
* Friday ("24x7": every day), and a PineScript session string follows PineScript's rules (one period:
|
|
12
|
+
* every day; several periods: Monday to Friday)
|
|
13
|
+
* - "#YYYYMMDD/<session>" changes the session from that date ("0900-1746#20251201/0800-2200")
|
|
14
|
+
* - corrections ("session-correction"): "<session>:<dates>;dayoff:<dates>" replace the session of these
|
|
15
|
+
* dates (early closes, days off); holidays ("session_holidays") are dates without session
|
|
16
|
+
*/
|
|
17
|
+
/** Session information of a symbol (hours, corrections, holidays). */
|
|
18
|
+
export interface SessionSpec {
|
|
19
|
+
/** Session hours: "0930-1600", "1700-1600", "24x7", "0400-2000" ... */
|
|
20
|
+
session: string;
|
|
21
|
+
/** Exceptions by date (symbol info "session-correction"): "0930-1300:20251128,20251224;dayoff:20250109" */
|
|
22
|
+
corrections?: string;
|
|
23
|
+
/** Exchange holidays as "YYYYMMDD" (symbol info "session_holidays"), comma-separated or as an array */
|
|
24
|
+
holidays?: string | string[];
|
|
25
|
+
}
|
|
26
|
+
/** Date as YYYYMMDD. */
|
|
27
|
+
export type DateNum = number;
|
|
28
|
+
export declare const toDateNum: (y: number, m: number, d: number) => DateNum;
|
|
29
|
+
export declare const addDays: (date: DateNum, n: number) => DateNum;
|
|
30
|
+
/** 1 = Sunday ... 7 = Saturday */
|
|
31
|
+
export declare const weekdayOf: (date: DateNum) => number;
|
|
32
|
+
/** 00:00 UTC of the date, in ms (PineScript `time_tradingday`). */
|
|
33
|
+
export declare const dateUtcMs: (date: DateNum) => number;
|
|
34
|
+
/** Session periods of every trading day of a symbol, as UNIX times (ms). */
|
|
35
|
+
export declare class TradingCalendar {
|
|
36
|
+
readonly timezone: string;
|
|
37
|
+
private readonly versions;
|
|
38
|
+
private readonly corrections;
|
|
39
|
+
private readonly holidays;
|
|
40
|
+
private readonly cache;
|
|
41
|
+
/**
|
|
42
|
+
* @param timezone - Time zone of the session hours (the exchange time zone)
|
|
43
|
+
* @param spec - Session information (hours, corrections, holidays)
|
|
44
|
+
* @param rule - Days without ":days": 'symbol' (Monday to Friday) or 'pine' (PineScript session strings)
|
|
45
|
+
*/
|
|
46
|
+
constructor(timezone: string, spec: SessionSpec, rule?: 'symbol' | 'pine');
|
|
47
|
+
/** Session periods [start, end) of the trading day `date`; empty when the day has no session. */
|
|
48
|
+
periods(date: DateNum): Array<[number, number]>;
|
|
49
|
+
isTradingDay(date: DateNum): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Trading day and period of a time: the period that contains it, else the last period that started
|
|
52
|
+
* before it. Null when no trading day is found near the time.
|
|
53
|
+
*/
|
|
54
|
+
locate(time: number): {
|
|
55
|
+
date: DateNum;
|
|
56
|
+
index: number;
|
|
57
|
+
inside: boolean;
|
|
58
|
+
} | null;
|
|
59
|
+
/** First trading day in [from, to] (dates), or null. */
|
|
60
|
+
firstTradingDay(from: DateNum, to: DateNum): DateNum | null;
|
|
61
|
+
/** Last trading day in [from, to] (dates), or null. */
|
|
62
|
+
lastTradingDay(from: DateNum, to: DateNum): DateNum | null;
|
|
63
|
+
}
|
|
64
|
+
/** Monday of the week of `date` (weeks run Monday to Sunday). */
|
|
65
|
+
export declare const weekStart: (date: DateNum) => DateNum;
|
|
66
|
+
/** First day of the month of `date`. */
|
|
67
|
+
export declare const monthStart: (date: DateNum) => DateNum;
|
|
68
|
+
/** Last day of the month of `date`. */
|
|
69
|
+
export declare const monthEnd: (date: DateNum) => DateNum;
|
|
70
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/session/calendar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,2GAA2G;IAC3G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uGAAuG;IACvG,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC9B;AAED,wBAAwB;AACxB,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAkB7B,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,OAAkC,CAAC;AAM/F,eAAO,MAAM,OAAO,GAAI,MAAM,OAAO,EAAE,GAAG,MAAM,KAAG,OAAgD,CAAC;AACpG,kCAAkC;AAClC,eAAO,MAAM,SAAS,GAAI,MAAM,OAAO,KAAG,MAA+C,CAAC;AAC1F,mEAAmE;AACnE,eAAO,MAAM,SAAS,SATD,OAAO,KAAG,MASD,CAAC;AAqC/B,4EAA4E;AAC5E,qBAAa,eAAe;IAYxB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAX3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuC;IACnE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+C;IAErE;;;;OAIG;gBAEQ,QAAQ,EAAE,MAAM,EACzB,IAAI,EAAE,WAAW,EACjB,IAAI,GAAE,QAAQ,GAAG,MAAiB;IAmBpC,iGAAiG;IACjG,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAsB/C,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAIpC;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAoB9E,wDAAwD;IACxD,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI;IAK3D,uDAAuD;IACvD,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI;CAI3D;AAED,iEAAiE;AACjE,eAAO,MAAM,SAAS,GAAI,MAAM,OAAO,KAAG,OAAsD,CAAC;AACjG,wCAAwC;AACxC,eAAO,MAAM,UAAU,GAAI,MAAM,OAAO,KAAG,OAA2C,CAAC;AACvF,uCAAuC;AACvC,eAAO,MAAM,QAAQ,GAAI,MAAM,OAAO,KAAG,OAAiE,CAAC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trading calendar: the session periods of each trading day of a symbol, from the symbol session
|
|
3
|
+
* information (issue #100).
|
|
4
|
+
*
|
|
5
|
+
* Session format (symbol session information, also PineScript session strings):
|
|
6
|
+
* - periods "HHMM-HHMM", several separated by commas; "24x7" is the whole day, every day
|
|
7
|
+
* - a period whose end is not after its start ("1700-1600", "1700-1700") starts the day before the
|
|
8
|
+
* trading day: the session that opens Sunday 17:00 is Monday's
|
|
9
|
+
* - "HHMMF<n>" moves a time <n> days before the trading day ("1700F2-1200F1")
|
|
10
|
+
* - optional days after ":" (1 = Sunday ... 7 = Saturday); without days a symbol session trades Monday to
|
|
11
|
+
* Friday ("24x7": every day), and a PineScript session string follows PineScript's rules (one period:
|
|
12
|
+
* every day; several periods: Monday to Friday)
|
|
13
|
+
* - "#YYYYMMDD/<session>" changes the session from that date ("0900-1746#20251201/0800-2200")
|
|
14
|
+
* - corrections ("session-correction"): "<session>:<dates>;dayoff:<dates>" replace the session of these
|
|
15
|
+
* dates (early closes, days off); holidays ("session_holidays") are dates without session
|
|
16
|
+
*/
|
|
17
|
+
import { zonedFields, zonedToUnix } from '../time/timezone.js';
|
|
18
|
+
export const toDateNum = (y, m, d) => y * 10000 + m * 100 + d;
|
|
19
|
+
const utcOf = (date) => Date.UTC(Math.floor(date / 10000), Math.floor(date / 100) % 100 - 1, date % 100);
|
|
20
|
+
const fromUtc = (ms) => {
|
|
21
|
+
const d = new Date(ms);
|
|
22
|
+
return toDateNum(d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate());
|
|
23
|
+
};
|
|
24
|
+
export const addDays = (date, n) => fromUtc(utcOf(date) + n * 86_400_000);
|
|
25
|
+
/** 1 = Sunday ... 7 = Saturday */
|
|
26
|
+
export const weekdayOf = (date) => new Date(utcOf(date)).getUTCDay() + 1;
|
|
27
|
+
/** 00:00 UTC of the date, in ms (PineScript `time_tradingday`). */
|
|
28
|
+
export const dateUtcMs = utcOf;
|
|
29
|
+
function parseTime(token, spec) {
|
|
30
|
+
const m = /^(\d{2})(\d{2})(?:F(\d+))?$/.exec(token.trim());
|
|
31
|
+
if (!m)
|
|
32
|
+
throw new SyntaxError(`Invalid session "${spec}"`);
|
|
33
|
+
return { minutes: Number(m[1]) * 60 + Number(m[2]), offset: m[3] === undefined ? undefined : Number(m[3]) };
|
|
34
|
+
}
|
|
35
|
+
function parsePeriods(text, spec) {
|
|
36
|
+
if (text.trim() === '24x7')
|
|
37
|
+
return [{ start: 0, end: 1440, startOffset: 0, endOffset: 0 }];
|
|
38
|
+
return text.split(',').map((p) => {
|
|
39
|
+
const [a = '', b = ''] = p.split('-');
|
|
40
|
+
const s = parseTime(a, spec);
|
|
41
|
+
const e = parseTime(b, spec);
|
|
42
|
+
if (s.minutes === 0 && e.minutes === 0 && s.offset === undefined && e.offset === undefined) {
|
|
43
|
+
return { start: 0, end: 1440, startOffset: 0, endOffset: 0 };
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
start: s.minutes,
|
|
47
|
+
end: e.minutes,
|
|
48
|
+
startOffset: s.offset ?? (e.minutes <= s.minutes ? 1 : 0),
|
|
49
|
+
endOffset: e.offset ?? 0,
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function parseVersion(text, from, spec, rule) {
|
|
54
|
+
const [periodText = '', dayText] = text.trim().split(':');
|
|
55
|
+
const periods = parsePeriods(periodText, spec);
|
|
56
|
+
const allDays = periodText.trim() === '24x7' || (rule === 'pine' && periods.length === 1);
|
|
57
|
+
const digits = dayText ?? (allDays ? '1234567' : '23456');
|
|
58
|
+
if (!/^[1-7]+$/.test(digits))
|
|
59
|
+
throw new SyntaxError(`Invalid session days in "${spec}"`);
|
|
60
|
+
const days = new Array(8).fill(false);
|
|
61
|
+
for (const d of digits)
|
|
62
|
+
days[Number(d)] = true;
|
|
63
|
+
return { from, periods, days };
|
|
64
|
+
}
|
|
65
|
+
/** Session periods of every trading day of a symbol, as UNIX times (ms). */
|
|
66
|
+
export class TradingCalendar {
|
|
67
|
+
timezone;
|
|
68
|
+
versions;
|
|
69
|
+
corrections = new Map();
|
|
70
|
+
holidays;
|
|
71
|
+
cache = new Map();
|
|
72
|
+
/**
|
|
73
|
+
* @param timezone - Time zone of the session hours (the exchange time zone)
|
|
74
|
+
* @param spec - Session information (hours, corrections, holidays)
|
|
75
|
+
* @param rule - Days without ":days": 'symbol' (Monday to Friday) or 'pine' (PineScript session strings)
|
|
76
|
+
*/
|
|
77
|
+
constructor(timezone, spec, rule = 'symbol') {
|
|
78
|
+
this.timezone = timezone;
|
|
79
|
+
const [first = '', ...changes] = spec.session.split('#');
|
|
80
|
+
this.versions = [parseVersion(first, 0, spec.session, rule)];
|
|
81
|
+
for (const change of changes) {
|
|
82
|
+
const m = /^(\d{8})\/(.+)$/.exec(change.trim());
|
|
83
|
+
if (!m)
|
|
84
|
+
throw new SyntaxError(`Invalid session change in "${spec.session}"`);
|
|
85
|
+
this.versions.push(parseVersion(m[2], Number(m[1]), spec.session, rule));
|
|
86
|
+
}
|
|
87
|
+
for (const part of (spec.corrections ?? '').split(';').filter((p) => p.trim())) {
|
|
88
|
+
const i = part.lastIndexOf(':');
|
|
89
|
+
const text = part.slice(0, i).trim();
|
|
90
|
+
const periods = text === 'dayoff' ? null : parsePeriods(text, part);
|
|
91
|
+
for (const date of part.slice(i + 1).split(','))
|
|
92
|
+
this.corrections.set(Number(date), periods);
|
|
93
|
+
}
|
|
94
|
+
const holidays = Array.isArray(spec.holidays) ? spec.holidays : (spec.holidays ?? '').split(',');
|
|
95
|
+
this.holidays = new Set(holidays.filter((h) => h.trim()).map(Number));
|
|
96
|
+
}
|
|
97
|
+
/** Session periods [start, end) of the trading day `date`; empty when the day has no session. */
|
|
98
|
+
periods(date) {
|
|
99
|
+
let out = this.cache.get(date);
|
|
100
|
+
if (out)
|
|
101
|
+
return out;
|
|
102
|
+
let periods = [];
|
|
103
|
+
const correction = this.corrections.get(date);
|
|
104
|
+
if (correction !== undefined) {
|
|
105
|
+
periods = correction ?? [];
|
|
106
|
+
}
|
|
107
|
+
else if (!this.holidays.has(date)) {
|
|
108
|
+
const version = [...this.versions].reverse().find((v) => v.from <= date);
|
|
109
|
+
if (version.days[weekdayOf(date)])
|
|
110
|
+
periods = version.periods;
|
|
111
|
+
}
|
|
112
|
+
const y = Math.floor(date / 10000);
|
|
113
|
+
const m = Math.floor(date / 100) % 100;
|
|
114
|
+
const d = date % 100;
|
|
115
|
+
out = periods.map((p) => [
|
|
116
|
+
zonedToUnix(this.timezone, y, m, d - p.startOffset, Math.floor(p.start / 60), p.start % 60),
|
|
117
|
+
zonedToUnix(this.timezone, y, m, d - p.endOffset, Math.floor(p.end / 60), p.end % 60),
|
|
118
|
+
]);
|
|
119
|
+
this.cache.set(date, out);
|
|
120
|
+
return out;
|
|
121
|
+
}
|
|
122
|
+
isTradingDay(date) {
|
|
123
|
+
return this.periods(date).length > 0;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Trading day and period of a time: the period that contains it, else the last period that started
|
|
127
|
+
* before it. Null when no trading day is found near the time.
|
|
128
|
+
*/
|
|
129
|
+
locate(time) {
|
|
130
|
+
const f = zonedFields(time, this.timezone);
|
|
131
|
+
const local = toDateNum(f.year, f.month, f.day);
|
|
132
|
+
for (let k = 0; k <= 5; k++) {
|
|
133
|
+
const date = addDays(local, k);
|
|
134
|
+
const index = this.periods(date).findIndex(([s, e]) => s <= time && time < e);
|
|
135
|
+
if (index !== -1)
|
|
136
|
+
return { date, index, inside: true };
|
|
137
|
+
}
|
|
138
|
+
for (let k = 5; k >= -7; k--) {
|
|
139
|
+
const date = addDays(local, k);
|
|
140
|
+
const periods = this.periods(date);
|
|
141
|
+
let index = -1;
|
|
142
|
+
periods.forEach(([s], i) => {
|
|
143
|
+
if (s <= time)
|
|
144
|
+
index = i;
|
|
145
|
+
});
|
|
146
|
+
if (index !== -1)
|
|
147
|
+
return { date, index, inside: false };
|
|
148
|
+
}
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
/** First trading day in [from, to] (dates), or null. */
|
|
152
|
+
firstTradingDay(from, to) {
|
|
153
|
+
for (let date = from; date <= to; date = addDays(date, 1))
|
|
154
|
+
if (this.isTradingDay(date))
|
|
155
|
+
return date;
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
/** Last trading day in [from, to] (dates), or null. */
|
|
159
|
+
lastTradingDay(from, to) {
|
|
160
|
+
for (let date = to; date >= from; date = addDays(date, -1))
|
|
161
|
+
if (this.isTradingDay(date))
|
|
162
|
+
return date;
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/** Monday of the week of `date` (weeks run Monday to Sunday). */
|
|
167
|
+
export const weekStart = (date) => addDays(date, -((weekdayOf(date) + 5) % 7));
|
|
168
|
+
/** First day of the month of `date`. */
|
|
169
|
+
export const monthStart = (date) => Math.floor(date / 100) * 100 + 1;
|
|
170
|
+
/** Last day of the month of `date`. */
|
|
171
|
+
export const monthEnd = (date) => addDays(monthStart(addDays(monthStart(date), 32)), -1);
|
|
172
|
+
//# sourceMappingURL=calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/session/calendar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Date patterns of `str.format_time` and `str.format("{0,date,...}")`, as PineScript formats them
|
|
3
|
+
* (Java SimpleDateFormat letters, English names):
|
|
4
|
+
*
|
|
5
|
+
* y year, M month (M, MM, MMM, MMMM), d day, E weekday (EEE, EEEE), u weekday number (1 = Monday),
|
|
6
|
+
* D day of year, w week of year (weeks start on Sunday, week 1 contains 1 January), H hour 0-23,
|
|
7
|
+
* k hour 1-24, K hour 0-11, h hour 1-12, a AM/PM, m minute, s second, S millisecond,
|
|
8
|
+
* Z offset (+0530), z time zone name, 'text' literal text ('' is a quote).
|
|
9
|
+
*
|
|
10
|
+
* `z` gives "UTC" for Etc/UTC, "GMT" for "UTC"/"GMT", "GMT+05:00" for other offsets, and the
|
|
11
|
+
* host's short English name for IANA zones (PineScript's names can differ, e.g. "IST" for Asia/Kolkata).
|
|
12
|
+
*/
|
|
13
|
+
/** Formats a UNIX time (ms) with a SimpleDateFormat pattern in `timezone`. */
|
|
14
|
+
export declare function formatDate(time: number, pattern: string, timezone: string): string;
|
|
15
|
+
//# sourceMappingURL=dateformat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateformat.d.ts","sourceRoot":"","sources":["../../../src/str/dateformat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAmCH,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwDlF"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Date patterns of `str.format_time` and `str.format("{0,date,...}")`, as PineScript formats them
|
|
3
|
+
* (Java SimpleDateFormat letters, English names):
|
|
4
|
+
*
|
|
5
|
+
* y year, M month (M, MM, MMM, MMMM), d day, E weekday (EEE, EEEE), u weekday number (1 = Monday),
|
|
6
|
+
* D day of year, w week of year (weeks start on Sunday, week 1 contains 1 January), H hour 0-23,
|
|
7
|
+
* k hour 1-24, K hour 0-11, h hour 1-12, a AM/PM, m minute, s second, S millisecond,
|
|
8
|
+
* Z offset (+0530), z time zone name, 'text' literal text ('' is a quote).
|
|
9
|
+
*
|
|
10
|
+
* `z` gives "UTC" for Etc/UTC, "GMT" for "UTC"/"GMT", "GMT+05:00" for other offsets, and the
|
|
11
|
+
* host's short English name for IANA zones (PineScript's names can differ, e.g. "IST" for Asia/Kolkata).
|
|
12
|
+
*/
|
|
13
|
+
import { zonedFields, zoneOffset } from '../time/timezone.js';
|
|
14
|
+
const MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',
|
|
15
|
+
'October', 'November', 'December'];
|
|
16
|
+
const DAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
|
17
|
+
const pad = (n, width) => String(n).padStart(width, '0');
|
|
18
|
+
function zoneName(time, timezone, offsetMs) {
|
|
19
|
+
if (timezone === 'Etc/UTC')
|
|
20
|
+
return 'UTC';
|
|
21
|
+
if (/^(UTC|GMT)/.test(timezone)) {
|
|
22
|
+
if (offsetMs === 0)
|
|
23
|
+
return 'GMT';
|
|
24
|
+
const minutes = Math.abs(offsetMs) / 60000;
|
|
25
|
+
return `GMT${offsetMs < 0 ? '-' : '+'}${pad(Math.floor(minutes / 60), 2)}:${pad(minutes % 60, 2)}`;
|
|
26
|
+
}
|
|
27
|
+
const part = new Intl.DateTimeFormat('en-US', { timeZone: timezone, timeZoneName: 'short' })
|
|
28
|
+
.formatToParts(time)
|
|
29
|
+
.find((p) => p.type === 'timeZoneName');
|
|
30
|
+
return part?.value ?? timezone;
|
|
31
|
+
}
|
|
32
|
+
/** Week of year: weeks start on Sunday and week 1 is the week that contains 1 January. */
|
|
33
|
+
function weekOfYear(year, month, day) {
|
|
34
|
+
const date = Date.UTC(year, month - 1, day);
|
|
35
|
+
const dow = new Date(date).getUTCDay();
|
|
36
|
+
const weekStart = date - dow * 86_400_000;
|
|
37
|
+
// the week that contains 1 January of the next year is week 1
|
|
38
|
+
if (weekStart + 6 * 86_400_000 >= Date.UTC(year + 1, 0, 1))
|
|
39
|
+
return 1;
|
|
40
|
+
const jan1 = Date.UTC(year, 0, 1);
|
|
41
|
+
const jan1Dow = new Date(jan1).getUTCDay();
|
|
42
|
+
return Math.floor((date - jan1 + jan1Dow * 86_400_000) / (7 * 86_400_000)) + 1;
|
|
43
|
+
}
|
|
44
|
+
/** Formats a UNIX time (ms) with a SimpleDateFormat pattern in `timezone`. */
|
|
45
|
+
export function formatDate(time, pattern, timezone) {
|
|
46
|
+
if (Number.isNaN(time))
|
|
47
|
+
return 'NaN';
|
|
48
|
+
const f = zonedFields(time, timezone);
|
|
49
|
+
const offset = zoneOffset(time, timezone);
|
|
50
|
+
const ms = ((time % 1000) + 1000) % 1000;
|
|
51
|
+
const dayOfYear = (Date.UTC(f.year, f.month - 1, f.day) - Date.UTC(f.year, 0, 1)) / 86_400_000 + 1;
|
|
52
|
+
let out = '';
|
|
53
|
+
for (let i = 0; i < pattern.length;) {
|
|
54
|
+
const ch = pattern[i];
|
|
55
|
+
if (ch === "'") {
|
|
56
|
+
const end = pattern.indexOf("'", i + 1);
|
|
57
|
+
if (end === i + 1) {
|
|
58
|
+
out += "'";
|
|
59
|
+
i += 2;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
out += pattern.slice(i + 1, end === -1 ? undefined : end);
|
|
63
|
+
i = end === -1 ? pattern.length : end + 1;
|
|
64
|
+
}
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (!/[A-Za-z]/.test(ch)) {
|
|
68
|
+
out += ch;
|
|
69
|
+
i++;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
let n = 1;
|
|
73
|
+
while (pattern[i + n] === ch)
|
|
74
|
+
n++;
|
|
75
|
+
i += n;
|
|
76
|
+
const hour12 = f.hour % 12;
|
|
77
|
+
switch (ch) {
|
|
78
|
+
case 'y':
|
|
79
|
+
out += n === 2 ? pad(f.year % 100, 2) : pad(f.year, n);
|
|
80
|
+
break;
|
|
81
|
+
case 'M':
|
|
82
|
+
out += n >= 4 ? MONTHS[f.month - 1] : n === 3 ? MONTHS[f.month - 1].slice(0, 3) : pad(f.month, n);
|
|
83
|
+
break;
|
|
84
|
+
case 'd':
|
|
85
|
+
out += pad(f.day, n);
|
|
86
|
+
break;
|
|
87
|
+
case 'E':
|
|
88
|
+
out += n >= 4 ? DAYS[f.dayOfWeek - 1] : DAYS[f.dayOfWeek - 1].slice(0, 3);
|
|
89
|
+
break;
|
|
90
|
+
case 'u':
|
|
91
|
+
out += pad(f.dayOfWeek === 1 ? 7 : f.dayOfWeek - 1, n);
|
|
92
|
+
break;
|
|
93
|
+
case 'D':
|
|
94
|
+
out += pad(dayOfYear, n);
|
|
95
|
+
break;
|
|
96
|
+
case 'w':
|
|
97
|
+
out += pad(weekOfYear(f.year, f.month, f.day), n);
|
|
98
|
+
break;
|
|
99
|
+
case 'H':
|
|
100
|
+
out += pad(f.hour, n);
|
|
101
|
+
break;
|
|
102
|
+
case 'k':
|
|
103
|
+
out += pad(f.hour === 0 ? 24 : f.hour, n);
|
|
104
|
+
break;
|
|
105
|
+
case 'K':
|
|
106
|
+
out += pad(hour12, n);
|
|
107
|
+
break;
|
|
108
|
+
case 'h':
|
|
109
|
+
out += pad(hour12 === 0 ? 12 : hour12, n);
|
|
110
|
+
break;
|
|
111
|
+
case 'a':
|
|
112
|
+
out += f.hour < 12 ? 'AM' : 'PM';
|
|
113
|
+
break;
|
|
114
|
+
case 'm':
|
|
115
|
+
out += pad(f.minute, n);
|
|
116
|
+
break;
|
|
117
|
+
case 's':
|
|
118
|
+
out += pad(f.second, n);
|
|
119
|
+
break;
|
|
120
|
+
case 'S':
|
|
121
|
+
out += pad(ms, n);
|
|
122
|
+
break;
|
|
123
|
+
case 'Z': {
|
|
124
|
+
const minutes = Math.abs(offset) / 60000;
|
|
125
|
+
out += (offset < 0 ? '-' : '+') + pad(Math.floor(minutes / 60), 2) + pad(minutes % 60, 2);
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
case 'z':
|
|
129
|
+
out += zoneName(time, timezone, offset);
|
|
130
|
+
break;
|
|
131
|
+
default: throw new SyntaxError(`Unsupported date pattern letter "${ch}" in "${pattern}"`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return out;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=dateformat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateformat.js","sourceRoot":"","sources":["../../../src/str/dateformat.ts"],"names":[],"mappings":"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"}
|