@tradejs/core 3.1.29-beta.286 → 3.1.29-beta.288

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.
@@ -697,6 +697,27 @@ var toMlCandle = (candle) => ({
697
697
  turnover: Number(candle.turnover) || 0,
698
698
  timestamp: Number(candle.timestamp) || 0
699
699
  });
700
+ var referenceCandleSnapshots = /* @__PURE__ */ new WeakMap();
701
+ var referenceCandleFields = [
702
+ "open",
703
+ "high",
704
+ "low",
705
+ "close",
706
+ "volume",
707
+ "turnover",
708
+ "timestamp"
709
+ ];
710
+ var toSharedReferenceCandle = (candle) => {
711
+ const normalized = toMlCandle(candle);
712
+ const previous = referenceCandleSnapshots.get(candle);
713
+ if (previous && referenceCandleFields.every(
714
+ (key) => Object.is(previous[key], normalized[key])
715
+ ))
716
+ return previous;
717
+ const snapshot = Object.freeze(normalized);
718
+ referenceCandleSnapshots.set(candle, snapshot);
719
+ return snapshot;
720
+ };
700
721
  var cloneMlCandle = (candle) => ({
701
722
  open: candle.open,
702
723
  high: candle.high,
@@ -10003,7 +10024,7 @@ var createIndicators = (data, btcData = [], options = {}) => {
10003
10024
  const candlesHistory = [];
10004
10025
  const btcCandlesHistory = [];
10005
10026
  const ethCandlesHistory = [];
10006
- const ethData = (options.ethData ?? []).map(toMlCandle);
10027
+ const ethData = (options.ethData ?? []).map(toSharedReferenceCandle);
10007
10028
  let ethCandlesByTimestamp = null;
10008
10029
  const resolveEthCandle = (candle, index) => {
10009
10030
  const alignedEthCandle = ethData[index];
@@ -10015,8 +10036,12 @@ var createIndicators = (data, btcData = [], options = {}) => {
10015
10036
  );
10016
10037
  return ethCandlesByTimestamp.get(candle.timestamp);
10017
10038
  };
10018
- let btcBinanceCandles = (options.btcBinanceData ?? []).map(toMlCandle);
10019
- let btcCoinbaseCandles = (options.btcCoinbaseData ?? []).map(toMlCandle);
10039
+ let btcBinanceCandles = (options.btcBinanceData ?? []).map(
10040
+ toSharedReferenceCandle
10041
+ );
10042
+ let btcCoinbaseCandles = (options.btcCoinbaseData ?? []).map(
10043
+ toSharedReferenceCandle
10044
+ );
10020
10045
  const restoredState = options.initialRuntimeState;
10021
10046
  const spreadSmoother = createSerializableSpreadSmoother(
10022
10047
  void 0,
@@ -10030,8 +10055,8 @@ var createIndicators = (data, btcData = [], options = {}) => {
10030
10055
  }) => {
10031
10056
  const binanceCursorTimestamp = btcBinanceCandles[btcBinanceCursor]?.timestamp ?? null;
10032
10057
  const coinbaseCursorTimestamp = btcCoinbaseCandles[btcCoinbaseCursor]?.timestamp ?? null;
10033
- btcBinanceCandles = (btcBinanceData ?? []).map(toMlCandle);
10034
- btcCoinbaseCandles = (btcCoinbaseData ?? []).map(toMlCandle);
10058
+ btcBinanceCandles = (btcBinanceData ?? []).map(toSharedReferenceCandle);
10059
+ btcCoinbaseCandles = (btcCoinbaseData ?? []).map(toSharedReferenceCandle);
10035
10060
  const resolveCursor = (candles, timestamp) => {
10036
10061
  if (candles.length === 0 || timestamp == null) {
10037
10062
  return 0;
@@ -814,6 +814,27 @@ var toMlCandle = (candle) => ({
814
814
  turnover: Number(candle.turnover) || 0,
815
815
  timestamp: Number(candle.timestamp) || 0
816
816
  });
817
+ var referenceCandleSnapshots = /* @__PURE__ */ new WeakMap();
818
+ var referenceCandleFields = [
819
+ "open",
820
+ "high",
821
+ "low",
822
+ "close",
823
+ "volume",
824
+ "turnover",
825
+ "timestamp"
826
+ ];
827
+ var toSharedReferenceCandle = (candle) => {
828
+ const normalized = toMlCandle(candle);
829
+ const previous = referenceCandleSnapshots.get(candle);
830
+ if (previous && referenceCandleFields.every(
831
+ (key) => Object.is(previous[key], normalized[key])
832
+ ))
833
+ return previous;
834
+ const snapshot = Object.freeze(normalized);
835
+ referenceCandleSnapshots.set(candle, snapshot);
836
+ return snapshot;
837
+ };
817
838
  var cloneMlCandle = (candle) => ({
818
839
  open: candle.open,
819
840
  high: candle.high,
@@ -10120,7 +10141,7 @@ var createIndicators = (data, btcData = [], options = {}) => {
10120
10141
  const candlesHistory = [];
10121
10142
  const btcCandlesHistory = [];
10122
10143
  const ethCandlesHistory = [];
10123
- const ethData = (options.ethData ?? []).map(toMlCandle);
10144
+ const ethData = (options.ethData ?? []).map(toSharedReferenceCandle);
10124
10145
  let ethCandlesByTimestamp = null;
10125
10146
  const resolveEthCandle = (candle, index) => {
10126
10147
  const alignedEthCandle = ethData[index];
@@ -10132,8 +10153,12 @@ var createIndicators = (data, btcData = [], options = {}) => {
10132
10153
  );
10133
10154
  return ethCandlesByTimestamp.get(candle.timestamp);
10134
10155
  };
10135
- let btcBinanceCandles = (options.btcBinanceData ?? []).map(toMlCandle);
10136
- let btcCoinbaseCandles = (options.btcCoinbaseData ?? []).map(toMlCandle);
10156
+ let btcBinanceCandles = (options.btcBinanceData ?? []).map(
10157
+ toSharedReferenceCandle
10158
+ );
10159
+ let btcCoinbaseCandles = (options.btcCoinbaseData ?? []).map(
10160
+ toSharedReferenceCandle
10161
+ );
10137
10162
  const restoredState = options.initialRuntimeState;
10138
10163
  const spreadSmoother = createSerializableSpreadSmoother(
10139
10164
  void 0,
@@ -10147,8 +10172,8 @@ var createIndicators = (data, btcData = [], options = {}) => {
10147
10172
  }) => {
10148
10173
  const binanceCursorTimestamp = btcBinanceCandles[btcBinanceCursor]?.timestamp ?? null;
10149
10174
  const coinbaseCursorTimestamp = btcCoinbaseCandles[btcCoinbaseCursor]?.timestamp ?? null;
10150
- btcBinanceCandles = (btcBinanceData ?? []).map(toMlCandle);
10151
- btcCoinbaseCandles = (btcCoinbaseData ?? []).map(toMlCandle);
10175
+ btcBinanceCandles = (btcBinanceData ?? []).map(toSharedReferenceCandle);
10176
+ btcCoinbaseCandles = (btcCoinbaseData ?? []).map(toSharedReferenceCandle);
10152
10177
  const resolveCursor = (candles, timestamp) => {
10153
10178
  if (candles.length === 0 || timestamp == null) {
10154
10179
  return 0;
@@ -39,7 +39,7 @@ import {
39
39
  toArrayData,
40
40
  toCoinalyzeTimestampMs,
41
41
  toFiniteNumber
42
- } from "./chunk-IS72ATRN.mjs";
42
+ } from "./chunk-OZVRWW2K.mjs";
43
43
  import "./chunk-WJQRRGUY.mjs";
44
44
  import "./chunk-S4KHOAXM.mjs";
45
45
  import "./chunk-LI6FPPKB.mjs";
@@ -246,6 +246,27 @@ var toMlCandle = (candle) => ({
246
246
  turnover: Number(candle.turnover) || 0,
247
247
  timestamp: Number(candle.timestamp) || 0
248
248
  });
249
+ var referenceCandleSnapshots = /* @__PURE__ */ new WeakMap();
250
+ var referenceCandleFields = [
251
+ "open",
252
+ "high",
253
+ "low",
254
+ "close",
255
+ "volume",
256
+ "turnover",
257
+ "timestamp"
258
+ ];
259
+ var toSharedReferenceCandle = (candle) => {
260
+ const normalized = toMlCandle(candle);
261
+ const previous = referenceCandleSnapshots.get(candle);
262
+ if (previous && referenceCandleFields.every(
263
+ (key) => Object.is(previous[key], normalized[key])
264
+ ))
265
+ return previous;
266
+ const snapshot = Object.freeze(normalized);
267
+ referenceCandleSnapshots.set(candle, snapshot);
268
+ return snapshot;
269
+ };
249
270
  var cloneMlCandle = (candle) => ({
250
271
  open: candle.open,
251
272
  high: candle.high,
@@ -9419,7 +9440,7 @@ var createIndicators = (data, btcData = [], options = {}) => {
9419
9440
  const candlesHistory = [];
9420
9441
  const btcCandlesHistory = [];
9421
9442
  const ethCandlesHistory = [];
9422
- const ethData = (options.ethData ?? []).map(toMlCandle);
9443
+ const ethData = (options.ethData ?? []).map(toSharedReferenceCandle);
9423
9444
  let ethCandlesByTimestamp = null;
9424
9445
  const resolveEthCandle = (candle, index) => {
9425
9446
  const alignedEthCandle = ethData[index];
@@ -9431,8 +9452,12 @@ var createIndicators = (data, btcData = [], options = {}) => {
9431
9452
  );
9432
9453
  return ethCandlesByTimestamp.get(candle.timestamp);
9433
9454
  };
9434
- let btcBinanceCandles = (options.btcBinanceData ?? []).map(toMlCandle);
9435
- let btcCoinbaseCandles = (options.btcCoinbaseData ?? []).map(toMlCandle);
9455
+ let btcBinanceCandles = (options.btcBinanceData ?? []).map(
9456
+ toSharedReferenceCandle
9457
+ );
9458
+ let btcCoinbaseCandles = (options.btcCoinbaseData ?? []).map(
9459
+ toSharedReferenceCandle
9460
+ );
9436
9461
  const restoredState = options.initialRuntimeState;
9437
9462
  const spreadSmoother = createSerializableSpreadSmoother(
9438
9463
  void 0,
@@ -9446,8 +9471,8 @@ var createIndicators = (data, btcData = [], options = {}) => {
9446
9471
  }) => {
9447
9472
  const binanceCursorTimestamp = btcBinanceCandles[btcBinanceCursor]?.timestamp ?? null;
9448
9473
  const coinbaseCursorTimestamp = btcCoinbaseCandles[btcCoinbaseCursor]?.timestamp ?? null;
9449
- btcBinanceCandles = (btcBinanceData ?? []).map(toMlCandle);
9450
- btcCoinbaseCandles = (btcCoinbaseData ?? []).map(toMlCandle);
9474
+ btcBinanceCandles = (btcBinanceData ?? []).map(toSharedReferenceCandle);
9475
+ btcCoinbaseCandles = (btcCoinbaseData ?? []).map(toSharedReferenceCandle);
9451
9476
  const resolveCursor = (candles, timestamp) => {
9452
9477
  if (candles.length === 0 || timestamp == null) {
9453
9478
  return 0;
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  createIndicators,
6
6
  getRequiredControllerSeedWindow
7
- } from "./chunk-IS72ATRN.mjs";
7
+ } from "./chunk-OZVRWW2K.mjs";
8
8
  import "./chunk-WJQRRGUY.mjs";
9
9
  import {
10
10
  getTimestamp
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tradejs/core",
3
- "version": "3.1.29-beta.286",
3
+ "version": "3.1.29-beta.288",
4
4
  "description": "MIT-licensed browser-safe API for TradeJS config, strategy authoring, figures, and shared helpers.",
5
5
  "keywords": [
6
6
  "tradejs",
@@ -138,7 +138,7 @@
138
138
  }
139
139
  },
140
140
  "dependencies": {
141
- "@tradejs/types": "^3.1.29-beta.286",
141
+ "@tradejs/types": "^3.1.29-beta.288",
142
142
  "date-fns": "^3.6.0",
143
143
  "fast-technical-indicators": "^1.1.4",
144
144
  "klinecharts": "10.0.0-alpha9",