backtest-kit 5.6.6 → 5.6.8
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/build/index.cjs +108 -15
- package/build/index.mjs +108 -15
- package/package.json +1 -1
package/build/index.cjs
CHANGED
|
@@ -11702,9 +11702,17 @@ const CALL_SIGNAL_BACKTEST_FN = functoolsKit.trycatch(async (event, self) => {
|
|
|
11702
11702
|
* Wrapper to call breakevenAvailable method with error capture.
|
|
11703
11703
|
*/
|
|
11704
11704
|
const CALL_BREAKEVEN_AVAILABLE_FN = functoolsKit.trycatch(async (event, self) => {
|
|
11705
|
-
if (self._target.breakevenAvailable) {
|
|
11706
|
-
return
|
|
11705
|
+
if (!self._target.breakevenAvailable) {
|
|
11706
|
+
return;
|
|
11707
|
+
}
|
|
11708
|
+
if (await functoolsKit.not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11709
|
+
strategyName: event.strategyName,
|
|
11710
|
+
exchangeName: event.exchangeName,
|
|
11711
|
+
frameName: event.frameName,
|
|
11712
|
+
}))) {
|
|
11713
|
+
return;
|
|
11707
11714
|
}
|
|
11715
|
+
return await self._target.breakevenAvailable(event);
|
|
11708
11716
|
}, {
|
|
11709
11717
|
fallback: (error) => {
|
|
11710
11718
|
const message = "ActionProxy.breakevenAvailable thrown";
|
|
@@ -11722,9 +11730,17 @@ const CALL_BREAKEVEN_AVAILABLE_FN = functoolsKit.trycatch(async (event, self) =>
|
|
|
11722
11730
|
* Wrapper to call partialProfitAvailable method with error capture.
|
|
11723
11731
|
*/
|
|
11724
11732
|
const CALL_PARTIAL_PROFIT_AVAILABLE_FN = functoolsKit.trycatch(async (event, self) => {
|
|
11725
|
-
if (self._target.partialProfitAvailable) {
|
|
11726
|
-
return
|
|
11733
|
+
if (!self._target.partialProfitAvailable) {
|
|
11734
|
+
return;
|
|
11727
11735
|
}
|
|
11736
|
+
if (await functoolsKit.not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11737
|
+
strategyName: event.strategyName,
|
|
11738
|
+
exchangeName: event.exchangeName,
|
|
11739
|
+
frameName: event.frameName,
|
|
11740
|
+
}))) {
|
|
11741
|
+
return;
|
|
11742
|
+
}
|
|
11743
|
+
return await self._target.partialProfitAvailable(event);
|
|
11728
11744
|
}, {
|
|
11729
11745
|
fallback: (error) => {
|
|
11730
11746
|
const message = "ActionProxy.partialProfitAvailable thrown";
|
|
@@ -11742,9 +11758,17 @@ const CALL_PARTIAL_PROFIT_AVAILABLE_FN = functoolsKit.trycatch(async (event, sel
|
|
|
11742
11758
|
* Wrapper to call partialLossAvailable method with error capture.
|
|
11743
11759
|
*/
|
|
11744
11760
|
const CALL_PARTIAL_LOSS_AVAILABLE_FN = functoolsKit.trycatch(async (event, self) => {
|
|
11745
|
-
if (self._target.partialLossAvailable) {
|
|
11746
|
-
return
|
|
11761
|
+
if (!self._target.partialLossAvailable) {
|
|
11762
|
+
return;
|
|
11747
11763
|
}
|
|
11764
|
+
if (await functoolsKit.not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11765
|
+
strategyName: event.strategyName,
|
|
11766
|
+
exchangeName: event.exchangeName,
|
|
11767
|
+
frameName: event.frameName,
|
|
11768
|
+
}))) {
|
|
11769
|
+
return;
|
|
11770
|
+
}
|
|
11771
|
+
return await self._target.partialLossAvailable(event);
|
|
11748
11772
|
}, {
|
|
11749
11773
|
fallback: (error) => {
|
|
11750
11774
|
const message = "ActionProxy.partialLossAvailable thrown";
|
|
@@ -11762,9 +11786,17 @@ const CALL_PARTIAL_LOSS_AVAILABLE_FN = functoolsKit.trycatch(async (event, self)
|
|
|
11762
11786
|
* Wrapper to call pingScheduled method with error capture.
|
|
11763
11787
|
*/
|
|
11764
11788
|
const CALL_PING_SCHEDULED_FN = functoolsKit.trycatch(async (event, self) => {
|
|
11765
|
-
if (self._target.pingScheduled) {
|
|
11766
|
-
return
|
|
11789
|
+
if (!self._target.pingScheduled) {
|
|
11790
|
+
return;
|
|
11767
11791
|
}
|
|
11792
|
+
if (await functoolsKit.not(bt.strategyCoreService.hasScheduledSignal(event.backtest, event.symbol, {
|
|
11793
|
+
strategyName: event.data.strategyName,
|
|
11794
|
+
exchangeName: event.data.exchangeName,
|
|
11795
|
+
frameName: event.data.frameName,
|
|
11796
|
+
}))) {
|
|
11797
|
+
return;
|
|
11798
|
+
}
|
|
11799
|
+
return await self._target.pingScheduled(event);
|
|
11768
11800
|
}, {
|
|
11769
11801
|
fallback: (error) => {
|
|
11770
11802
|
const message = "ActionProxy.pingScheduled thrown";
|
|
@@ -11782,9 +11814,17 @@ const CALL_PING_SCHEDULED_FN = functoolsKit.trycatch(async (event, self) => {
|
|
|
11782
11814
|
* Wrapper to call pingActive method with error capture.
|
|
11783
11815
|
*/
|
|
11784
11816
|
const CALL_PING_ACTIVE_FN = functoolsKit.trycatch(async (event, self) => {
|
|
11785
|
-
if (self._target.pingActive) {
|
|
11786
|
-
return
|
|
11817
|
+
if (!self._target.pingActive) {
|
|
11818
|
+
return;
|
|
11787
11819
|
}
|
|
11820
|
+
if (await functoolsKit.not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11821
|
+
strategyName: event.data.strategyName,
|
|
11822
|
+
exchangeName: event.data.exchangeName,
|
|
11823
|
+
frameName: event.data.frameName,
|
|
11824
|
+
}))) {
|
|
11825
|
+
return;
|
|
11826
|
+
}
|
|
11827
|
+
return await self._target.pingActive(event);
|
|
11788
11828
|
}, {
|
|
11789
11829
|
fallback: (error) => {
|
|
11790
11830
|
const message = "ActionProxy.pingActive thrown";
|
|
@@ -35737,7 +35777,16 @@ function listenValidation(fn) {
|
|
|
35737
35777
|
*/
|
|
35738
35778
|
function listenPartialProfitAvailable(fn) {
|
|
35739
35779
|
bt.loggerService.log(LISTEN_PARTIAL_PROFIT_METHOD_NAME);
|
|
35740
|
-
|
|
35780
|
+
const wrappedFn = async (event) => {
|
|
35781
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
35782
|
+
strategyName: event.strategyName,
|
|
35783
|
+
exchangeName: event.exchangeName,
|
|
35784
|
+
frameName: event.frameName,
|
|
35785
|
+
})) {
|
|
35786
|
+
await fn(event);
|
|
35787
|
+
}
|
|
35788
|
+
};
|
|
35789
|
+
return partialProfitSubject.subscribe(functoolsKit.queued(wrappedFn));
|
|
35741
35790
|
}
|
|
35742
35791
|
/**
|
|
35743
35792
|
* Subscribes to filtered partial profit level events with one-time execution.
|
|
@@ -35806,7 +35855,16 @@ function listenPartialProfitAvailableOnce(filterFn, fn) {
|
|
|
35806
35855
|
*/
|
|
35807
35856
|
function listenPartialLossAvailable(fn) {
|
|
35808
35857
|
bt.loggerService.log(LISTEN_PARTIAL_LOSS_METHOD_NAME);
|
|
35809
|
-
|
|
35858
|
+
const wrappedFn = async (event) => {
|
|
35859
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
35860
|
+
strategyName: event.strategyName,
|
|
35861
|
+
exchangeName: event.exchangeName,
|
|
35862
|
+
frameName: event.frameName,
|
|
35863
|
+
})) {
|
|
35864
|
+
await fn(event);
|
|
35865
|
+
}
|
|
35866
|
+
};
|
|
35867
|
+
return partialLossSubject.subscribe(functoolsKit.queued(wrappedFn));
|
|
35810
35868
|
}
|
|
35811
35869
|
/**
|
|
35812
35870
|
* Subscribes to filtered partial loss level events with one-time execution.
|
|
@@ -35877,7 +35935,16 @@ function listenPartialLossAvailableOnce(filterFn, fn) {
|
|
|
35877
35935
|
*/
|
|
35878
35936
|
function listenBreakevenAvailable(fn) {
|
|
35879
35937
|
bt.loggerService.log(LISTEN_BREAKEVEN_METHOD_NAME);
|
|
35880
|
-
|
|
35938
|
+
const wrappedFn = async (event) => {
|
|
35939
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
35940
|
+
strategyName: event.strategyName,
|
|
35941
|
+
exchangeName: event.exchangeName,
|
|
35942
|
+
frameName: event.frameName,
|
|
35943
|
+
})) {
|
|
35944
|
+
await fn(event);
|
|
35945
|
+
}
|
|
35946
|
+
};
|
|
35947
|
+
return breakevenSubject.subscribe(functoolsKit.queued(wrappedFn));
|
|
35881
35948
|
}
|
|
35882
35949
|
/**
|
|
35883
35950
|
* Subscribes to filtered breakeven protection events with one-time execution.
|
|
@@ -36190,7 +36257,24 @@ function listenActivePingOnce(filterFn, fn) {
|
|
|
36190
36257
|
*/
|
|
36191
36258
|
function listenStrategyCommit(fn) {
|
|
36192
36259
|
bt.loggerService.log(LISTEN_STRATEGY_COMMIT_METHOD_NAME);
|
|
36193
|
-
|
|
36260
|
+
const wrappedFn = async (event) => {
|
|
36261
|
+
if (event.action === "cancel-scheduled") {
|
|
36262
|
+
await fn(event);
|
|
36263
|
+
return;
|
|
36264
|
+
}
|
|
36265
|
+
if (event.action === "close-pending") {
|
|
36266
|
+
await fn(event);
|
|
36267
|
+
return;
|
|
36268
|
+
}
|
|
36269
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
36270
|
+
strategyName: event.strategyName,
|
|
36271
|
+
exchangeName: event.exchangeName,
|
|
36272
|
+
frameName: event.frameName,
|
|
36273
|
+
})) {
|
|
36274
|
+
await fn(event);
|
|
36275
|
+
}
|
|
36276
|
+
};
|
|
36277
|
+
return strategyCommitSubject.subscribe(functoolsKit.queued(wrappedFn));
|
|
36194
36278
|
}
|
|
36195
36279
|
/**
|
|
36196
36280
|
* Subscribes to filtered strategy management events with one-time execution.
|
|
@@ -36291,7 +36375,16 @@ function listenSyncOnce(filterFn, fn) {
|
|
|
36291
36375
|
*/
|
|
36292
36376
|
function listenHighestProfit(fn) {
|
|
36293
36377
|
bt.loggerService.log(LISTEN_HIGHEST_PROFIT_METHOD_NAME);
|
|
36294
|
-
|
|
36378
|
+
const wrappedFn = async (event) => {
|
|
36379
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
36380
|
+
strategyName: event.strategyName,
|
|
36381
|
+
exchangeName: event.exchangeName,
|
|
36382
|
+
frameName: event.frameName,
|
|
36383
|
+
})) {
|
|
36384
|
+
await fn(event);
|
|
36385
|
+
}
|
|
36386
|
+
};
|
|
36387
|
+
return highestProfitSubject.subscribe(functoolsKit.queued(wrappedFn));
|
|
36295
36388
|
}
|
|
36296
36389
|
/**
|
|
36297
36390
|
* Subscribes to filtered highest profit events with one-time execution.
|
package/build/index.mjs
CHANGED
|
@@ -11682,9 +11682,17 @@ const CALL_SIGNAL_BACKTEST_FN = trycatch(async (event, self) => {
|
|
|
11682
11682
|
* Wrapper to call breakevenAvailable method with error capture.
|
|
11683
11683
|
*/
|
|
11684
11684
|
const CALL_BREAKEVEN_AVAILABLE_FN = trycatch(async (event, self) => {
|
|
11685
|
-
if (self._target.breakevenAvailable) {
|
|
11686
|
-
return
|
|
11685
|
+
if (!self._target.breakevenAvailable) {
|
|
11686
|
+
return;
|
|
11687
|
+
}
|
|
11688
|
+
if (await not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11689
|
+
strategyName: event.strategyName,
|
|
11690
|
+
exchangeName: event.exchangeName,
|
|
11691
|
+
frameName: event.frameName,
|
|
11692
|
+
}))) {
|
|
11693
|
+
return;
|
|
11687
11694
|
}
|
|
11695
|
+
return await self._target.breakevenAvailable(event);
|
|
11688
11696
|
}, {
|
|
11689
11697
|
fallback: (error) => {
|
|
11690
11698
|
const message = "ActionProxy.breakevenAvailable thrown";
|
|
@@ -11702,9 +11710,17 @@ const CALL_BREAKEVEN_AVAILABLE_FN = trycatch(async (event, self) => {
|
|
|
11702
11710
|
* Wrapper to call partialProfitAvailable method with error capture.
|
|
11703
11711
|
*/
|
|
11704
11712
|
const CALL_PARTIAL_PROFIT_AVAILABLE_FN = trycatch(async (event, self) => {
|
|
11705
|
-
if (self._target.partialProfitAvailable) {
|
|
11706
|
-
return
|
|
11713
|
+
if (!self._target.partialProfitAvailable) {
|
|
11714
|
+
return;
|
|
11707
11715
|
}
|
|
11716
|
+
if (await not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11717
|
+
strategyName: event.strategyName,
|
|
11718
|
+
exchangeName: event.exchangeName,
|
|
11719
|
+
frameName: event.frameName,
|
|
11720
|
+
}))) {
|
|
11721
|
+
return;
|
|
11722
|
+
}
|
|
11723
|
+
return await self._target.partialProfitAvailable(event);
|
|
11708
11724
|
}, {
|
|
11709
11725
|
fallback: (error) => {
|
|
11710
11726
|
const message = "ActionProxy.partialProfitAvailable thrown";
|
|
@@ -11722,9 +11738,17 @@ const CALL_PARTIAL_PROFIT_AVAILABLE_FN = trycatch(async (event, self) => {
|
|
|
11722
11738
|
* Wrapper to call partialLossAvailable method with error capture.
|
|
11723
11739
|
*/
|
|
11724
11740
|
const CALL_PARTIAL_LOSS_AVAILABLE_FN = trycatch(async (event, self) => {
|
|
11725
|
-
if (self._target.partialLossAvailable) {
|
|
11726
|
-
return
|
|
11741
|
+
if (!self._target.partialLossAvailable) {
|
|
11742
|
+
return;
|
|
11727
11743
|
}
|
|
11744
|
+
if (await not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11745
|
+
strategyName: event.strategyName,
|
|
11746
|
+
exchangeName: event.exchangeName,
|
|
11747
|
+
frameName: event.frameName,
|
|
11748
|
+
}))) {
|
|
11749
|
+
return;
|
|
11750
|
+
}
|
|
11751
|
+
return await self._target.partialLossAvailable(event);
|
|
11728
11752
|
}, {
|
|
11729
11753
|
fallback: (error) => {
|
|
11730
11754
|
const message = "ActionProxy.partialLossAvailable thrown";
|
|
@@ -11742,9 +11766,17 @@ const CALL_PARTIAL_LOSS_AVAILABLE_FN = trycatch(async (event, self) => {
|
|
|
11742
11766
|
* Wrapper to call pingScheduled method with error capture.
|
|
11743
11767
|
*/
|
|
11744
11768
|
const CALL_PING_SCHEDULED_FN = trycatch(async (event, self) => {
|
|
11745
|
-
if (self._target.pingScheduled) {
|
|
11746
|
-
return
|
|
11769
|
+
if (!self._target.pingScheduled) {
|
|
11770
|
+
return;
|
|
11747
11771
|
}
|
|
11772
|
+
if (await not(bt.strategyCoreService.hasScheduledSignal(event.backtest, event.symbol, {
|
|
11773
|
+
strategyName: event.data.strategyName,
|
|
11774
|
+
exchangeName: event.data.exchangeName,
|
|
11775
|
+
frameName: event.data.frameName,
|
|
11776
|
+
}))) {
|
|
11777
|
+
return;
|
|
11778
|
+
}
|
|
11779
|
+
return await self._target.pingScheduled(event);
|
|
11748
11780
|
}, {
|
|
11749
11781
|
fallback: (error) => {
|
|
11750
11782
|
const message = "ActionProxy.pingScheduled thrown";
|
|
@@ -11762,9 +11794,17 @@ const CALL_PING_SCHEDULED_FN = trycatch(async (event, self) => {
|
|
|
11762
11794
|
* Wrapper to call pingActive method with error capture.
|
|
11763
11795
|
*/
|
|
11764
11796
|
const CALL_PING_ACTIVE_FN = trycatch(async (event, self) => {
|
|
11765
|
-
if (self._target.pingActive) {
|
|
11766
|
-
return
|
|
11797
|
+
if (!self._target.pingActive) {
|
|
11798
|
+
return;
|
|
11767
11799
|
}
|
|
11800
|
+
if (await not(bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
11801
|
+
strategyName: event.data.strategyName,
|
|
11802
|
+
exchangeName: event.data.exchangeName,
|
|
11803
|
+
frameName: event.data.frameName,
|
|
11804
|
+
}))) {
|
|
11805
|
+
return;
|
|
11806
|
+
}
|
|
11807
|
+
return await self._target.pingActive(event);
|
|
11768
11808
|
}, {
|
|
11769
11809
|
fallback: (error) => {
|
|
11770
11810
|
const message = "ActionProxy.pingActive thrown";
|
|
@@ -35717,7 +35757,16 @@ function listenValidation(fn) {
|
|
|
35717
35757
|
*/
|
|
35718
35758
|
function listenPartialProfitAvailable(fn) {
|
|
35719
35759
|
bt.loggerService.log(LISTEN_PARTIAL_PROFIT_METHOD_NAME);
|
|
35720
|
-
|
|
35760
|
+
const wrappedFn = async (event) => {
|
|
35761
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
35762
|
+
strategyName: event.strategyName,
|
|
35763
|
+
exchangeName: event.exchangeName,
|
|
35764
|
+
frameName: event.frameName,
|
|
35765
|
+
})) {
|
|
35766
|
+
await fn(event);
|
|
35767
|
+
}
|
|
35768
|
+
};
|
|
35769
|
+
return partialProfitSubject.subscribe(queued(wrappedFn));
|
|
35721
35770
|
}
|
|
35722
35771
|
/**
|
|
35723
35772
|
* Subscribes to filtered partial profit level events with one-time execution.
|
|
@@ -35786,7 +35835,16 @@ function listenPartialProfitAvailableOnce(filterFn, fn) {
|
|
|
35786
35835
|
*/
|
|
35787
35836
|
function listenPartialLossAvailable(fn) {
|
|
35788
35837
|
bt.loggerService.log(LISTEN_PARTIAL_LOSS_METHOD_NAME);
|
|
35789
|
-
|
|
35838
|
+
const wrappedFn = async (event) => {
|
|
35839
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
35840
|
+
strategyName: event.strategyName,
|
|
35841
|
+
exchangeName: event.exchangeName,
|
|
35842
|
+
frameName: event.frameName,
|
|
35843
|
+
})) {
|
|
35844
|
+
await fn(event);
|
|
35845
|
+
}
|
|
35846
|
+
};
|
|
35847
|
+
return partialLossSubject.subscribe(queued(wrappedFn));
|
|
35790
35848
|
}
|
|
35791
35849
|
/**
|
|
35792
35850
|
* Subscribes to filtered partial loss level events with one-time execution.
|
|
@@ -35857,7 +35915,16 @@ function listenPartialLossAvailableOnce(filterFn, fn) {
|
|
|
35857
35915
|
*/
|
|
35858
35916
|
function listenBreakevenAvailable(fn) {
|
|
35859
35917
|
bt.loggerService.log(LISTEN_BREAKEVEN_METHOD_NAME);
|
|
35860
|
-
|
|
35918
|
+
const wrappedFn = async (event) => {
|
|
35919
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
35920
|
+
strategyName: event.strategyName,
|
|
35921
|
+
exchangeName: event.exchangeName,
|
|
35922
|
+
frameName: event.frameName,
|
|
35923
|
+
})) {
|
|
35924
|
+
await fn(event);
|
|
35925
|
+
}
|
|
35926
|
+
};
|
|
35927
|
+
return breakevenSubject.subscribe(queued(wrappedFn));
|
|
35861
35928
|
}
|
|
35862
35929
|
/**
|
|
35863
35930
|
* Subscribes to filtered breakeven protection events with one-time execution.
|
|
@@ -36170,7 +36237,24 @@ function listenActivePingOnce(filterFn, fn) {
|
|
|
36170
36237
|
*/
|
|
36171
36238
|
function listenStrategyCommit(fn) {
|
|
36172
36239
|
bt.loggerService.log(LISTEN_STRATEGY_COMMIT_METHOD_NAME);
|
|
36173
|
-
|
|
36240
|
+
const wrappedFn = async (event) => {
|
|
36241
|
+
if (event.action === "cancel-scheduled") {
|
|
36242
|
+
await fn(event);
|
|
36243
|
+
return;
|
|
36244
|
+
}
|
|
36245
|
+
if (event.action === "close-pending") {
|
|
36246
|
+
await fn(event);
|
|
36247
|
+
return;
|
|
36248
|
+
}
|
|
36249
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
36250
|
+
strategyName: event.strategyName,
|
|
36251
|
+
exchangeName: event.exchangeName,
|
|
36252
|
+
frameName: event.frameName,
|
|
36253
|
+
})) {
|
|
36254
|
+
await fn(event);
|
|
36255
|
+
}
|
|
36256
|
+
};
|
|
36257
|
+
return strategyCommitSubject.subscribe(queued(wrappedFn));
|
|
36174
36258
|
}
|
|
36175
36259
|
/**
|
|
36176
36260
|
* Subscribes to filtered strategy management events with one-time execution.
|
|
@@ -36271,7 +36355,16 @@ function listenSyncOnce(filterFn, fn) {
|
|
|
36271
36355
|
*/
|
|
36272
36356
|
function listenHighestProfit(fn) {
|
|
36273
36357
|
bt.loggerService.log(LISTEN_HIGHEST_PROFIT_METHOD_NAME);
|
|
36274
|
-
|
|
36358
|
+
const wrappedFn = async (event) => {
|
|
36359
|
+
if (await bt.strategyCoreService.hasPendingSignal(event.backtest, event.symbol, {
|
|
36360
|
+
strategyName: event.strategyName,
|
|
36361
|
+
exchangeName: event.exchangeName,
|
|
36362
|
+
frameName: event.frameName,
|
|
36363
|
+
})) {
|
|
36364
|
+
await fn(event);
|
|
36365
|
+
}
|
|
36366
|
+
};
|
|
36367
|
+
return highestProfitSubject.subscribe(queued(wrappedFn));
|
|
36275
36368
|
}
|
|
36276
36369
|
/**
|
|
36277
36370
|
* Subscribes to filtered highest profit events with one-time execution.
|