@backtest-kit/ui 7.8.0 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/build/index.cjs +439 -6
  2. package/build/index.mjs +440 -7
  3. package/build/modules/frontend/build/assets/{Article-Z1gwQi4C.js → Article-CSnuOtt-.js} +1 -1
  4. package/build/modules/frontend/build/assets/{Background-DS1gKl45.js → Background-D1mqn4gC.js} +1 -1
  5. package/build/modules/frontend/build/assets/{IconPhoto-BitDk5sL.js → IconPhoto-CVGPKzLi.js} +1 -1
  6. package/build/modules/frontend/build/assets/{KeyboardArrowLeft-BT0IHVDD.js → KeyboardArrowLeft-C-M8f-Ur.js} +1 -1
  7. package/build/modules/frontend/build/assets/PictureAsPdfOutlined-CZkqJLpJ.js +1 -0
  8. package/build/modules/frontend/build/assets/{Refresh-BgupECvn.js → Refresh-CtGZrED0.js} +1 -1
  9. package/build/modules/frontend/build/assets/emitters-Br6yILIn.js +1 -0
  10. package/build/modules/frontend/build/assets/hasRouteMatch-DGBSTuX4.js +1 -0
  11. package/build/modules/frontend/build/assets/{html2canvas-CxpxaxUC.js → html2canvas-DlSSsS0f.js} +1 -1
  12. package/build/modules/frontend/build/assets/{index-9YHmY3Zv.js → index-4KQpRnrd.js} +1 -1
  13. package/build/modules/frontend/build/assets/index-B4Q-NOtD.js +1 -0
  14. package/build/modules/frontend/build/assets/index-BHEHgIB5.js +1 -0
  15. package/build/modules/frontend/build/assets/index-Bdcw-1Ng.js +1 -0
  16. package/build/modules/frontend/build/assets/{index-C4dzv30q.js → index-Bj-wHWIg.js} +1 -1
  17. package/build/modules/frontend/build/assets/{index-nfZ8sdZp.js → index-C89D7bRW.js} +1 -1
  18. package/build/modules/frontend/build/assets/index-C_cnWIeH.js +1 -0
  19. package/build/modules/frontend/build/assets/index-CnKAzZmr.js +1 -0
  20. package/build/modules/frontend/build/assets/{index-DzrwP4k5.js → index-D7dmwadC.js} +56 -56
  21. package/build/modules/frontend/build/assets/index-D9ArSAzF.js +1 -0
  22. package/build/modules/frontend/build/assets/{index-CnRuFJIf.js → index-DGlc-QFZ.js} +1 -1
  23. package/build/modules/frontend/build/assets/index-k7MV_uNi.js +1 -0
  24. package/build/modules/frontend/build/assets/index-zr1XroNq.js +1 -0
  25. package/build/modules/frontend/build/assets/{index.es-Du6U2Hyj.js → index.es-CuYxvewv.js} +1 -1
  26. package/build/modules/frontend/build/index.html +1 -1
  27. package/package.json +3 -3
  28. package/types.d.ts +41 -0
  29. package/build/modules/frontend/build/assets/emitters-BJfdDGbd.js +0 -1
  30. package/build/modules/frontend/build/assets/hasRouteMatch-CcXyiBjV.js +0 -1
  31. package/build/modules/frontend/build/assets/index-1kyziIc7.js +0 -1
  32. package/build/modules/frontend/build/assets/index-3ZYgMfYi.js +0 -1
  33. package/build/modules/frontend/build/assets/index-BR0aHfoe.js +0 -1
  34. package/build/modules/frontend/build/assets/index-Bg2qm7TJ.js +0 -1
  35. package/build/modules/frontend/build/assets/index-C8Wdopwt.js +0 -1
  36. package/build/modules/frontend/build/assets/index-CWErSuod.js +0 -1
  37. package/build/modules/frontend/build/assets/index-J3hGIAw0.js +0 -1
  38. package/build/modules/frontend/build/assets/markdownit-SQF1Xc8y.js +0 -1
package/build/index.cjs CHANGED
@@ -20,6 +20,8 @@ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentS
20
20
  const CC_WWWROOT_PATH = process.env.CC_WWWROOT_PATH || "";
21
21
  const CC_WWWROOT_HOST = process.env.CC_WWWROOT_HOST || "0.0.0.0";
22
22
  const CC_WWWROOT_PORT = parseInt(process.env.CC_WWWROOT_PORT) || 60050;
23
+ const CC_TELEGRAM_CHANNEL = process.env.CC_TELEGRAM_CHANNEL || "";
24
+ const CC_QUICKCHART_HOST = process.env.CC_QUICKCHART_HOST || "";
23
25
  const CC_ENABLE_MOCK = !!parseInt(process.env.CC_ENABLE_MOCK) || false;
24
26
 
25
27
  const serveSubject = new functoolsKit.BehaviorSubject();
@@ -79,6 +81,9 @@ const mockServices$1 = {
79
81
  explorerMockService: Symbol("explorerMockService"),
80
82
  signalMockService: Symbol("signalMockService"),
81
83
  heatMockService: Symbol("heatMockService"),
84
+ performanceMockService: Symbol("performanceMockService"),
85
+ environmentMockService: Symbol("environmentMockService"),
86
+ setupMockService: Symbol("setupMockService"),
82
87
  };
83
88
  const viewServices$1 = {
84
89
  notificationViewService: Symbol("notificationViewService"),
@@ -90,6 +95,9 @@ const viewServices$1 = {
90
95
  explorerViewService: Symbol("explorerViewService"),
91
96
  signalViewService: Symbol("signalViewService"),
92
97
  heatViewService: Symbol("heatViewService"),
98
+ performanceViewService: Symbol("performanceViewService"),
99
+ environmentViewService: Symbol("environmentViewService"),
100
+ setupViewService: Symbol("setupViewService"),
93
101
  };
94
102
  const TYPES = {
95
103
  ...baseServices$1,
@@ -770,14 +778,14 @@ class SignalMockService {
770
778
  }
771
779
  }
772
780
 
773
- const MOCK_DATA_PATH = "./mock/heat.json";
774
- const MOCK_REPORT_PATH = "./mock/heat-report.md";
781
+ const MOCK_DATA_PATH$3 = "./mock/heat.json";
782
+ const MOCK_REPORT_PATH$1 = "./mock/heat-report.md";
775
783
  const READ_HEAT_DATA_FN = functoolsKit.singleshot(async () => {
776
- const data = await fs.readFile(MOCK_DATA_PATH, "utf-8");
784
+ const data = await fs.readFile(MOCK_DATA_PATH$3, "utf-8");
777
785
  return JSON.parse(data);
778
786
  });
779
787
  const READ_HEAT_REPORT_FN = functoolsKit.singleshot(async () => {
780
- return await fs.readFile(MOCK_REPORT_PATH, "utf-8");
788
+ return await fs.readFile(MOCK_REPORT_PATH$1, "utf-8");
781
789
  });
782
790
  class HeatMockService {
783
791
  constructor() {
@@ -1218,7 +1226,7 @@ class StatusViewService {
1218
1226
  portfolioTotalPnl: currentHeat.portfolioTotalPnl,
1219
1227
  portfolioSharpeRatio: currentHeat.portfolioSharpeRatio,
1220
1228
  portfolioTotalTrades: currentHeat.portfolioTotalTrades,
1221
- symbols: currentHeat.symbols.map(({ symbol, totalPnl, winRate, profitFactor, maxDrawdown, expectancy, totalTrades }) => ({
1229
+ symbols: currentHeat.symbols.map(({ symbol, totalPnl, winRate, profitFactor, maxDrawdown, expectancy, totalTrades, sortinoRatio, calmarRatio, recoveryFactor }) => ({
1222
1230
  symbol,
1223
1231
  totalPnl,
1224
1232
  winRate,
@@ -1226,6 +1234,9 @@ class StatusViewService {
1226
1234
  maxDrawdown,
1227
1235
  expectancy,
1228
1236
  totalTrades,
1237
+ sortinoRatio,
1238
+ calmarRatio,
1239
+ recoveryFactor,
1229
1240
  })),
1230
1241
  backtest: true,
1231
1242
  };
@@ -1248,7 +1259,7 @@ class StatusViewService {
1248
1259
  portfolioTotalPnl: currentHeat.portfolioTotalPnl,
1249
1260
  portfolioSharpeRatio: currentHeat.portfolioSharpeRatio,
1250
1261
  portfolioTotalTrades: currentHeat.portfolioTotalTrades,
1251
- symbols: currentHeat.symbols.map(({ symbol, totalPnl, winRate, profitFactor, maxDrawdown, expectancy, totalTrades }) => ({
1262
+ symbols: currentHeat.symbols.map(({ symbol, totalPnl, winRate, profitFactor, maxDrawdown, expectancy, totalTrades, sortinoRatio, calmarRatio, recoveryFactor }) => ({
1252
1263
  symbol,
1253
1264
  totalPnl,
1254
1265
  winRate,
@@ -1256,6 +1267,9 @@ class StatusViewService {
1256
1267
  maxDrawdown,
1257
1268
  expectancy,
1258
1269
  totalTrades,
1270
+ sortinoRatio,
1271
+ calmarRatio,
1272
+ recoveryFactor,
1259
1273
  })),
1260
1274
  backtest: false,
1261
1275
  };
@@ -1836,6 +1850,183 @@ class LiveMetaService {
1836
1850
  }
1837
1851
  }
1838
1852
 
1853
+ const MOCK_DATA_PATH$2 = "./mock/performance.json";
1854
+ const MOCK_REPORT_PATH = "./mock/performance-report.md";
1855
+ const READ_PERFORMANCE_DATA_FN = functoolsKit.singleshot(async () => {
1856
+ const data = await fs.readFile(MOCK_DATA_PATH$2, "utf-8");
1857
+ return JSON.parse(data);
1858
+ });
1859
+ const READ_PERFORMANCE_REPORT_FN = functoolsKit.singleshot(async () => {
1860
+ return await fs.readFile(MOCK_REPORT_PATH, "utf-8");
1861
+ });
1862
+ class PerformanceMockService {
1863
+ constructor() {
1864
+ this.loggerService = inject(TYPES.loggerService);
1865
+ this.getPerformanceData = async () => {
1866
+ this.loggerService.log("performanceMockService getPerformanceData");
1867
+ return await READ_PERFORMANCE_DATA_FN();
1868
+ };
1869
+ this.getPerformanceReport = async () => {
1870
+ this.loggerService.log("performanceMockService getPerformanceReport");
1871
+ return await READ_PERFORMANCE_REPORT_FN();
1872
+ };
1873
+ }
1874
+ }
1875
+
1876
+ const MOCK_DATA_PATH$1 = "./mock/environment.json";
1877
+ const READ_ENVIRONMENT_DATA_FN = functoolsKit.singleshot(async () => {
1878
+ const data = await fs.readFile(MOCK_DATA_PATH$1, "utf-8");
1879
+ return JSON.parse(data);
1880
+ });
1881
+ class EnvironmentMockService {
1882
+ constructor() {
1883
+ this.loggerService = inject(TYPES.loggerService);
1884
+ this.getEnvironmentData = async () => {
1885
+ this.loggerService.log("environmentMockService getEnvironmentData");
1886
+ return await READ_ENVIRONMENT_DATA_FN();
1887
+ };
1888
+ }
1889
+ }
1890
+
1891
+ const MOCK_DATA_PATH = "./mock/setup.json";
1892
+ const READ_SETUP_DATA_FN = functoolsKit.singleshot(async () => {
1893
+ const data = await fs.readFile(MOCK_DATA_PATH, "utf-8");
1894
+ return JSON.parse(data);
1895
+ });
1896
+ class SetupMockService {
1897
+ constructor() {
1898
+ this.loggerService = inject(TYPES.loggerService);
1899
+ this.getSetupData = async () => {
1900
+ this.loggerService.log("setupMockService getSetupData");
1901
+ return await READ_SETUP_DATA_FN();
1902
+ };
1903
+ }
1904
+ }
1905
+
1906
+ class PerformanceViewService {
1907
+ constructor() {
1908
+ this.loggerService = inject(TYPES.loggerService);
1909
+ this.performanceMockService = inject(TYPES.performanceMockService);
1910
+ this.getPerformanceData = async () => {
1911
+ this.loggerService.log("performanceViewService getPerformanceData");
1912
+ if (CC_ENABLE_MOCK) {
1913
+ return await this.performanceMockService.getPerformanceData();
1914
+ }
1915
+ const [backtestItem] = await backtestKit.Backtest.list();
1916
+ const [liveItem] = await backtestKit.Live.list();
1917
+ if (backtestItem) {
1918
+ return await backtestKit.Performance.getData(backtestItem.symbol, {
1919
+ strategyName: backtestItem.strategyName,
1920
+ exchangeName: backtestItem.exchangeName,
1921
+ frameName: backtestItem.frameName,
1922
+ }, true);
1923
+ }
1924
+ if (liveItem) {
1925
+ return await backtestKit.Performance.getData(liveItem.symbol, {
1926
+ strategyName: liveItem.strategyName,
1927
+ exchangeName: liveItem.exchangeName,
1928
+ frameName: "",
1929
+ }, false);
1930
+ }
1931
+ return null;
1932
+ };
1933
+ this.getPerformanceReport = async () => {
1934
+ this.loggerService.log("performanceViewService getPerformanceReport");
1935
+ if (CC_ENABLE_MOCK) {
1936
+ return await this.performanceMockService.getPerformanceReport();
1937
+ }
1938
+ const [backtestItem] = await backtestKit.Backtest.list();
1939
+ const [liveItem] = await backtestKit.Live.list();
1940
+ if (backtestItem) {
1941
+ return await backtestKit.Performance.getReport(backtestItem.symbol, {
1942
+ strategyName: backtestItem.strategyName,
1943
+ exchangeName: backtestItem.exchangeName,
1944
+ frameName: backtestItem.frameName,
1945
+ }, true);
1946
+ }
1947
+ if (liveItem) {
1948
+ return await backtestKit.Performance.getReport(liveItem.symbol, {
1949
+ strategyName: liveItem.strategyName,
1950
+ exchangeName: liveItem.exchangeName,
1951
+ frameName: "",
1952
+ }, false);
1953
+ }
1954
+ return null;
1955
+ };
1956
+ }
1957
+ }
1958
+
1959
+ class EnvironmentViewService {
1960
+ constructor() {
1961
+ this.loggerService = inject(TYPES.loggerService);
1962
+ this.enviromentMockService = inject(TYPES.environmentMockService);
1963
+ this.getEnvironmentData = async () => {
1964
+ this.loggerService.log("environmentViewService getEnvironmentData");
1965
+ if (CC_ENABLE_MOCK) {
1966
+ return await this.enviromentMockService.getEnvironmentData();
1967
+ }
1968
+ return {
1969
+ quickchart_host: CC_QUICKCHART_HOST,
1970
+ telegram_channel: CC_TELEGRAM_CHANNEL,
1971
+ wwwroot_host: CC_WWWROOT_HOST,
1972
+ wwwroot_path: CC_WWWROOT_PATH,
1973
+ wwwroot_port: CC_WWWROOT_PORT,
1974
+ };
1975
+ };
1976
+ }
1977
+ }
1978
+
1979
+ const GET_MODE_FN = async () => {
1980
+ const [backtestTarget = null] = await backtestKit.Backtest.list();
1981
+ if (backtestTarget) {
1982
+ return "backtest";
1983
+ }
1984
+ const [liveTarget = null] = await backtestKit.Live.list();
1985
+ if (liveTarget) {
1986
+ return "live";
1987
+ }
1988
+ return "none";
1989
+ };
1990
+ class SetupViewService {
1991
+ constructor() {
1992
+ this.loggerService = inject(TYPES.loggerService);
1993
+ this.setupMockService = inject(TYPES.setupMockService);
1994
+ this.getSetupData = async () => {
1995
+ this.loggerService.log("setupViewService getSetupData");
1996
+ if (CC_ENABLE_MOCK) {
1997
+ return await this.setupMockService.getSetupData();
1998
+ }
1999
+ const broker_enabled = backtestKit.Broker.enable.hasValue();
2000
+ const dump_enabled = backtestKit.Dump.enable.hasValue();
2001
+ const markdown_enabled = backtestKit.Markdown.enable.hasValue();
2002
+ const memory_enabled = backtestKit.Memory.enable.hasValue();
2003
+ const notification_enabled = backtestKit.Notification.enable.hasValue();
2004
+ const recent_enabled = backtestKit.Recent.enable.hasValue();
2005
+ const report_enabled = backtestKit.Report.enable.hasValue();
2006
+ const state_enabled = backtestKit.State.enable.hasValue();
2007
+ const storage_enabled = backtestKit.Storage.enable.hasValue();
2008
+ const running_mode = await GET_MODE_FN();
2009
+ const config = await backtestKit.getConfig();
2010
+ const enable_long = config.CC_ENABLE_LONG_SIGNAL;
2011
+ const enable_short = config.CC_ENABLE_SHORT_SIGNAL;
2012
+ return {
2013
+ broker_enabled,
2014
+ dump_enabled,
2015
+ markdown_enabled,
2016
+ memory_enabled,
2017
+ notification_enabled,
2018
+ recent_enabled,
2019
+ report_enabled,
2020
+ state_enabled,
2021
+ storage_enabled,
2022
+ running_mode,
2023
+ enable_long,
2024
+ enable_short,
2025
+ };
2026
+ };
2027
+ }
2028
+ }
2029
+
1839
2030
  {
1840
2031
  provide(TYPES.loggerService, () => new LoggerService());
1841
2032
  provide(TYPES.exchangeService, () => new ExchangeService());
@@ -1859,6 +2050,9 @@ class LiveMetaService {
1859
2050
  provide(TYPES.explorerMockService, () => new ExplorerMockService());
1860
2051
  provide(TYPES.signalMockService, () => new SignalMockService());
1861
2052
  provide(TYPES.heatMockService, () => new HeatMockService());
2053
+ provide(TYPES.performanceMockService, () => new PerformanceMockService());
2054
+ provide(TYPES.environmentMockService, () => new EnvironmentMockService());
2055
+ provide(TYPES.setupMockService, () => new SetupMockService());
1862
2056
  }
1863
2057
  {
1864
2058
  provide(TYPES.notificationViewService, () => new NotificationViewService());
@@ -1870,6 +2064,9 @@ class LiveMetaService {
1870
2064
  provide(TYPES.explorerViewService, () => new ExplorerViewService());
1871
2065
  provide(TYPES.signalViewService, () => new SignalViewService());
1872
2066
  provide(TYPES.heatViewService, () => new HeatViewService());
2067
+ provide(TYPES.performanceViewService, () => new PerformanceViewService());
2068
+ provide(TYPES.environmentViewService, () => new EnvironmentViewService());
2069
+ provide(TYPES.setupViewService, () => new SetupViewService());
1873
2070
  }
1874
2071
 
1875
2072
  const baseServices = {
@@ -1895,6 +2092,9 @@ const mockServices = {
1895
2092
  explorerMockService: inject(TYPES.explorerMockService),
1896
2093
  signalMockService: inject(TYPES.signalMockService),
1897
2094
  heatMockService: inject(TYPES.heatMockService),
2095
+ performanceMockService: inject(TYPES.performanceMockService),
2096
+ environmentMockService: inject(TYPES.environmentMockService),
2097
+ setupMockService: inject(TYPES.setupMockService),
1898
2098
  };
1899
2099
  const viewServices = {
1900
2100
  notificationViewService: inject(TYPES.notificationViewService),
@@ -1906,6 +2106,9 @@ const viewServices = {
1906
2106
  explorerViewService: inject(TYPES.explorerViewService),
1907
2107
  signalViewService: inject(TYPES.signalViewService),
1908
2108
  heatViewService: inject(TYPES.heatViewService),
2109
+ performanceViewService: inject(TYPES.performanceViewService),
2110
+ environmentViewService: inject(TYPES.environmentViewService),
2111
+ setupViewService: inject(TYPES.setupViewService),
1909
2112
  };
1910
2113
  const ioc = {
1911
2114
  ...baseServices,
@@ -1919,6 +2122,35 @@ init();
1919
2122
  const router$a = Router({
1920
2123
  params: true,
1921
2124
  });
2125
+ // SetupMockService endpoints
2126
+ router$a.post("/api/v1/mock/setup_data", async (req, res) => {
2127
+ try {
2128
+ const request = await micro.json(req);
2129
+ const { requestId, serviceName } = request;
2130
+ const data = await ioc.setupMockService.getSetupData();
2131
+ const result = {
2132
+ data,
2133
+ status: "ok",
2134
+ error: "",
2135
+ requestId,
2136
+ serviceName,
2137
+ };
2138
+ ioc.loggerService.log("/api/v1/mock/setup_data ok", {
2139
+ request,
2140
+ result: omit(result, "data"),
2141
+ });
2142
+ return await micro.send(res, 200, result);
2143
+ }
2144
+ catch (error) {
2145
+ ioc.loggerService.log("/api/v1/mock/setup_data error", {
2146
+ error: functoolsKit.errorData(error),
2147
+ });
2148
+ return await micro.send(res, 200, {
2149
+ status: "error",
2150
+ error: functoolsKit.getErrorMessage(error),
2151
+ });
2152
+ }
2153
+ });
1922
2154
  // ExchangeMockService endpoints
1923
2155
  router$a.post("/api/v1/mock/candles_signal", async (req, res) => {
1924
2156
  try {
@@ -2530,10 +2762,125 @@ router$a.post("/api/v1/mock/status_info", async (req, res) => {
2530
2762
  });
2531
2763
  }
2532
2764
  });
2765
+ // PerformanceMockService endpoints
2766
+ router$a.post("/api/v1/mock/performance_data", async (req, res) => {
2767
+ try {
2768
+ const request = await micro.json(req);
2769
+ const { requestId, serviceName } = request;
2770
+ const data = await ioc.performanceMockService.getPerformanceData();
2771
+ const result = {
2772
+ data,
2773
+ status: "ok",
2774
+ error: "",
2775
+ requestId,
2776
+ serviceName,
2777
+ };
2778
+ ioc.loggerService.log("/api/v1/mock/performance_data ok", {
2779
+ request,
2780
+ result: omit(result, "data"),
2781
+ });
2782
+ return await micro.send(res, 200, result);
2783
+ }
2784
+ catch (error) {
2785
+ ioc.loggerService.log("/api/v1/mock/performance_data error", {
2786
+ error: functoolsKit.errorData(error),
2787
+ });
2788
+ return await micro.send(res, 200, {
2789
+ status: "error",
2790
+ error: functoolsKit.getErrorMessage(error),
2791
+ });
2792
+ }
2793
+ });
2794
+ router$a.post("/api/v1/mock/performance_report", async (req, res) => {
2795
+ try {
2796
+ const request = await micro.json(req);
2797
+ const { requestId, serviceName } = request;
2798
+ const data = await ioc.performanceMockService.getPerformanceReport();
2799
+ const result = {
2800
+ data,
2801
+ status: "ok",
2802
+ error: "",
2803
+ requestId,
2804
+ serviceName,
2805
+ };
2806
+ ioc.loggerService.log("/api/v1/mock/performance_report ok", {
2807
+ request,
2808
+ result: omit(result, "data"),
2809
+ });
2810
+ return await micro.send(res, 200, result);
2811
+ }
2812
+ catch (error) {
2813
+ ioc.loggerService.log("/api/v1/mock/performance_report error", {
2814
+ error: functoolsKit.errorData(error),
2815
+ });
2816
+ return await micro.send(res, 200, {
2817
+ status: "error",
2818
+ error: functoolsKit.getErrorMessage(error),
2819
+ });
2820
+ }
2821
+ });
2822
+ // EnvironmentMockService endpoints
2823
+ router$a.post("/api/v1/mock/environment_data", async (req, res) => {
2824
+ try {
2825
+ const request = await micro.json(req);
2826
+ const { requestId, serviceName } = request;
2827
+ const data = await ioc.environmentMockService.getEnvironmentData();
2828
+ const result = {
2829
+ data,
2830
+ status: "ok",
2831
+ error: "",
2832
+ requestId,
2833
+ serviceName,
2834
+ };
2835
+ ioc.loggerService.log("/api/v1/mock/environment_data ok", {
2836
+ request,
2837
+ result: omit(result, "data"),
2838
+ });
2839
+ return await micro.send(res, 200, result);
2840
+ }
2841
+ catch (error) {
2842
+ ioc.loggerService.log("/api/v1/mock/environment_data error", {
2843
+ error: functoolsKit.errorData(error),
2844
+ });
2845
+ return await micro.send(res, 200, {
2846
+ status: "error",
2847
+ error: functoolsKit.getErrorMessage(error),
2848
+ });
2849
+ }
2850
+ });
2533
2851
 
2534
2852
  const router$9 = Router({
2535
2853
  params: true,
2536
2854
  });
2855
+ // SetupViewService endpoints
2856
+ router$9.post("/api/v1/view/setup_data", async (req, res) => {
2857
+ try {
2858
+ const request = await micro.json(req);
2859
+ const { requestId, serviceName } = request;
2860
+ const data = await ioc.setupViewService.getSetupData();
2861
+ const result = {
2862
+ data,
2863
+ status: "ok",
2864
+ error: "",
2865
+ requestId,
2866
+ serviceName,
2867
+ };
2868
+ ioc.loggerService.log("/api/v1/view/setup_data ok", {
2869
+ request,
2870
+ result: omit(result, "data"),
2871
+ });
2872
+ return await micro.send(res, 200, result);
2873
+ }
2874
+ catch (error) {
2875
+ ioc.loggerService.log("/api/v1/view/setup_data error", {
2876
+ error: functoolsKit.errorData(error),
2877
+ });
2878
+ return await micro.send(res, 200, {
2879
+ status: "error",
2880
+ error: functoolsKit.getErrorMessage(error),
2881
+ });
2882
+ }
2883
+ });
2537
2884
  // ExchangeViewService endpoints
2538
2885
  router$9.post("/api/v1/view/candles_signal", async (req, res) => {
2539
2886
  try {
@@ -3145,6 +3492,92 @@ router$9.post("/api/v1/view/status_info", async (req, res) => {
3145
3492
  });
3146
3493
  }
3147
3494
  });
3495
+ // PerformanceViewService endpoints
3496
+ router$9.post("/api/v1/view/performance_data", async (req, res) => {
3497
+ try {
3498
+ const request = await micro.json(req);
3499
+ const { requestId, serviceName } = request;
3500
+ const data = await ioc.performanceViewService.getPerformanceData();
3501
+ const result = {
3502
+ data,
3503
+ status: "ok",
3504
+ error: "",
3505
+ requestId,
3506
+ serviceName,
3507
+ };
3508
+ ioc.loggerService.log("/api/v1/view/performance_data ok", {
3509
+ request,
3510
+ result: omit(result, "data"),
3511
+ });
3512
+ return await micro.send(res, 200, result);
3513
+ }
3514
+ catch (error) {
3515
+ ioc.loggerService.log("/api/v1/view/performance_data error", {
3516
+ error: functoolsKit.errorData(error),
3517
+ });
3518
+ return await micro.send(res, 200, {
3519
+ status: "error",
3520
+ error: functoolsKit.getErrorMessage(error),
3521
+ });
3522
+ }
3523
+ });
3524
+ router$9.post("/api/v1/view/performance_report", async (req, res) => {
3525
+ try {
3526
+ const request = await micro.json(req);
3527
+ const { requestId, serviceName } = request;
3528
+ const data = await ioc.performanceViewService.getPerformanceReport();
3529
+ const result = {
3530
+ data,
3531
+ status: "ok",
3532
+ error: "",
3533
+ requestId,
3534
+ serviceName,
3535
+ };
3536
+ ioc.loggerService.log("/api/v1/view/performance_report ok", {
3537
+ request,
3538
+ result: omit(result, "data"),
3539
+ });
3540
+ return await micro.send(res, 200, result);
3541
+ }
3542
+ catch (error) {
3543
+ ioc.loggerService.log("/api/v1/view/performance_report error", {
3544
+ error: functoolsKit.errorData(error),
3545
+ });
3546
+ return await micro.send(res, 200, {
3547
+ status: "error",
3548
+ error: functoolsKit.getErrorMessage(error),
3549
+ });
3550
+ }
3551
+ });
3552
+ // EnvironmentViewService endpoints
3553
+ router$9.post("/api/v1/view/environment_data", async (req, res) => {
3554
+ try {
3555
+ const request = await micro.json(req);
3556
+ const { requestId, serviceName } = request;
3557
+ const data = await ioc.environmentViewService.getEnvironmentData();
3558
+ const result = {
3559
+ data,
3560
+ status: "ok",
3561
+ error: "",
3562
+ requestId,
3563
+ serviceName,
3564
+ };
3565
+ ioc.loggerService.log("/api/v1/view/environment_data ok", {
3566
+ request,
3567
+ result: omit(result, "data"),
3568
+ });
3569
+ return await micro.send(res, 200, result);
3570
+ }
3571
+ catch (error) {
3572
+ ioc.loggerService.log("/api/v1/view/environment_data error", {
3573
+ error: functoolsKit.errorData(error),
3574
+ });
3575
+ return await micro.send(res, 200, {
3576
+ status: "error",
3577
+ error: functoolsKit.getErrorMessage(error),
3578
+ });
3579
+ }
3580
+ });
3148
3581
 
3149
3582
  const require$2 = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)));
3150
3583
  function getModulesPath() {