oakscriptjs 0.9.5 → 0.9.6
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/dist/cjs/array/index.d.ts +84 -27
- package/dist/cjs/array/index.d.ts.map +1 -1
- package/dist/cjs/array/index.js +235 -78
- package/dist/cjs/array/index.js.map +3 -3
- package/dist/cjs/callsite/index.d.ts +81 -2
- package/dist/cjs/callsite/index.d.ts.map +1 -1
- package/dist/cjs/callsite/index.js +62 -1
- package/dist/cjs/callsite/index.js.map +2 -2
- package/dist/cjs/color/index.d.ts +7 -3
- package/dist/cjs/color/index.d.ts.map +1 -1
- package/dist/cjs/color/index.js +6 -1
- package/dist/cjs/color/index.js.map +2 -2
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/label/index.d.ts.map +1 -1
- package/dist/cjs/label/index.js +2 -1
- package/dist/cjs/label/index.js.map +2 -2
- package/dist/cjs/linefill/index.d.ts.map +1 -1
- package/dist/cjs/linefill/index.js +1 -0
- package/dist/cjs/linefill/index.js.map +2 -2
- package/dist/cjs/math/index.d.ts +76 -21
- package/dist/cjs/math/index.d.ts.map +1 -1
- package/dist/cjs/math/index.js +155 -41
- package/dist/cjs/math/index.js.map +3 -3
- package/dist/cjs/matrix/index.d.ts.map +1 -1
- package/dist/cjs/matrix/index.js +42 -36
- package/dist/cjs/matrix/index.js.map +2 -2
- package/dist/cjs/runtime/series.d.ts +9 -0
- package/dist/cjs/runtime/series.d.ts.map +1 -1
- package/dist/cjs/runtime/series.js +16 -2
- package/dist/cjs/runtime/series.js.map +2 -2
- package/dist/cjs/script/index.d.ts +15 -31
- package/dist/cjs/script/index.d.ts.map +1 -1
- package/dist/cjs/script/index.js +32 -0
- package/dist/cjs/script/index.js.map +2 -2
- package/dist/cjs/session/calendar.d.ts.map +1 -1
- package/dist/cjs/session/calendar.js +15 -2
- package/dist/cjs/session/calendar.js.map +2 -2
- package/dist/cjs/str/index.d.ts +50 -38
- package/dist/cjs/str/index.d.ts.map +1 -1
- package/dist/cjs/str/index.js +43 -15
- package/dist/cjs/str/index.js.map +2 -2
- package/dist/cjs/str/messageformat.d.ts +2 -1
- package/dist/cjs/str/messageformat.d.ts.map +1 -1
- package/dist/cjs/str/messageformat.js +4 -1
- package/dist/cjs/str/messageformat.js.map +2 -2
- package/dist/cjs/str/numberformat.d.ts +4 -0
- package/dist/cjs/str/numberformat.d.ts.map +1 -1
- package/dist/cjs/str/numberformat.js +26 -4
- package/dist/cjs/str/numberformat.js.map +3 -3
- package/dist/cjs/ta/index.d.ts +86 -43
- package/dist/cjs/ta/index.d.ts.map +1 -1
- package/dist/cjs/ta/index.js +173 -267
- package/dist/cjs/ta/index.js.map +3 -3
- package/dist/cjs/ta/running-sum.d.ts +54 -2
- package/dist/cjs/ta/running-sum.d.ts.map +1 -1
- package/dist/cjs/ta/running-sum.js +132 -52
- package/dist/cjs/ta/running-sum.js.map +2 -2
- package/dist/cjs/ta-series.d.ts +4 -4
- package/dist/cjs/ta-series.d.ts.map +1 -1
- package/dist/cjs/ta-series.js +4 -3
- package/dist/cjs/ta-series.js.map +2 -2
- package/dist/cjs/time/datestring.d.ts +1 -0
- package/dist/cjs/time/datestring.d.ts.map +1 -1
- package/dist/cjs/time/datestring.js +7 -0
- package/dist/cjs/time/datestring.js.map +2 -2
- package/dist/cjs/time/index.d.ts.map +1 -1
- package/dist/cjs/time/index.js +2 -1
- package/dist/cjs/time/index.js.map +2 -2
- package/dist/cjs/time/session.d.ts +28 -9
- package/dist/cjs/time/session.d.ts.map +1 -1
- package/dist/cjs/time/session.js +74 -28
- package/dist/cjs/time/session.js.map +2 -2
- package/dist/cjs/time/timezone.d.ts +5 -0
- package/dist/cjs/time/timezone.d.ts.map +1 -1
- package/dist/cjs/time/timezone.js +15 -1
- package/dist/cjs/time/timezone.js.map +2 -2
- package/dist/esm/array/index.d.ts +84 -27
- package/dist/esm/array/index.d.ts.map +1 -1
- package/dist/esm/array/index.js +373 -111
- package/dist/esm/array/index.js.map +1 -1
- package/dist/esm/callsite/index.d.ts +81 -2
- package/dist/esm/callsite/index.d.ts.map +1 -1
- package/dist/esm/callsite/index.js +145 -3
- package/dist/esm/callsite/index.js.map +1 -1
- package/dist/esm/color/index.d.ts +7 -3
- package/dist/esm/color/index.d.ts.map +1 -1
- package/dist/esm/color/index.js +15 -3
- package/dist/esm/color/index.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/label/index.d.ts.map +1 -1
- package/dist/esm/label/index.js +2 -1
- package/dist/esm/label/index.js.map +1 -1
- package/dist/esm/linefill/index.d.ts.map +1 -1
- package/dist/esm/linefill/index.js +3 -0
- package/dist/esm/linefill/index.js.map +1 -1
- package/dist/esm/math/index.d.ts +76 -21
- package/dist/esm/math/index.d.ts.map +1 -1
- package/dist/esm/math/index.js +227 -61
- package/dist/esm/math/index.js.map +1 -1
- package/dist/esm/matrix/index.d.ts.map +1 -1
- package/dist/esm/matrix/index.js +57 -43
- package/dist/esm/matrix/index.js.map +1 -1
- package/dist/esm/runtime/series.d.ts +9 -0
- package/dist/esm/runtime/series.d.ts.map +1 -1
- package/dist/esm/runtime/series.js +18 -1
- package/dist/esm/runtime/series.js.map +1 -1
- package/dist/esm/script/index.d.ts +15 -31
- package/dist/esm/script/index.d.ts.map +1 -1
- package/dist/esm/script/index.js +44 -1
- package/dist/esm/script/index.js.map +1 -1
- package/dist/esm/session/calendar.d.ts.map +1 -1
- package/dist/esm/session/calendar.js +22 -2
- package/dist/esm/session/calendar.js.map +1 -1
- package/dist/esm/str/index.d.ts +50 -38
- package/dist/esm/str/index.d.ts.map +1 -1
- package/dist/esm/str/index.js +103 -52
- package/dist/esm/str/index.js.map +1 -1
- package/dist/esm/str/messageformat.d.ts +2 -1
- package/dist/esm/str/messageformat.d.ts.map +1 -1
- package/dist/esm/str/messageformat.js +7 -2
- package/dist/esm/str/messageformat.js.map +1 -1
- package/dist/esm/str/numberformat.d.ts +4 -0
- package/dist/esm/str/numberformat.d.ts.map +1 -1
- package/dist/esm/str/numberformat.js +38 -4
- package/dist/esm/str/numberformat.js.map +1 -1
- package/dist/esm/ta/index.d.ts +86 -43
- package/dist/esm/ta/index.d.ts.map +1 -1
- package/dist/esm/ta/index.js +296 -348
- package/dist/esm/ta/index.js.map +1 -1
- package/dist/esm/ta/running-sum.d.ts +54 -2
- package/dist/esm/ta/running-sum.d.ts.map +1 -1
- package/dist/esm/ta/running-sum.js +166 -71
- package/dist/esm/ta/running-sum.js.map +1 -1
- package/dist/esm/ta-series.d.ts +4 -4
- package/dist/esm/ta-series.d.ts.map +1 -1
- package/dist/esm/ta-series.js +5 -4
- package/dist/esm/ta-series.js.map +1 -1
- package/dist/esm/time/datestring.d.ts +1 -0
- package/dist/esm/time/datestring.d.ts.map +1 -1
- package/dist/esm/time/datestring.js +12 -0
- package/dist/esm/time/datestring.js.map +1 -1
- package/dist/esm/time/index.d.ts.map +1 -1
- package/dist/esm/time/index.js +3 -1
- package/dist/esm/time/index.js.map +1 -1
- package/dist/esm/time/session.d.ts +28 -9
- package/dist/esm/time/session.d.ts.map +1 -1
- package/dist/esm/time/session.js +113 -42
- package/dist/esm/time/session.js.map +1 -1
- package/dist/esm/time/timezone.d.ts +5 -0
- package/dist/esm/time/timezone.d.ts.map +1 -1
- package/dist/esm/time/timezone.js +21 -1
- package/dist/esm/time/timezone.js.map +1 -1
- package/package.json +1 -1
- package/src/array/index.ts +352 -127
- package/src/callsite/index.ts +147 -3
- package/src/color/index.ts +15 -5
- package/src/index.ts +1 -1
- package/src/label/index.ts +2 -1
- package/src/linefill/index.ts +2 -0
- package/src/math/index.ts +256 -74
- package/src/matrix/index.ts +52 -52
- package/src/runtime/series.ts +22 -1
- package/src/script/index.ts +53 -1
- package/src/session/calendar.ts +22 -2
- package/src/str/index.ts +95 -51
- package/src/str/messageformat.ts +7 -2
- package/src/str/numberformat.ts +39 -4
- package/src/ta/index.ts +306 -386
- package/src/ta/running-sum.ts +187 -74
- package/src/ta-series.ts +8 -7
- package/src/time/datestring.ts +10 -0
- package/src/time/index.ts +3 -1
- package/src/time/session.ts +97 -47
- package/src/time/timezone.ts +21 -1
|
@@ -29,7 +29,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
29
29
|
var series_exports = {};
|
|
30
30
|
__export(series_exports, {
|
|
31
31
|
BarData: () => BarData,
|
|
32
|
-
|
|
32
|
+
MAX_BARS_BACK: () => MAX_BARS_BACK,
|
|
33
|
+
Series: () => Series,
|
|
34
|
+
historyError: () => historyError
|
|
33
35
|
});
|
|
34
36
|
module.exports = __toCommonJS(series_exports);
|
|
35
37
|
var compare = __toESM(require("../compare/index.js"), 1);
|
|
@@ -136,6 +138,10 @@ class BarData {
|
|
|
136
138
|
return new BarData(bars);
|
|
137
139
|
}
|
|
138
140
|
}
|
|
141
|
+
const MAX_BARS_BACK = 5e3;
|
|
142
|
+
function historyError(bar, barsBack) {
|
|
143
|
+
return `Error on bar ${bar}: The script attempts to reference historical data that is too far from the current bar (${barsBack} bars back). The history-referencing length for the expression must be a value between 0 and ${MAX_BARS_BACK}.`;
|
|
144
|
+
}
|
|
139
145
|
class Series {
|
|
140
146
|
extractor;
|
|
141
147
|
dataSource;
|
|
@@ -147,6 +153,11 @@ class Series {
|
|
|
147
153
|
* @param data - Bar data (Bar[] or BarData)
|
|
148
154
|
* @param extractor - Function to extract/compute value for each bar
|
|
149
155
|
*/
|
|
156
|
+
/**
|
|
157
|
+
* True for PineScript's built-in price variables (open, high, low, close, volume, hl2...): their history covers
|
|
158
|
+
* every bar, so references further than 5000 bars back are allowed (measured: close[bar_index] runs).
|
|
159
|
+
*/
|
|
160
|
+
fullHistory = false;
|
|
150
161
|
constructor(data, extractor) {
|
|
151
162
|
this.dataSource = data instanceof BarData ? data : new BarData(data);
|
|
152
163
|
this.extractor = extractor;
|
|
@@ -175,7 +186,9 @@ class Series {
|
|
|
175
186
|
* @returns Series with extracted field values
|
|
176
187
|
*/
|
|
177
188
|
static fromBars(bars, field) {
|
|
178
|
-
|
|
189
|
+
const series = new Series(bars, (bar) => bar[field] ?? NaN);
|
|
190
|
+
series.fullHistory = true;
|
|
191
|
+
return series;
|
|
179
192
|
}
|
|
180
193
|
/**
|
|
181
194
|
* Create a constant series (same value for all bars)
|
|
@@ -444,6 +457,7 @@ class Series {
|
|
|
444
457
|
*/
|
|
445
458
|
offset(offset) {
|
|
446
459
|
if (offset < 0) throw new RangeError(`Series.offset(${offset}): the offset cannot be negative (it would read a future bar).`);
|
|
460
|
+
if (offset > MAX_BARS_BACK && !this.fullHistory) throw new Error(historyError(0, Math.floor(offset)));
|
|
447
461
|
return new Series(this.dataSource, (_bar, i, data) => {
|
|
448
462
|
const targetIndex = i - offset;
|
|
449
463
|
if (targetIndex < 0 || targetIndex >= data.length) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/runtime/series.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @fileoverview Simplified Series class for lazy time-series computation\n * Represents a time-series of values with lazy evaluation\n * @module runtime/series\n */\n\nimport * as compare from '../compare/index.js';\nimport type { Bar } from '../types/index.js';\n\n/**\n * Function that computes a value for each bar\n */\nexport type SeriesExtractor = (bar: Bar, index: number, data: Bar[]) => number;\n\n/**\n * BarData - Versioned wrapper around Bar[] array for cache invalidation\n * \n * This class wraps a Bar[] array and tracks a version number that increments\n * whenever the data is mutated. Series objects reference this to detect when\n * their cached values need to be recomputed.\n * \n * @example\n * ```typescript\n * const barData = new BarData(bars);\n * const close = Series.fromBars(barData, 'close');\n * const values1 = close.toArray(); // Computes and caches\n * \n * barData.push(newBar); // Increments version\n * const values2 = close.toArray(); // Detects stale cache, recomputes\n * ```\n */\nexport class BarData {\n private _bars: Bar[];\n private _version: number = 0;\n\n /**\n * Create a new BarData wrapper\n * @param bars - Initial bar data (defaults to empty array)\n */\n constructor(bars: Bar[] = []) {\n this._bars = bars;\n }\n\n /**\n * Get the current version number\n * Version increments whenever data is mutated\n */\n get version(): number {\n return this._version;\n }\n\n /**\n * Get the underlying bar array\n * Note: Direct mutations to this array will NOT increment version\n * Use the provided mutation methods instead\n */\n get bars(): Bar[] {\n return this._bars;\n }\n\n /**\n * Get the number of bars\n */\n get length(): number {\n return this._bars.length;\n }\n\n /**\n * Add a new bar to the end\n * @param bar - Bar to add\n */\n push(bar: Bar): void {\n this._bars.push(bar);\n this._version++;\n }\n\n /**\n * Remove and return the last bar\n * @returns The removed bar, or undefined if empty\n */\n pop(): Bar | undefined {\n const bar = this._bars.pop();\n if (bar !== undefined) {\n this._version++;\n }\n return bar;\n }\n\n /**\n * Replace a bar at a specific index\n * @param index - Index to update\n * @param bar - New bar data\n */\n set(index: number, bar: Bar): void {\n if (index >= 0 && index < this._bars.length) {\n this._bars[index] = bar;\n this._version++;\n }\n }\n\n /**\n * Update the last bar (useful for real-time/streaming updates)\n * @param bar - New bar data\n */\n updateLast(bar: Bar): void {\n if (this._bars.length > 0) {\n this._bars[this._bars.length - 1] = bar;\n this._version++;\n }\n }\n\n /**\n * Replace all bars with new data\n * @param bars - New bar array\n */\n setAll(bars: Bar[]): void {\n this._bars = bars;\n this._version++;\n }\n\n /**\n * Manually increment version (for advanced use cases)\n * Call this after direct mutations to the bars array\n */\n invalidate(): void {\n this._version++;\n }\n\n /**\n * Get a bar at a specific index\n * @param index - Bar index\n * @returns Bar at that index, or undefined\n */\n at(index: number): Bar | undefined {\n return this._bars[index];\n }\n\n /**\n * Create a BarData from an existing Bar array\n * @param bars - Bar array\n * @returns New BarData instance\n */\n static from(bars: Bar[]): BarData {\n return new BarData(bars);\n }\n}\n\n/**\n * Series - represents a time-series of values with lazy evaluation\n *\n * Series are lazy - they don't compute values until needed.\n * Operations on Series return new Series with composed extractors.\n *\n * Now supports automatic cache invalidation via BarData versioning\n * and memory-efficient closure chain breaking via materialize().\n *\n * @example\n * ```typescript\n * // Basic usage (backward compatible)\n * const close = Series.fromBars(bars, 'close');\n * const open = Series.fromBars(bars, 'open');\n * const range = close.sub(open); // Creates new Series, doesn't compute yet\n * const values = range.toArray(); // Now computes for all bars\n * \n * // With automatic cache invalidation\n * const barData = new BarData(bars);\n * const close = Series.fromBars(barData, 'close');\n * const values1 = close.toArray(); // Computes and caches\n * barData.push(newBar); // Version increments\n * const values2 = close.toArray(); // Detects stale cache, recomputes\n * \n * // Breaking closure chains for memory efficiency\n * const complex = a.add(b).mul(c).div(d).sub(e);\n * const materialized = complex.materialize(); // Breaks closure chain\n * ```\n */\nexport class Series {\n private extractor: SeriesExtractor;\n private dataSource: BarData;\n private cached: number[] | null = null;\n private cachedVersion: number = -1;\n\n /**\n * Create a new Series\n *\n * @param data - Bar data (Bar[] or BarData)\n * @param extractor - Function to extract/compute value for each bar\n */\n constructor(data: Bar[] | BarData, extractor: SeriesExtractor) {\n // Support both Bar[] and BarData for backward compatibility\n this.dataSource = data instanceof BarData ? data : new BarData(data);\n this.extractor = extractor;\n }\n\n /**\n * Get the underlying bar data\n * @returns Bar array\n */\n get bars(): Bar[] {\n return this.dataSource.bars;\n }\n\n /**\n * Get the underlying BarData source\n * @returns BarData instance\n */\n get barData(): BarData {\n return this.dataSource;\n }\n\n // ============================================\n // Static Factory Methods\n // ============================================\n\n /**\n * Create Series from bar data by extracting a specific field\n * @param bars - Bar data (Bar[] or BarData)\n * @param field - Field to extract ('open', 'high', 'low', 'close', 'volume')\n * @returns Series with extracted field values\n */\n static fromBars(bars: Bar[] | BarData, field: 'open' | 'high' | 'low' | 'close' | 'volume'): Series {\n return new Series(bars, (bar) => bar[field] ?? NaN);\n }\n\n /**\n * Create a constant series (same value for all bars)\n * @param bars - Bar data (Bar[] or BarData)\n * @param value - Constant value\n * @returns Series with constant value\n */\n static constant(bars: Bar[] | BarData, value: number): Series {\n return new Series(bars, () => value);\n }\n\n /**\n * Create series from array of values\n * @param bars - Bar data (Bar[] or BarData) for time alignment\n * @param values - Array of values\n * @returns Series\n * @throws When read on other bars with a different length than `values` (e.g. a series computed on the\n * chart bars and read inside a `request.security` expression, which runs on the higher-timeframe bars)\n */\n static fromArray(bars: Bar[] | BarData, values: number[]): Series {\n const origin = bars instanceof BarData ? bars.bars : bars;\n return new Series(bars, (_bar, i, data) => {\n if (data !== origin && data.length !== values.length) {\n throw new Error(\n `Series values were computed on other bars (${values.length} values, ${data.length} bars). ` +\n 'Inside request.security(), compute the series inside the expression, e.g. () => ta.ema(close, 10).'\n );\n }\n return values[i] ?? NaN;\n });\n }\n\n // ============================================\n // Arithmetic Operations\n // ============================================\n\n /**\n * Add two series or a series and a number\n * @param other - Series or number to add\n * @returns New Series representing the sum\n */\n add(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a + b;\n });\n }\n\n /**\n * Subtract two series or subtract a number from a series\n * @param other - Series or number to subtract\n * @returns New Series representing the difference\n */\n sub(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a - b;\n });\n }\n\n /**\n * Multiply two series or a series by a number\n * @param other - Series or number to multiply\n * @returns New Series representing the product\n */\n mul(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a * b;\n });\n }\n\n /**\n * Raise the series to a power (PineScript math.pow on a series)\n * @param exponent - Series or number exponent\n * @returns New Series representing base ** exponent\n */\n pow(exponent: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof exponent === 'number' ? exponent : exponent.extractor(bar, i, data);\n return Math.pow(a, b);\n });\n }\n\n /**\n * Divide two series or a series by a number\n * @param other - Series or number to divide by\n * @returns New Series representing the quotient\n */\n div(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a / b; // PineScript: x / 0 is +/-Infinity (na() is true for it), 0 / 0 is na\n });\n }\n\n /**\n * Modulo operation\n * @param other - Series or number for modulo\n * @returns New Series representing the remainder\n */\n mod(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return b !== 0 ? a % b : NaN;\n });\n }\n\n /**\n * Negation\n * @returns New Series with negated values\n */\n neg(): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n return -this.extractor(bar, i, data);\n });\n }\n\n // ============================================\n // Comparison Operations (PineScript operators: tolerance 1e-10, false with na; see src/compare)\n // ============================================\n\n /**\n * Greater than comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n gt(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.gt(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Greater than or equal comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n gte(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.ge(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Less than comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n lt(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.lt(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Less than or equal comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n lte(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.le(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Equality comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n eq(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.eq(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Not equal comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n neq(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.ne(a, b) ? 1 : 0;\n });\n }\n\n // ============================================\n // Logical Operations (for boolean series)\n // ============================================\n\n /**\n * Logical AND\n * @param other - Series or number (truthy/falsy)\n * @returns New Series with 1 where both true, 0 otherwise\n */\n and(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a && b ? 1 : 0;\n });\n }\n\n /**\n * Logical OR\n * @param other - Series or number (truthy/falsy)\n * @returns New Series with 1 where either true, 0 otherwise\n */\n or(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a || b ? 1 : 0;\n });\n }\n\n /**\n * Logical NOT\n * @returns New Series with inverted boolean values\n */\n not(): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n return !a ? 1 : 0;\n });\n }\n\n // ============================================\n // Conditional Selection\n // ============================================\n\n /**\n * Bar-by-bar conditional selection (ternary operator for Series)\n * Uses this Series as the condition (truthy = nonzero, falsy = zero/NaN)\n *\n * @param trueValue - Value or Series to use when condition is truthy\n * @param falseValue - Value or Series to use when condition is falsy\n * @returns New Series with bar-by-bar selected values\n *\n * @example\n * ```typescript\n * // PineScript: result = condition ? trueVal : falseVal\n * const result = condition.iff(trueVal, falseVal);\n *\n * // Example: RSI formula uses ternary for edge cases\n * // rsi = down == 0 ? 100 : up == 0 ? 0 : formula\n * const rsi = down.eq(0).iff(100, up.eq(0).iff(0, formula));\n * ```\n */\n iff(trueValue: Series | number, falseValue: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const condition = this.extractor(bar, i, data);\n // Truthy: nonzero and not NaN\n const isTruthy = condition !== 0 && !Number.isNaN(condition);\n\n if (isTruthy) {\n return typeof trueValue === 'number' ? trueValue : trueValue.extractor(bar, i, data);\n } else {\n return typeof falseValue === 'number' ? falseValue : falseValue.extractor(bar, i, data);\n }\n });\n }\n\n // ============================================\n // Offset/History\n // ============================================\n\n /**\n * Access previous bars (like close[1] in PineScript)\n * @param offset - Number of bars back (0 or more)\n * @returns New Series with offset values\n * @throws RangeError when `offset` is negative\n */\n offset(offset: number): Series {\n if (offset < 0) throw new RangeError(`Series.offset(${offset}): the offset cannot be negative (it would read a future bar).`);\n return new Series(this.dataSource, (_bar, i, data) => {\n const targetIndex = i - offset;\n if (targetIndex < 0 || targetIndex >= data.length) {\n return NaN;\n }\n return this.extractor(data[targetIndex]!, targetIndex, data);\n });\n }\n\n // ============================================\n // Computation & Access\n // ============================================\n\n /**\n * Compute all values for the series\n * \n * Now includes automatic cache invalidation:\n * - Checks if dataSource version has changed since cache was computed\n * - Recomputes if version mismatch detected\n * - Stores version when cache is created\n * \n * @returns Array of computed values\n */\n toArray(): number[] {\n // Check if cache is valid by comparing versions\n if (this.cached !== null && this.cachedVersion === this.dataSource.version) {\n return this.cached;\n }\n\n // Recompute and update cache\n const bars = this.dataSource.bars;\n this.cached = bars.map((bar, i) => this.extractor(bar, i, bars));\n this.cachedVersion = this.dataSource.version;\n return this.cached;\n }\n\n /**\n * Materialize this Series by eagerly computing values and breaking closure chain\n * \n * This method addresses the closure chain memory leak issue:\n * - Computes all values immediately\n * - Creates a new Series that stores values directly\n * - Breaks references to parent Series objects\n * - Useful for complex expressions to free intermediate Series memory\n * \n * @example\n * ```typescript\n * // Without materialize: keeps a, b, c, d in memory via closures\n * const result = a.add(b).mul(c).div(d).sub(e);\n * \n * // With materialize: breaks chain, frees a, b, c memory\n * const result = a.add(b).mul(c).materialize().div(d).sub(e);\n * ```\n * \n * @returns New Series with computed values and no closure dependencies\n */\n materialize(): Series {\n const values = this.toArray();\n // Create a copy of values to ensure no shared references\n const valuesCopy = [...values];\n return Series.fromArray(this.dataSource, valuesCopy);\n }\n\n /**\n * Invalidate cache (when data changes)\n * \n * Note: With BarData versioning, manual invalidation is rarely needed.\n * The cache is automatically invalidated when the underlying BarData changes.\n * This method is kept for backward compatibility and advanced use cases.\n * \n * @internal\n */\n _invalidate(): void {\n this.cached = null;\n this.cachedVersion = -1;\n }\n\n /**\n * Compute all values (alias for toArray)\n * @returns Array of computed values\n * @internal\n */\n _compute(): number[] {\n return this.toArray();\n }\n\n /**\n * Get value at specific index\n * @param index - Bar index\n * @returns Value at that index\n */\n get(index: number): number {\n const values = this.toArray();\n return values[index] ?? NaN;\n }\n\n /**\n * Get the last value (most recent bar)\n * @returns Most recent value\n */\n last(): number {\n const values = this.toArray();\n return values[values.length - 1] ?? NaN;\n }\n\n /**\n * Get number of values\n * @returns Length of series\n */\n length(): number {\n return this.dataSource.length;\n }\n\n /**\n * Convert series to time-value pairs for charting\n * @returns Array of { time, value } objects\n */\n toTimeValuePairs(): Array<{ time: any; value: number }> {\n const values = this.toArray();\n const bars = this.dataSource.bars;\n return bars.map((bar, i) => ({\n time: bar.time,\n value: values[i]!\n })).filter(point => !Number.isNaN(point.value));\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAyB;AAyBlB,MAAM,QAAQ;AAAA,EACX;AAAA,EACA,WAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,EAM3B,YAAY,OAAc,CAAC,GAAG;AAC5B,SAAK,QAAQ;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,UAAkB;AACpB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAc;AAChB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,SAAiB;AACnB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,KAAK,KAAgB;AACnB,SAAK,MAAM,KAAK,GAAG;AACnB,SAAK;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAuB;AACrB,UAAM,MAAM,KAAK,MAAM,IAAI;AAC3B,QAAI,QAAQ,QAAW;AACrB,WAAK;AAAA,IACP;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAe,KAAgB;AACjC,QAAI,SAAS,KAAK,QAAQ,KAAK,MAAM,QAAQ;AAC3C,WAAK,MAAM,KAAK,IAAI;AACpB,WAAK;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,KAAgB;AACzB,QAAI,KAAK,MAAM,SAAS,GAAG;AACzB,WAAK,MAAM,KAAK,MAAM,SAAS,CAAC,IAAI;AACpC,WAAK;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,MAAmB;AACxB,SAAK,QAAQ;AACb,SAAK;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAmB;AACjB,SAAK;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,GAAG,OAAgC;AACjC,WAAO,KAAK,MAAM,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,KAAK,MAAsB;AAChC,WAAO,IAAI,QAAQ,IAAI;AAAA,EACzB;AACF;
|
|
4
|
+
"sourcesContent": ["/**\n * @fileoverview Simplified Series class for lazy time-series computation\n * Represents a time-series of values with lazy evaluation\n * @module runtime/series\n */\n\nimport * as compare from '../compare/index.js';\nimport type { Bar } from '../types/index.js';\n\n/**\n * Function that computes a value for each bar\n */\nexport type SeriesExtractor = (bar: Bar, index: number, data: Bar[]) => number;\n\n/**\n * BarData - Versioned wrapper around Bar[] array for cache invalidation\n * \n * This class wraps a Bar[] array and tracks a version number that increments\n * whenever the data is mutated. Series objects reference this to detect when\n * their cached values need to be recomputed.\n * \n * @example\n * ```typescript\n * const barData = new BarData(bars);\n * const close = Series.fromBars(barData, 'close');\n * const values1 = close.toArray(); // Computes and caches\n * \n * barData.push(newBar); // Increments version\n * const values2 = close.toArray(); // Detects stale cache, recomputes\n * ```\n */\nexport class BarData {\n private _bars: Bar[];\n private _version: number = 0;\n\n /**\n * Create a new BarData wrapper\n * @param bars - Initial bar data (defaults to empty array)\n */\n constructor(bars: Bar[] = []) {\n this._bars = bars;\n }\n\n /**\n * Get the current version number\n * Version increments whenever data is mutated\n */\n get version(): number {\n return this._version;\n }\n\n /**\n * Get the underlying bar array\n * Note: Direct mutations to this array will NOT increment version\n * Use the provided mutation methods instead\n */\n get bars(): Bar[] {\n return this._bars;\n }\n\n /**\n * Get the number of bars\n */\n get length(): number {\n return this._bars.length;\n }\n\n /**\n * Add a new bar to the end\n * @param bar - Bar to add\n */\n push(bar: Bar): void {\n this._bars.push(bar);\n this._version++;\n }\n\n /**\n * Remove and return the last bar\n * @returns The removed bar, or undefined if empty\n */\n pop(): Bar | undefined {\n const bar = this._bars.pop();\n if (bar !== undefined) {\n this._version++;\n }\n return bar;\n }\n\n /**\n * Replace a bar at a specific index\n * @param index - Index to update\n * @param bar - New bar data\n */\n set(index: number, bar: Bar): void {\n if (index >= 0 && index < this._bars.length) {\n this._bars[index] = bar;\n this._version++;\n }\n }\n\n /**\n * Update the last bar (useful for real-time/streaming updates)\n * @param bar - New bar data\n */\n updateLast(bar: Bar): void {\n if (this._bars.length > 0) {\n this._bars[this._bars.length - 1] = bar;\n this._version++;\n }\n }\n\n /**\n * Replace all bars with new data\n * @param bars - New bar array\n */\n setAll(bars: Bar[]): void {\n this._bars = bars;\n this._version++;\n }\n\n /**\n * Manually increment version (for advanced use cases)\n * Call this after direct mutations to the bars array\n */\n invalidate(): void {\n this._version++;\n }\n\n /**\n * Get a bar at a specific index\n * @param index - Bar index\n * @returns Bar at that index, or undefined\n */\n at(index: number): Bar | undefined {\n return this._bars[index];\n }\n\n /**\n * Create a BarData from an existing Bar array\n * @param bars - Bar array\n * @returns New BarData instance\n */\n static from(bars: Bar[]): BarData {\n return new BarData(bars);\n }\n}\n\n/**\n * Series - represents a time-series of values with lazy evaluation\n *\n * Series are lazy - they don't compute values until needed.\n * Operations on Series return new Series with composed extractors.\n *\n * Now supports automatic cache invalidation via BarData versioning\n * and memory-efficient closure chain breaking via materialize().\n *\n * @example\n * ```typescript\n * // Basic usage (backward compatible)\n * const close = Series.fromBars(bars, 'close');\n * const open = Series.fromBars(bars, 'open');\n * const range = close.sub(open); // Creates new Series, doesn't compute yet\n * const values = range.toArray(); // Now computes for all bars\n * \n * // With automatic cache invalidation\n * const barData = new BarData(bars);\n * const close = Series.fromBars(barData, 'close');\n * const values1 = close.toArray(); // Computes and caches\n * barData.push(newBar); // Version increments\n * const values2 = close.toArray(); // Detects stale cache, recomputes\n * \n * // Breaking closure chains for memory efficiency\n * const complex = a.add(b).mul(c).div(d).sub(e);\n * const materialized = complex.materialize(); // Breaks closure chain\n * ```\n */\n/** Largest history reference of a script series (PineScript max_bars_back limit). */\nexport const MAX_BARS_BACK = 5000;\n\n/** PineScript's runtime error RE10008 text. */\nexport function historyError(bar: number, barsBack: number): string {\n return (\n `Error on bar ${bar}: The script attempts to reference historical data that is too far from the current bar ` +\n `(${barsBack} bars back). The history-referencing length for the expression must be a value between 0 and ${MAX_BARS_BACK}.`\n );\n}\n\nexport class Series {\n private extractor: SeriesExtractor;\n private dataSource: BarData;\n private cached: number[] | null = null;\n private cachedVersion: number = -1;\n\n /**\n * Create a new Series\n *\n * @param data - Bar data (Bar[] or BarData)\n * @param extractor - Function to extract/compute value for each bar\n */\n /**\n * True for PineScript's built-in price variables (open, high, low, close, volume, hl2...): their history covers\n * every bar, so references further than 5000 bars back are allowed (measured: close[bar_index] runs).\n */\n fullHistory = false;\n\n constructor(data: Bar[] | BarData, extractor: SeriesExtractor) {\n // Support both Bar[] and BarData for backward compatibility\n this.dataSource = data instanceof BarData ? data : new BarData(data);\n this.extractor = extractor;\n }\n\n /**\n * Get the underlying bar data\n * @returns Bar array\n */\n get bars(): Bar[] {\n return this.dataSource.bars;\n }\n\n /**\n * Get the underlying BarData source\n * @returns BarData instance\n */\n get barData(): BarData {\n return this.dataSource;\n }\n\n // ============================================\n // Static Factory Methods\n // ============================================\n\n /**\n * Create Series from bar data by extracting a specific field\n * @param bars - Bar data (Bar[] or BarData)\n * @param field - Field to extract ('open', 'high', 'low', 'close', 'volume')\n * @returns Series with extracted field values\n */\n static fromBars(bars: Bar[] | BarData, field: 'open' | 'high' | 'low' | 'close' | 'volume'): Series {\n const series = new Series(bars, (bar) => bar[field] ?? NaN);\n series.fullHistory = true;\n return series;\n }\n\n /**\n * Create a constant series (same value for all bars)\n * @param bars - Bar data (Bar[] or BarData)\n * @param value - Constant value\n * @returns Series with constant value\n */\n static constant(bars: Bar[] | BarData, value: number): Series {\n return new Series(bars, () => value);\n }\n\n /**\n * Create series from array of values\n * @param bars - Bar data (Bar[] or BarData) for time alignment\n * @param values - Array of values\n * @returns Series\n * @throws When read on other bars with a different length than `values` (e.g. a series computed on the\n * chart bars and read inside a `request.security` expression, which runs on the higher-timeframe bars)\n */\n static fromArray(bars: Bar[] | BarData, values: number[]): Series {\n const origin = bars instanceof BarData ? bars.bars : bars;\n return new Series(bars, (_bar, i, data) => {\n if (data !== origin && data.length !== values.length) {\n throw new Error(\n `Series values were computed on other bars (${values.length} values, ${data.length} bars). ` +\n 'Inside request.security(), compute the series inside the expression, e.g. () => ta.ema(close, 10).'\n );\n }\n return values[i] ?? NaN;\n });\n }\n\n // ============================================\n // Arithmetic Operations\n // ============================================\n\n /**\n * Add two series or a series and a number\n * @param other - Series or number to add\n * @returns New Series representing the sum\n */\n add(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a + b;\n });\n }\n\n /**\n * Subtract two series or subtract a number from a series\n * @param other - Series or number to subtract\n * @returns New Series representing the difference\n */\n sub(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a - b;\n });\n }\n\n /**\n * Multiply two series or a series by a number\n * @param other - Series or number to multiply\n * @returns New Series representing the product\n */\n mul(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a * b;\n });\n }\n\n /**\n * Raise the series to a power (PineScript math.pow on a series)\n * @param exponent - Series or number exponent\n * @returns New Series representing base ** exponent\n */\n pow(exponent: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof exponent === 'number' ? exponent : exponent.extractor(bar, i, data);\n return Math.pow(a, b);\n });\n }\n\n /**\n * Divide two series or a series by a number\n * @param other - Series or number to divide by\n * @returns New Series representing the quotient\n */\n div(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a / b; // PineScript: x / 0 is +/-Infinity (na() is true for it), 0 / 0 is na\n });\n }\n\n /**\n * Modulo operation\n * @param other - Series or number for modulo\n * @returns New Series representing the remainder\n */\n mod(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return b !== 0 ? a % b : NaN;\n });\n }\n\n /**\n * Negation\n * @returns New Series with negated values\n */\n neg(): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n return -this.extractor(bar, i, data);\n });\n }\n\n // ============================================\n // Comparison Operations (PineScript operators: tolerance 1e-10, false with na; see src/compare)\n // ============================================\n\n /**\n * Greater than comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n gt(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.gt(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Greater than or equal comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n gte(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.ge(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Less than comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n lt(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.lt(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Less than or equal comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n lte(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.le(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Equality comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n eq(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.eq(a, b) ? 1 : 0;\n });\n }\n\n /**\n * Not equal comparison\n * @param other - Series or number to compare\n * @returns New Series with 1 where true, 0 where false\n */\n neq(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return compare.ne(a, b) ? 1 : 0;\n });\n }\n\n // ============================================\n // Logical Operations (for boolean series)\n // ============================================\n\n /**\n * Logical AND\n * @param other - Series or number (truthy/falsy)\n * @returns New Series with 1 where both true, 0 otherwise\n */\n and(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a && b ? 1 : 0;\n });\n }\n\n /**\n * Logical OR\n * @param other - Series or number (truthy/falsy)\n * @returns New Series with 1 where either true, 0 otherwise\n */\n or(other: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n const b = typeof other === 'number' ? other : other.extractor(bar, i, data);\n return a || b ? 1 : 0;\n });\n }\n\n /**\n * Logical NOT\n * @returns New Series with inverted boolean values\n */\n not(): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const a = this.extractor(bar, i, data);\n return !a ? 1 : 0;\n });\n }\n\n // ============================================\n // Conditional Selection\n // ============================================\n\n /**\n * Bar-by-bar conditional selection (ternary operator for Series)\n * Uses this Series as the condition (truthy = nonzero, falsy = zero/NaN)\n *\n * @param trueValue - Value or Series to use when condition is truthy\n * @param falseValue - Value or Series to use when condition is falsy\n * @returns New Series with bar-by-bar selected values\n *\n * @example\n * ```typescript\n * // PineScript: result = condition ? trueVal : falseVal\n * const result = condition.iff(trueVal, falseVal);\n *\n * // Example: RSI formula uses ternary for edge cases\n * // rsi = down == 0 ? 100 : up == 0 ? 0 : formula\n * const rsi = down.eq(0).iff(100, up.eq(0).iff(0, formula));\n * ```\n */\n iff(trueValue: Series | number, falseValue: Series | number): Series {\n return new Series(this.dataSource, (bar, i, data) => {\n const condition = this.extractor(bar, i, data);\n // Truthy: nonzero and not NaN\n const isTruthy = condition !== 0 && !Number.isNaN(condition);\n\n if (isTruthy) {\n return typeof trueValue === 'number' ? trueValue : trueValue.extractor(bar, i, data);\n } else {\n return typeof falseValue === 'number' ? falseValue : falseValue.extractor(bar, i, data);\n }\n });\n }\n\n // ============================================\n // Offset/History\n // ============================================\n\n /**\n * Access previous bars (like close[1] in PineScript)\n * @param offset - Number of bars back (0 or more)\n * @returns New Series with offset values\n * @throws RangeError when `offset` is negative\n */\n offset(offset: number): Series {\n if (offset < 0) throw new RangeError(`Series.offset(${offset}): the offset cannot be negative (it would read a future bar).`);\n // PineScript runtime error RE10008: a script series keeps at most 5000 bars of history\n if (offset > MAX_BARS_BACK && !this.fullHistory) throw new Error(historyError(0, Math.floor(offset)));\n return new Series(this.dataSource, (_bar, i, data) => {\n const targetIndex = i - offset;\n if (targetIndex < 0 || targetIndex >= data.length) {\n return NaN;\n }\n return this.extractor(data[targetIndex]!, targetIndex, data);\n });\n }\n\n // ============================================\n // Computation & Access\n // ============================================\n\n /**\n * Compute all values for the series\n * \n * Now includes automatic cache invalidation:\n * - Checks if dataSource version has changed since cache was computed\n * - Recomputes if version mismatch detected\n * - Stores version when cache is created\n * \n * @returns Array of computed values\n */\n toArray(): number[] {\n // Check if cache is valid by comparing versions\n if (this.cached !== null && this.cachedVersion === this.dataSource.version) {\n return this.cached;\n }\n\n // Recompute and update cache\n const bars = this.dataSource.bars;\n this.cached = bars.map((bar, i) => this.extractor(bar, i, bars));\n this.cachedVersion = this.dataSource.version;\n return this.cached;\n }\n\n /**\n * Materialize this Series by eagerly computing values and breaking closure chain\n * \n * This method addresses the closure chain memory leak issue:\n * - Computes all values immediately\n * - Creates a new Series that stores values directly\n * - Breaks references to parent Series objects\n * - Useful for complex expressions to free intermediate Series memory\n * \n * @example\n * ```typescript\n * // Without materialize: keeps a, b, c, d in memory via closures\n * const result = a.add(b).mul(c).div(d).sub(e);\n * \n * // With materialize: breaks chain, frees a, b, c memory\n * const result = a.add(b).mul(c).materialize().div(d).sub(e);\n * ```\n * \n * @returns New Series with computed values and no closure dependencies\n */\n materialize(): Series {\n const values = this.toArray();\n // Create a copy of values to ensure no shared references\n const valuesCopy = [...values];\n return Series.fromArray(this.dataSource, valuesCopy);\n }\n\n /**\n * Invalidate cache (when data changes)\n * \n * Note: With BarData versioning, manual invalidation is rarely needed.\n * The cache is automatically invalidated when the underlying BarData changes.\n * This method is kept for backward compatibility and advanced use cases.\n * \n * @internal\n */\n _invalidate(): void {\n this.cached = null;\n this.cachedVersion = -1;\n }\n\n /**\n * Compute all values (alias for toArray)\n * @returns Array of computed values\n * @internal\n */\n _compute(): number[] {\n return this.toArray();\n }\n\n /**\n * Get value at specific index\n * @param index - Bar index\n * @returns Value at that index\n */\n get(index: number): number {\n const values = this.toArray();\n return values[index] ?? NaN;\n }\n\n /**\n * Get the last value (most recent bar)\n * @returns Most recent value\n */\n last(): number {\n const values = this.toArray();\n return values[values.length - 1] ?? NaN;\n }\n\n /**\n * Get number of values\n * @returns Length of series\n */\n length(): number {\n return this.dataSource.length;\n }\n\n /**\n * Convert series to time-value pairs for charting\n * @returns Array of { time, value } objects\n */\n toTimeValuePairs(): Array<{ time: any; value: number }> {\n const values = this.toArray();\n const bars = this.dataSource.bars;\n return bars.map((bar, i) => ({\n time: bar.time,\n value: values[i]!\n })).filter(point => !Number.isNaN(point.value));\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -47,6 +47,7 @@ import * as polylineCore from '../polyline/index.js';
|
|
|
47
47
|
import * as chartPointCore from '../chartpoint/index.js';
|
|
48
48
|
import * as mathCore from '../math/index.js';
|
|
49
49
|
import * as timeframeCore from '../timeframe/index.js';
|
|
50
|
+
import * as strCore from '../str/index.js';
|
|
50
51
|
import { type SessionSpec } from '../session/calendar.js';
|
|
51
52
|
import type { ChartPoint } from '../types/index.js';
|
|
52
53
|
import { STRATEGY_CONSTANTS, type StrategyCloseAllOptions, type StrategyCloseOptions, type StrategyDirection, type StrategyEngine, type StrategyEntryOptions, type StrategyExitOptions, type StrategyNumberVariable, type StrategyOptions, type StrategyProperties, type StrategyRiskDirection, type StrategyRiskValueType, type StrategyTextVariable, type StrategyTrade } from '../strategy/index.js';
|
|
@@ -212,14 +213,14 @@ export declare const ta: {
|
|
|
212
213
|
iii: Series;
|
|
213
214
|
wad: Series;
|
|
214
215
|
wvad: Series;
|
|
215
|
-
sma(source: Series, length: number): Series;
|
|
216
|
+
sma(source: Series, length: number | Series): Series;
|
|
216
217
|
ema(source: Series, length: number): Series;
|
|
217
218
|
wma(source: Series, length: number): Series;
|
|
218
219
|
rma(source: Series, length: number): Series;
|
|
219
220
|
rsi(source: Series, length: number): Series;
|
|
220
221
|
macd(source: Series, fastLength: number, slowLength: number, signalLength: number): [Series, Series, Series];
|
|
221
222
|
bb(source: Series, length: number, mult: number): [Series, Series, Series];
|
|
222
|
-
stdev(source: Series, length: number, biased?: boolean): Series;
|
|
223
|
+
stdev(source: Series, length: number | Series, biased?: boolean): Series;
|
|
223
224
|
stoch(source: Series, high: Series, low: Series, length: number): Series;
|
|
224
225
|
crossover(source1: Series, source2: Series | number): Series;
|
|
225
226
|
crossunder(source1: Series, source2: Series | number): Series;
|
|
@@ -237,7 +238,7 @@ export declare const ta: {
|
|
|
237
238
|
zigzag(bars: Bar[], deviation?: number, depth?: number, backstep?: number): [Series, Series, Series];
|
|
238
239
|
cci(source: Series, length: number): Series;
|
|
239
240
|
dev(source: Series, length: number): Series;
|
|
240
|
-
variance(source: Series, length: number, biased?: boolean): Series;
|
|
241
|
+
variance(source: Series, length: number | Series, biased?: boolean): Series;
|
|
241
242
|
median(source: Series, length: number): Series;
|
|
242
243
|
swma(source: Series): Series;
|
|
243
244
|
correlation(source1: Series, source2: Series, length: number): Series;
|
|
@@ -343,11 +344,11 @@ export declare const color: {
|
|
|
343
344
|
when: typeof colorWhen;
|
|
344
345
|
rgb(red: import("../index.js").simple_int, green: import("../index.js").simple_int, blue: import("../index.js").simple_int, transp?: import("../index.js").simple_float): string;
|
|
345
346
|
from_hex(hex: string, transp?: import("../index.js").simple_float): string;
|
|
346
|
-
new_color(baseColor: import("../types/index.js").color, transp: import("../index.js").simple_float): string;
|
|
347
|
+
new_color(baseColor: import("../types/index.js").color | null | undefined, transp: import("../index.js").simple_float): string;
|
|
347
348
|
r(clr: import("../types/index.js").color): import("../index.js").int;
|
|
348
349
|
g(clr: import("../types/index.js").color): import("../index.js").int;
|
|
349
350
|
b(clr: import("../types/index.js").color): import("../index.js").int;
|
|
350
|
-
t(clr: import("../types/index.js").color): import("../index.js").float;
|
|
351
|
+
t(clr: import("../types/index.js").color | null | undefined): import("../index.js").float;
|
|
351
352
|
from_gradient(value: import("../index.js").float, bottom_value: import("../index.js").float, top_value: import("../index.js").float, bottom_color: import("../types/index.js").color, top_color: import("../types/index.js").color): string;
|
|
352
353
|
aqua: "#00BCD4";
|
|
353
354
|
black: "#363A45";
|
|
@@ -512,26 +513,6 @@ export interface BarContext {
|
|
|
512
513
|
/** This block's own previous output (PineScript self-reference, offset >= 1). */
|
|
513
514
|
prev(offset?: number): number;
|
|
514
515
|
}
|
|
515
|
-
/**
|
|
516
|
-
* Runs the callback once per bar, in order, and collects the returned values
|
|
517
|
-
* into a Series. This is the escape hatch for PineScript logic the vectorized
|
|
518
|
-
* model cannot express:
|
|
519
|
-
*
|
|
520
|
-
* - `var x = 0` / `x := ...` → a plain `let` variable captured by the closure
|
|
521
|
-
* - per-bar `if` / `for` / `while` → native JS statements
|
|
522
|
-
* - `src[k]` → `c.get(src, k)`; self-reference → `c.prev()`
|
|
523
|
-
*
|
|
524
|
-
* Returning a boolean collects 1/0; returning nothing collects na (NaN).
|
|
525
|
-
*
|
|
526
|
-
* ```typescript
|
|
527
|
-
* let dir = 0; // var dir = 0
|
|
528
|
-
* const trend = eachBar((c) => {
|
|
529
|
-
* if (c.close > c.get(close, 1)) dir = 1; // dir := 1
|
|
530
|
-
* else if (c.close < c.get(close, 1)) dir = -1;
|
|
531
|
-
* return dir;
|
|
532
|
-
* });
|
|
533
|
-
* ```
|
|
534
|
-
*/
|
|
535
516
|
export declare function eachBar(fn: (c: BarContext) => number | boolean | void): Series;
|
|
536
517
|
/**
|
|
537
518
|
* Runs the strategy logic once per bar, in order, like {@link eachBar}. On each bar the engine first
|
|
@@ -695,10 +676,10 @@ export declare function timestamp(year: number, month: number, day: number, hour
|
|
|
695
676
|
export declare function inSession(time: number, session: string, timezone?: string): boolean;
|
|
696
677
|
/** PineScript `str.*`; `format_time` and the dates of `format` use the exchange time zone by default. */
|
|
697
678
|
export declare const str: {
|
|
679
|
+
tostring: typeof strCore.tostring;
|
|
698
680
|
format_time(time: number, format?: string, timezone?: string): string;
|
|
699
681
|
format(pattern: string, ...args: unknown[]): string;
|
|
700
682
|
length(str: import("../index.js").simple_string): import("../index.js").int;
|
|
701
|
-
tostring(value: any, format?: import("../index.js").simple_string): string;
|
|
702
683
|
tonumber(str: import("../index.js").simple_string): import("../index.js").float | null;
|
|
703
684
|
substring(str: import("../index.js").simple_string, begin: import("../index.js").simple_int, end?: import("../index.js").simple_int): string;
|
|
704
685
|
upper(str: import("../index.js").simple_string): string;
|
|
@@ -715,7 +696,7 @@ export declare const str: {
|
|
|
715
696
|
trim(str: import("../index.js").simple_string): string;
|
|
716
697
|
trimLeft(str: import("../index.js").simple_string): string;
|
|
717
698
|
trimRight(str: import("../index.js").simple_string): string;
|
|
718
|
-
match(source: import("../index.js").simple_string, regex: import("../index.js").simple_string): import("../index.js").
|
|
699
|
+
match(source: import("../index.js").simple_string, regex: import("../index.js").simple_string): import("../index.js").simple_string | null;
|
|
719
700
|
repeat(source: import("../index.js").simple_string, count: import("../index.js").simple_int, separator?: import("../index.js").simple_string): string | null;
|
|
720
701
|
};
|
|
721
702
|
declare function timeFunction(tf?: string, session?: string, timezone?: string): Series;
|
|
@@ -945,11 +926,12 @@ export declare const math: {
|
|
|
945
926
|
floor(value: import("../index.js").float): import("../index.js").int;
|
|
946
927
|
round(value: Series, precision?: import("../index.js").int): Series;
|
|
947
928
|
round(value: import("../index.js").float, precision?: import("../index.js").int): import("../index.js").float;
|
|
929
|
+
constant(value: import("../index.js").float): import("../index.js").float;
|
|
948
930
|
max(...values: (import("../index.js").float | Series)[]): import("../index.js").float | Series;
|
|
949
931
|
min(...values: (import("../index.js").float | Series)[]): import("../index.js").float | Series;
|
|
950
932
|
avg(...values: (import("../index.js").float | Series)[]): import("../index.js").float | Series;
|
|
951
|
-
sum(source: Series, length: import("../index.js").simple_int): Series;
|
|
952
|
-
sum(source: import("../index.js").series_float, length: import("../index.js").simple_int): import("../index.js").series_float;
|
|
933
|
+
sum(source: Series, length: import("../index.js").simple_int | ArrayLike<number> | Series): Series;
|
|
934
|
+
sum(source: import("../index.js").series_float, length: import("../index.js").simple_int | ArrayLike<number> | Series): import("../index.js").series_float;
|
|
953
935
|
sqrt(value: Series): Series;
|
|
954
936
|
sqrt(value: import("../index.js").float): import("../index.js").float;
|
|
955
937
|
pow(base: Series, exponent: import("../index.js").float): Series;
|
|
@@ -978,13 +960,15 @@ export declare const math: {
|
|
|
978
960
|
toradians(degrees: import("../index.js").float): import("../index.js").float;
|
|
979
961
|
todegrees(radians: Series): Series;
|
|
980
962
|
todegrees(radians: import("../index.js").float): import("../index.js").float;
|
|
981
|
-
|
|
963
|
+
seededRandom(seed: import("../index.js").int): (min?: import("../index.js").float, max?: import("../index.js").float) => import("../index.js").float;
|
|
964
|
+
resetRandom(): void;
|
|
965
|
+
random(min?: import("../index.js").float, max?: import("../index.js").float, seed?: import("../index.js").int): import("../index.js").float;
|
|
982
966
|
sign(value: Series): Series;
|
|
983
967
|
sign(value: import("../index.js").float): import("../index.js").int;
|
|
984
968
|
pi: number;
|
|
985
969
|
e: number;
|
|
986
970
|
phi: 1.618033988749895;
|
|
987
|
-
rphi: 0.
|
|
971
|
+
rphi: 0.6180339887498948;
|
|
988
972
|
};
|
|
989
973
|
export * as compare from '../compare/index.js';
|
|
990
974
|
export type { Bar, IndicatorResult, TimeValue, InputConfig, PlotConfig, HLineConfig, FillConfig, ShapeConfig, ArrowConfig, BarColorConfig, MarkerData, ArrowData, BarColorData, MarkerLocation, MarkerSize, ShapeStyle, };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/script/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/script/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/script/index.js
CHANGED
|
@@ -114,6 +114,7 @@ var import_calendar = require("../session/calendar.js");
|
|
|
114
114
|
var import_bars = require("../session/bars.js");
|
|
115
115
|
var import_resample = require("../security/resample.js");
|
|
116
116
|
var import_strategy = require("../strategy/index.js");
|
|
117
|
+
var import_session = require("../time/session.js");
|
|
117
118
|
var import_strategy2 = require("../strategy/index.js");
|
|
118
119
|
var compare = __toESM(require("../compare/index.js"), 1);
|
|
119
120
|
const ctxBars = new import_series.BarData([]);
|
|
@@ -164,6 +165,7 @@ function executeScript(body, barsInput, inputs = {}, chart2 = {}, options = {})
|
|
|
164
165
|
scriptOptions = options;
|
|
165
166
|
ctx = freshCollector(inputs);
|
|
166
167
|
(0, import_registry.resetDrawings)();
|
|
168
|
+
mathCore.resetRandom();
|
|
167
169
|
try {
|
|
168
170
|
body();
|
|
169
171
|
const c = ctx;
|
|
@@ -299,6 +301,7 @@ const hl2 = new import_series.Series(ctxBars, (b) => (b.high + b.low) / 2);
|
|
|
299
301
|
const hlc3 = new import_series.Series(ctxBars, (b) => (b.high + b.low + b.close) / 3);
|
|
300
302
|
const ohlc4 = new import_series.Series(ctxBars, (b) => (b.open + b.high + b.low + b.close) / 4);
|
|
301
303
|
const hlcc4 = new import_series.Series(ctxBars, (b) => (b.high + b.low + b.close + b.close) / 4);
|
|
304
|
+
for (const s of [hl2, hlc3, ohlc4, hlcc4]) s.fullHistory = true;
|
|
302
305
|
const SOURCES = { open, high, low, close, volume, hl2, hlc3, ohlc4, hlcc4 };
|
|
303
306
|
function sourceSeries(name) {
|
|
304
307
|
return SOURCES[name] ?? close;
|
|
@@ -583,11 +586,15 @@ function bgcolor(colors, options = {}) {
|
|
|
583
586
|
function barcolor(colors, options = {}) {
|
|
584
587
|
emitBarColors("barcolor", colors, options);
|
|
585
588
|
}
|
|
589
|
+
const HISTORY_START = 242;
|
|
590
|
+
const HISTORY_GROWTH = 1.618034;
|
|
586
591
|
function eachBar(fn) {
|
|
587
592
|
collector();
|
|
588
593
|
const b = bars();
|
|
589
594
|
const out = new Array(b.length).fill(NaN);
|
|
590
595
|
const cache = /* @__PURE__ */ new Map();
|
|
596
|
+
const buffers = /* @__PURE__ */ new Map();
|
|
597
|
+
let pendingError = null;
|
|
591
598
|
let idx = 0;
|
|
592
599
|
const ctx2 = {
|
|
593
600
|
get i() {
|
|
@@ -614,6 +621,13 @@ function eachBar(fn) {
|
|
|
614
621
|
},
|
|
615
622
|
get(src, offset = 0) {
|
|
616
623
|
if (offset < 0) throw new RangeError(`c.get(): the offset cannot be negative (${offset} would read a future bar).`);
|
|
624
|
+
if (!src.fullHistory && offset > 0) {
|
|
625
|
+
const k = Math.floor(offset);
|
|
626
|
+
if (k > import_series.MAX_BARS_BACK) throw new Error((0, import_series.historyError)(idx, k));
|
|
627
|
+
let buffer = buffers.get(src);
|
|
628
|
+
if (!buffer) buffers.set(src, buffer = { size: HISTORY_START, previous: 0, barMax: 0 });
|
|
629
|
+
if (k > buffer.barMax) buffer.barMax = k;
|
|
630
|
+
}
|
|
617
631
|
let vals = cache.get(src);
|
|
618
632
|
if (!vals) {
|
|
619
633
|
vals = src.toArray();
|
|
@@ -629,9 +643,20 @@ function eachBar(fn) {
|
|
|
629
643
|
};
|
|
630
644
|
try {
|
|
631
645
|
for (idx = 0; idx < b.length; idx++) {
|
|
646
|
+
if (pendingError && pendingError.bar === idx) throw new Error((0, import_series.historyError)(idx, pendingError.barsBack));
|
|
632
647
|
currentBar = idx;
|
|
633
648
|
const r = fn(ctx2);
|
|
634
649
|
out[idx] = typeof r === "number" ? r : typeof r === "boolean" ? r ? 1 : 0 : NaN;
|
|
650
|
+
for (const buffer of buffers.values()) {
|
|
651
|
+
const k = buffer.barMax;
|
|
652
|
+
if (k > buffer.size) {
|
|
653
|
+
const next = k - buffer.previous > 1 ? k : Math.round(buffer.size * HISTORY_GROWTH);
|
|
654
|
+
if (next > import_series.MAX_BARS_BACK && !pendingError) pendingError = { bar: idx + 1, barsBack: next };
|
|
655
|
+
buffer.size = next;
|
|
656
|
+
}
|
|
657
|
+
buffer.previous = k;
|
|
658
|
+
buffer.barMax = 0;
|
|
659
|
+
}
|
|
635
660
|
}
|
|
636
661
|
} finally {
|
|
637
662
|
currentBar = -1;
|
|
@@ -900,6 +925,8 @@ function inSession(time2, session2, timezone) {
|
|
|
900
925
|
}
|
|
901
926
|
const str = {
|
|
902
927
|
...strCore,
|
|
928
|
+
// format.mintick rounds to the chart symbol's tick (syminfo.mintick)
|
|
929
|
+
tostring: ((value, format, mintick) => strCore.tostring(value, format, format === "mintick" ? mintick ?? syminfo.mintick : mintick)),
|
|
903
930
|
format_time(time2, format = "yyyy-MM-dd'T'HH:mm:ssZ", timezone) {
|
|
904
931
|
return strCore.format_time(time2, format, timezone ?? exchangeTimezone());
|
|
905
932
|
},
|
|
@@ -933,6 +960,11 @@ function calendarFor(session2, timezone) {
|
|
|
933
960
|
const { bars: bars2 } = sessionBars();
|
|
934
961
|
if (!session2 && !timezone) return { bars: bars2, test: false };
|
|
935
962
|
const tz = timezone ?? exchangeTimezone();
|
|
963
|
+
if (session2 !== void 0 && (0, import_session.parsePineSession)(session2) === null) {
|
|
964
|
+
const name = session2.trim();
|
|
965
|
+
const symbol = name === "regular" && chartCtx.regularSession ? chartCtx.regularSession : chartCtx.session;
|
|
966
|
+
return { bars: new import_bars.SessionBars(new import_calendar.TradingCalendar(tz, { session: toSpec(symbol).session }, "symbol"), bars2.chart.period), test: true };
|
|
967
|
+
}
|
|
936
968
|
const spec = session2 ? { session: session2 } : { session: toSpec(chartCtx.session).session };
|
|
937
969
|
return { bars: new import_bars.SessionBars(new import_calendar.TradingCalendar(tz, spec, session2 ? "pine" : "symbol"), bars2.chart.period), test: true };
|
|
938
970
|
}
|