oakscriptjs 0.11.1 → 0.11.3

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.
Files changed (75) hide show
  1. package/dist/cjs/callsite/index.d.ts.map +1 -1
  2. package/dist/cjs/callsite/index.js +5 -2
  3. package/dist/cjs/callsite/index.js.map +2 -2
  4. package/dist/cjs/drawing/output.d.ts +2 -1
  5. package/dist/cjs/drawing/output.d.ts.map +1 -1
  6. package/dist/cjs/drawing/output.js +5 -0
  7. package/dist/cjs/drawing/output.js.map +2 -2
  8. package/dist/cjs/index.d.ts +2 -2
  9. package/dist/cjs/index.d.ts.map +1 -1
  10. package/dist/cjs/index.js +2 -1
  11. package/dist/cjs/index.js.map +2 -2
  12. package/dist/cjs/script/index.d.ts +1 -1
  13. package/dist/cjs/script/index.d.ts.map +1 -1
  14. package/dist/cjs/script/index.js +6 -51
  15. package/dist/cjs/script/index.js.map +2 -2
  16. package/dist/cjs/session/calendar.d.ts.map +1 -1
  17. package/dist/cjs/session/calendar.js +1 -0
  18. package/dist/cjs/session/calendar.js.map +2 -2
  19. package/dist/cjs/session/context.d.ts +20 -4
  20. package/dist/cjs/session/context.d.ts.map +1 -1
  21. package/dist/cjs/session/context.js +65 -5
  22. package/dist/cjs/session/context.js.map +2 -2
  23. package/dist/cjs/ta/index.d.ts +31 -29
  24. package/dist/cjs/ta/index.d.ts.map +1 -1
  25. package/dist/cjs/ta/index.js +10 -12
  26. package/dist/cjs/ta/index.js.map +3 -3
  27. package/dist/cjs/table/index.d.ts +10 -5
  28. package/dist/cjs/table/index.d.ts.map +1 -1
  29. package/dist/cjs/table/index.js +11 -2
  30. package/dist/cjs/table/index.js.map +2 -2
  31. package/dist/cjs/types/metadata.d.ts +16 -0
  32. package/dist/cjs/types/metadata.d.ts.map +1 -1
  33. package/dist/cjs/types/metadata.js.map +1 -1
  34. package/dist/esm/callsite/index.d.ts.map +1 -1
  35. package/dist/esm/callsite/index.js +5 -2
  36. package/dist/esm/callsite/index.js.map +1 -1
  37. package/dist/esm/drawing/output.d.ts +2 -1
  38. package/dist/esm/drawing/output.d.ts.map +1 -1
  39. package/dist/esm/drawing/output.js +8 -1
  40. package/dist/esm/drawing/output.js.map +1 -1
  41. package/dist/esm/index.d.ts +2 -2
  42. package/dist/esm/index.d.ts.map +1 -1
  43. package/dist/esm/index.js +5 -4
  44. package/dist/esm/index.js.map +1 -1
  45. package/dist/esm/script/index.d.ts +1 -1
  46. package/dist/esm/script/index.d.ts.map +1 -1
  47. package/dist/esm/script/index.js +7 -62
  48. package/dist/esm/script/index.js.map +1 -1
  49. package/dist/esm/session/calendar.d.ts.map +1 -1
  50. package/dist/esm/session/calendar.js +4 -0
  51. package/dist/esm/session/calendar.js.map +1 -1
  52. package/dist/esm/session/context.d.ts +20 -4
  53. package/dist/esm/session/context.d.ts.map +1 -1
  54. package/dist/esm/session/context.js +81 -7
  55. package/dist/esm/session/context.js.map +1 -1
  56. package/dist/esm/ta/index.d.ts +31 -29
  57. package/dist/esm/ta/index.d.ts.map +1 -1
  58. package/dist/esm/ta/index.js +45 -45
  59. package/dist/esm/ta/index.js.map +1 -1
  60. package/dist/esm/table/index.d.ts +10 -5
  61. package/dist/esm/table/index.d.ts.map +1 -1
  62. package/dist/esm/table/index.js +23 -8
  63. package/dist/esm/table/index.js.map +1 -1
  64. package/dist/esm/types/metadata.d.ts +16 -0
  65. package/dist/esm/types/metadata.d.ts.map +1 -1
  66. package/package.json +1 -1
  67. package/src/callsite/index.ts +5 -2
  68. package/src/drawing/output.ts +9 -1
  69. package/src/index.ts +6 -3
  70. package/src/script/index.ts +7 -65
  71. package/src/session/calendar.ts +3 -0
  72. package/src/session/context.ts +99 -7
  73. package/src/ta/index.ts +46 -45
  74. package/src/table/index.ts +22 -6
  75. package/src/types/metadata.ts +16 -0
@@ -130,7 +130,7 @@ var import_resample = require("../security/resample.js");
130
130
  var import_other = require("../security/other.js");
131
131
  var import_types = require("../types/index.js");
132
132
  var import_strategy = require("../strategy/index.js");
133
- var import_session = require("../time/session.js");
133
+ var import_context = require("../session/context.js");
134
134
  var import_strategy2 = require("../strategy/index.js");
135
135
  var compare = __toESM(require("../compare/index.js"), 1);
136
136
  var import_input_active = require("../runtime/input-active.js");
@@ -1134,23 +1134,6 @@ function sessionBars() {
1134
1134
  }
1135
1135
  return sessionCache;
1136
1136
  }
1137
- function calendarFor(session2, timezone, dayPlacement = false) {
1138
- const { bars: bars2 } = sessionBars();
1139
- if (!session2 && !timezone) return { bars: bars2, test: false };
1140
- const tz = timezone ?? exchangeTimezone();
1141
- if (session2 !== void 0 && (0, import_session.parsePineSession)(session2) === null) {
1142
- const name = session2.trim();
1143
- const symbol = name === "regular" && chartCtx.regularSession ? chartCtx.regularSession : chartCtx.session;
1144
- return { bars: new import_bars.SessionBars(new import_calendar.TradingCalendar(tz, { session: toSpec(symbol).session }, "symbol"), bars2.chart.period), test: true };
1145
- }
1146
- const spec = session2 ? { session: session2 } : { session: toSpec(chartCtx.session).session };
1147
- return {
1148
- bars: new import_bars.SessionBars(new import_calendar.TradingCalendar(tz, spec, session2 ? "pine" : "symbol", dayPlacement), bars2.chart.period),
1149
- test: true,
1150
- // a PineScript session string: the rules of time.inSession (runs ending at 0000, days around a clock change)
1151
- inside: session2 ? (time2) => timeCore.inSession(time2, session2, tz, timeframeCore.in_seconds(bars2.chart.period) * 1e3) : void 0
1152
- };
1153
- }
1154
1137
  function perBar(fn) {
1155
1138
  const times = ctxBars.bars.map(barTime);
1156
1139
  return import_series.Series.fromArray(ctxBars, times.map((t, i) => fn(t, i, times)));
@@ -1160,46 +1143,18 @@ function callableSeries(series, fn) {
1160
1143
  Object.assign(fn, series);
1161
1144
  return fn;
1162
1145
  }
1163
- function sessionPeriods(timeframeString, session2, timezone) {
1164
- const tf = timeframeCore.info(timeframeString);
1165
- const { bars: bars2, test, inside } = calendarFor(session2, timezone, !tf.isintraday);
1166
- const open2 = (t) => bars2.timeOf(t, timeframeString);
1167
- const close2 = (t) => bars2.closeOf(t, timeframeString);
1168
- if (!test) return { open: open2, close: close2 };
1169
- if (tf.isintraday) {
1170
- if (session2 !== void 0 && (0, import_session.parsePineSession)(session2) !== null && !bars2.chart.isdwm) {
1171
- const tz = timezone ?? exchangeTimezone();
1172
- const barMs = timeframeCore.in_seconds(bars2.chart.period) * 1e3;
1173
- const ms = timeframeCore.in_seconds(tf.period) * 1e3;
1174
- const run = (t) => (0, import_session.sessionRun)(t, session2, tz, barMs);
1175
- const start = (t, r) => r[0] + Math.floor((t - r[0]) / ms) * ms;
1176
- return {
1177
- open: (t) => {
1178
- const r = run(t);
1179
- return r ? start(t, r) : NaN;
1180
- },
1181
- close: (t) => {
1182
- const r = run(t);
1183
- return r ? Math.min(start(t, r) + ms, r[1]) : NaN;
1184
- }
1185
- };
1186
- }
1187
- const isIn = (t) => inside ? inside(t) : bars2.inside(t);
1188
- return { open: (t) => isIn(t) ? open2(t) : NaN, close: (t) => isIn(t) ? close2(t) : NaN };
1189
- }
1190
- if (tf.isdaily && tf.multiplier === 1) {
1191
- return { open: (t) => bars2.inside(t) ? open2(t) : NaN, close: (t) => bars2.inside(t) ? close2(t) : NaN };
1192
- }
1193
- return { open: open2, close: close2 };
1146
+ function chartSessionPeriods(timeframeString, session2, timezone) {
1147
+ const { bars: bars2 } = sessionBars();
1148
+ return (0, import_context.sessionPeriods)(bars2, { ...chartCtx, timezone: exchangeTimezone() }, timeframeString, session2, timezone);
1194
1149
  }
1195
1150
  function timeFunction(tf, session2, timezone) {
1196
1151
  collector();
1197
- const { open: open2 } = sessionPeriods(tf || chartTimeframe().period, session2, timezone);
1152
+ const { open: open2 } = chartSessionPeriods(tf || chartTimeframe().period, session2, timezone);
1198
1153
  return perBar((t) => open2(t));
1199
1154
  }
1200
1155
  function timeCloseFunction(tf, session2, timezone) {
1201
1156
  collector();
1202
- const { close: close2 } = sessionPeriods(tf || chartTimeframe().period, session2, timezone);
1157
+ const { close: close2 } = chartSessionPeriods(tf || chartTimeframe().period, session2, timezone);
1203
1158
  return perBar((t) => close2(t));
1204
1159
  }
1205
1160
  let runNow = NaN;