@3rd-eye-labs/openmm 0.1.6 → 0.1.7
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/README.md +0 -2
- package/dist/cli/commands/grid.d.ts +3 -0
- package/dist/cli/commands/grid.d.ts.map +1 -0
- package/dist/cli/commands/grid.js +103 -0
- package/dist/cli/commands/grid.js.map +1 -0
- package/dist/cli/commands/multi-trade.d.ts +3 -0
- package/dist/cli/commands/multi-trade.d.ts.map +1 -0
- package/dist/cli/commands/multi-trade.js +175 -0
- package/dist/cli/commands/multi-trade.js.map +1 -0
- package/dist/cli/pool-discovery.d.ts +56 -0
- package/dist/cli/pool-discovery.d.ts.map +1 -0
- package/dist/cli/pool-discovery.js +283 -0
- package/dist/cli/pool-discovery.js.map +1 -0
- package/dist/config/environment.d.ts +19 -0
- package/dist/config/environment.d.ts.map +1 -1
- package/dist/config/environment.js +87 -58
- package/dist/config/environment.js.map +1 -1
- package/dist/core/price-aggregation/price-cache.d.ts +55 -0
- package/dist/core/price-aggregation/price-cache.d.ts.map +1 -0
- package/dist/core/price-aggregation/price-cache.js +152 -0
- package/dist/core/price-aggregation/price-cache.js.map +1 -0
- package/dist/examples/mexc-connector-comprehensive-test.d.ts +15 -0
- package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +1 -0
- package/dist/examples/mexc-connector-comprehensive-test.js +514 -0
- package/dist/examples/mexc-connector-comprehensive-test.js.map +1 -0
- package/dist/examples/mexc-order-update-test.d.ts +4 -0
- package/dist/examples/mexc-order-update-test.d.ts.map +1 -0
- package/dist/examples/mexc-order-update-test.js +186 -0
- package/dist/examples/mexc-order-update-test.js.map +1 -0
- package/dist/examples/mexc-test.d.ts +9 -0
- package/dist/examples/mexc-test.d.ts.map +1 -0
- package/dist/examples/mexc-test.js +218 -0
- package/dist/examples/mexc-test.js.map +1 -0
- package/dist/examples/mexc-trades-debug.d.ts +2 -0
- package/dist/examples/mexc-trades-debug.d.ts.map +1 -0
- package/dist/examples/mexc-trades-debug.js +101 -0
- package/dist/examples/mexc-trades-debug.js.map +1 -0
- package/dist/examples/mexc-trades-subscription-debug.d.ts +2 -0
- package/dist/examples/mexc-trades-subscription-debug.d.ts.map +1 -0
- package/dist/examples/mexc-trades-subscription-debug.js +150 -0
- package/dist/examples/mexc-trades-subscription-debug.js.map +1 -0
- package/dist/examples/mexc-websocket-test.d.ts +8 -0
- package/dist/examples/mexc-websocket-test.d.ts.map +1 -0
- package/dist/examples/mexc-websocket-test.js +115 -0
- package/dist/examples/mexc-websocket-test.js.map +1 -0
- package/dist/examples/test-protobuf-status-detection.d.ts +9 -0
- package/dist/examples/test-protobuf-status-detection.d.ts.map +1 -0
- package/dist/examples/test-protobuf-status-detection.js +83 -0
- package/dist/examples/test-protobuf-status-detection.js.map +1 -0
- package/dist/exchanges/base-exchange-connector.d.ts +33 -0
- package/dist/exchanges/base-exchange-connector.d.ts.map +1 -0
- package/dist/exchanges/base-exchange-connector.js +55 -0
- package/dist/exchanges/base-exchange-connector.js.map +1 -0
- package/dist/exchanges/kraken/test-kraken-websocket.d.ts +19 -0
- package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +1 -0
- package/dist/exchanges/kraken/test-kraken-websocket.js +413 -0
- package/dist/exchanges/kraken/test-kraken-websocket.js.map +1 -0
- package/dist/mcp/resources/index.d.ts +3 -0
- package/dist/mcp/resources/index.d.ts.map +1 -0
- package/dist/mcp/resources/index.js +11 -0
- package/dist/mcp/resources/index.js.map +1 -0
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +29 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +3 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +12 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/tests/fixtures/test-helpers.d.ts +5 -0
- package/dist/tests/fixtures/test-helpers.d.ts.map +1 -0
- package/dist/tests/fixtures/test-helpers.js +8 -0
- package/dist/tests/fixtures/test-helpers.js.map +1 -0
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +2 -0
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +1 -0
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +237 -0
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +1 -0
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +2 -0
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +57 -0
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +1 -0
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +2 -0
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +1 -0
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +141 -0
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +1 -0
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +2 -0
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +1 -0
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +375 -0
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +1 -0
- package/dist/tests/unit/cli/exchange-factory.test.d.ts +2 -0
- package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +1 -0
- package/dist/tests/unit/cli/exchange-factory.test.js +148 -0
- package/dist/tests/unit/cli/exchange-factory.test.js.map +1 -0
- package/dist/tests/unit/config/environment.test.d.ts +2 -0
- package/dist/tests/unit/config/environment.test.d.ts.map +1 -0
- package/dist/tests/unit/config/environment.test.js +158 -0
- package/dist/tests/unit/config/environment.test.js.map +1 -0
- package/dist/tests/unit/config/launcher-config.test.d.ts +2 -0
- package/dist/tests/unit/config/launcher-config.test.d.ts.map +1 -0
- package/dist/tests/unit/config/launcher-config.test.js +117 -0
- package/dist/tests/unit/config/launcher-config.test.js.map +1 -0
- package/dist/tests/unit/config/price-aggregation.test.d.ts +2 -0
- package/dist/tests/unit/config/price-aggregation.test.d.ts.map +1 -0
- package/dist/tests/unit/config/price-aggregation.test.js +144 -0
- package/dist/tests/unit/config/price-aggregation.test.js.map +1 -0
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +2 -0
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +1 -0
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +191 -0
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +1 -0
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +2 -0
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +1 -0
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +324 -0
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +1 -0
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +2 -0
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +177 -0
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +1 -0
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +2 -0
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +1 -0
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +168 -0
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +1 -0
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +2 -0
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +1 -0
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +217 -0
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +1 -0
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +2 -0
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +1 -0
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +229 -0
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +1 -0
- package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +2 -0
- package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +1 -0
- package/dist/tests/unit/core/risk-management/risk-manager.test.js +194 -0
- package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +1 -0
- package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +2 -0
- package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +1 -0
- package/dist/tests/unit/core/strategy/base-strategy.test.js +254 -0
- package/dist/tests/unit/core/strategy/base-strategy.test.js.map +1 -0
- package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +2 -0
- package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +1 -0
- package/dist/tests/unit/core/strategy/strategy-factory.test.js +213 -0
- package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +452 -0
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +1419 -0
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +435 -0
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +314 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +178 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +502 -0
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +317 -0
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +843 -0
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +2 -0
- package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-calculator.test.js +67 -0
- package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +2 -0
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +211 -0
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +2 -0
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +197 -0
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +2 -0
- package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-strategy.test.js +429 -0
- package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +1 -0
- package/dist/tests/unit/utils/logger.test.d.ts +2 -0
- package/dist/tests/unit/utils/logger.test.d.ts.map +1 -0
- package/dist/tests/unit/utils/logger.test.js +260 -0
- package/dist/tests/unit/utils/logger.test.js.map +1 -0
- package/dist/tests/unit/utils/symbol-utils.test.d.ts +2 -0
- package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +1 -0
- package/dist/tests/unit/utils/symbol-utils.test.js +178 -0
- package/dist/tests/unit/utils/symbol-utils.test.js.map +1 -0
- package/dist/types/price-aggregation.d.ts +31 -0
- package/dist/types/price-aggregation.d.ts.map +1 -0
- package/dist/types/price-aggregation.js +6 -0
- package/dist/types/price-aggregation.js.map +1 -0
- package/dist/utils/crypto.d.ts +15 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +50 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/validation.d.ts +36 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +174 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MEXC Connector Comprehensive Test Suite
|
|
4
|
+
*
|
|
5
|
+
* Tests every method in MexcConnector to ensure they work as intended.
|
|
6
|
+
* This single test file validates the complete base SDK architecture implementation.
|
|
7
|
+
*
|
|
8
|
+
* Coverage:
|
|
9
|
+
* - Connection Management
|
|
10
|
+
* - REST API Methods (Balance, Orders, Market Data)
|
|
11
|
+
* - WebSocket Methods (Real-time Market Data with Direct Protobuf Processing)
|
|
12
|
+
* - User Data Stream Methods (Real-time Account Updates)
|
|
13
|
+
* - Error Handling and Edge Cases
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
require("dotenv/config");
|
|
17
|
+
const mexc_connector_1 = require("../exchanges/mexc/mexc-connector");
|
|
18
|
+
class MexcConnectorTest {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.testResults = {};
|
|
21
|
+
this.subscriptionIds = [];
|
|
22
|
+
this.mexc = new mexc_connector_1.MexcConnector();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Run all tests in sequence
|
|
26
|
+
*/
|
|
27
|
+
async runAllTests() {
|
|
28
|
+
console.log('🎯 MEXC Connector Comprehensive Test Suite');
|
|
29
|
+
console.log('='.repeat(70));
|
|
30
|
+
console.log('Purpose: Validate every method in MexcConnector for production readiness');
|
|
31
|
+
console.log('Scope: Complete base SDK architecture implementation\n');
|
|
32
|
+
try {
|
|
33
|
+
await this.testConnectionManagement();
|
|
34
|
+
await this.testRestAPIBalance();
|
|
35
|
+
await this.testRestAPIMarketData();
|
|
36
|
+
await this.testRestAPIOrders();
|
|
37
|
+
await this.testWebSocketMethods();
|
|
38
|
+
await this.testUserDataStreamMethods();
|
|
39
|
+
await this.testErrorHandling();
|
|
40
|
+
this.printSummary();
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.error('❌ Test suite failed with fatal error:', error);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Test Connection Management methods
|
|
48
|
+
*/
|
|
49
|
+
async testConnectionManagement() {
|
|
50
|
+
console.log('🔌 Testing Connection Management\n');
|
|
51
|
+
// Test setCredentials and getCredentials
|
|
52
|
+
this.testMethod('setCredentials', () => {
|
|
53
|
+
const credentials = {
|
|
54
|
+
apiKey: process.env.MEXC_API_KEY || 'test_key',
|
|
55
|
+
secret: process.env.MEXC_SECRET || 'test_secret'
|
|
56
|
+
};
|
|
57
|
+
this.mexc.setCredentials(credentials);
|
|
58
|
+
return true;
|
|
59
|
+
});
|
|
60
|
+
// Test basic getters
|
|
61
|
+
this.testMethod('id getter', () => {
|
|
62
|
+
const result = this.mexc.id === 'mexc';
|
|
63
|
+
console.log(` Exchange ID: ${this.mexc.id}`);
|
|
64
|
+
return result;
|
|
65
|
+
});
|
|
66
|
+
this.testMethod('name getter', () => {
|
|
67
|
+
const result = this.mexc.name === 'MEXC';
|
|
68
|
+
console.log(` Exchange Name: ${this.mexc.name}`);
|
|
69
|
+
return result;
|
|
70
|
+
});
|
|
71
|
+
this.testMethod('isConnected (before connect)', () => {
|
|
72
|
+
const result = this.mexc.isConnected() === false;
|
|
73
|
+
console.log(` Connected Status: ${this.mexc.isConnected()}`);
|
|
74
|
+
return result;
|
|
75
|
+
});
|
|
76
|
+
// Test connect method
|
|
77
|
+
await this.testAsyncMethod('connect', async () => {
|
|
78
|
+
await this.mexc.connect();
|
|
79
|
+
return this.mexc.isConnected();
|
|
80
|
+
});
|
|
81
|
+
this.testMethod('isConnected (after connect)', () => {
|
|
82
|
+
const result = this.mexc.isConnected() === true;
|
|
83
|
+
console.log(` Connected Status: ${this.mexc.isConnected()}`);
|
|
84
|
+
return result;
|
|
85
|
+
});
|
|
86
|
+
console.log();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Test REST API Balance methods
|
|
90
|
+
*/
|
|
91
|
+
async testRestAPIBalance() {
|
|
92
|
+
console.log('💰 Testing REST API - Balance Methods\n');
|
|
93
|
+
// Test getBalance() - all balances
|
|
94
|
+
await this.testAsyncMethod('getBalance() - all balances', async () => {
|
|
95
|
+
const balances = await this.mexc.getBalance();
|
|
96
|
+
console.log(` Found ${Object.keys(balances).length} non-zero balances`);
|
|
97
|
+
// Show sample balances
|
|
98
|
+
const sampleAssets = Object.keys(balances).slice(0, 3);
|
|
99
|
+
sampleAssets.forEach(asset => {
|
|
100
|
+
const balance = balances[asset];
|
|
101
|
+
console.log(` ${asset}: Free=${balance.free}, Used=${balance.used}, Total=${balance.total}`);
|
|
102
|
+
});
|
|
103
|
+
return Object.keys(balances).length > 0;
|
|
104
|
+
});
|
|
105
|
+
// Test getBalance(asset) - specific asset
|
|
106
|
+
await this.testAsyncMethod('getBalance("USDT") - specific asset', async () => {
|
|
107
|
+
const balance = await this.mexc.getBalance('USDT');
|
|
108
|
+
console.log(` USDT Balance: Free=${balance.free}, Used=${balance.used}, Total=${balance.total}`);
|
|
109
|
+
return balance.asset === 'USDT' && typeof balance.free === 'number';
|
|
110
|
+
});
|
|
111
|
+
console.log();
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Test REST API Market Data methods
|
|
115
|
+
*/
|
|
116
|
+
async testRestAPIMarketData() {
|
|
117
|
+
console.log('📊 Testing REST API - Market Data Methods\n');
|
|
118
|
+
// Test getTicker
|
|
119
|
+
await this.testAsyncMethod('getTicker("INDY/USDT")', async () => {
|
|
120
|
+
const ticker = await this.mexc.getTicker('INDY/USDT');
|
|
121
|
+
console.log(` Ticker: Symbol=${ticker.symbol}, Last=${ticker.last}, Bid=${ticker.bid}, Ask=${ticker.ask}`);
|
|
122
|
+
return ticker.symbol === 'INDY/USDT' && ticker.last > 0;
|
|
123
|
+
});
|
|
124
|
+
// Test getOrderBook
|
|
125
|
+
await this.testAsyncMethod('getOrderBook("INDY/USDT")', async () => {
|
|
126
|
+
const orderBook = await this.mexc.getOrderBook('INDY/USDT');
|
|
127
|
+
console.log(` Order Book: Symbol=${orderBook.symbol}, Bids=${orderBook.bids.length}, Asks=${orderBook.asks.length}`);
|
|
128
|
+
if (orderBook.bids.length > 0) {
|
|
129
|
+
console.log(` Best Bid: ${orderBook.bids[0].price} × ${orderBook.bids[0].amount}`);
|
|
130
|
+
}
|
|
131
|
+
if (orderBook.asks.length > 0) {
|
|
132
|
+
console.log(` Best Ask: ${orderBook.asks[0].price} × ${orderBook.asks[0].amount}`);
|
|
133
|
+
}
|
|
134
|
+
return orderBook.symbol === 'INDY/USDT' && orderBook.bids.length > 0 && orderBook.asks.length > 0;
|
|
135
|
+
});
|
|
136
|
+
// Test getRecentTrades
|
|
137
|
+
await this.testAsyncMethod('getRecentTrades("INDY/USDT")', async () => {
|
|
138
|
+
const trades = await this.mexc.getRecentTrades('INDY/USDT');
|
|
139
|
+
console.log(` Recent Trades: ${trades.length} trades retrieved`);
|
|
140
|
+
if (trades.length > 0) {
|
|
141
|
+
const recent = trades[0];
|
|
142
|
+
console.log(` Most Recent: ${recent.side} ${recent.amount} at ${recent.price} (ID: ${recent.id})`);
|
|
143
|
+
}
|
|
144
|
+
return trades.length > 0 && trades[0].symbol === 'INDY/USDT';
|
|
145
|
+
});
|
|
146
|
+
console.log();
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Test REST API Order methods
|
|
150
|
+
*/
|
|
151
|
+
async testRestAPIOrders() {
|
|
152
|
+
console.log('📋 Testing REST API - Order Methods\n');
|
|
153
|
+
// Test getOpenOrders - all symbols
|
|
154
|
+
await this.testAsyncMethod('getOpenOrders() - all symbols', async () => {
|
|
155
|
+
const orders = await this.mexc.getOpenOrders();
|
|
156
|
+
console.log(` Open Orders (all): ${orders.length} orders`);
|
|
157
|
+
if (orders.length > 0) {
|
|
158
|
+
const sample = orders[0];
|
|
159
|
+
console.log(` Sample Order: ${sample.id} - ${sample.symbol} ${sample.side} ${sample.amount} at ${sample.price}`);
|
|
160
|
+
}
|
|
161
|
+
return Array.isArray(orders);
|
|
162
|
+
});
|
|
163
|
+
// Test getOpenOrders - specific symbol
|
|
164
|
+
await this.testAsyncMethod('getOpenOrders("INDY/USDT") - specific symbol', async () => {
|
|
165
|
+
const orders = await this.mexc.getOpenOrders('INDY/USDT');
|
|
166
|
+
console.log(` Open Orders (INDY/USDT): ${orders.length} orders`);
|
|
167
|
+
orders.slice(0, 3).forEach((order, index) => {
|
|
168
|
+
console.log(` Order ${index + 1}: ${order.side} ${order.amount} at ${order.price} (${order.status})`);
|
|
169
|
+
});
|
|
170
|
+
return Array.isArray(orders);
|
|
171
|
+
});
|
|
172
|
+
// Test createOrder - limit order (small amount)
|
|
173
|
+
let testOrderId;
|
|
174
|
+
await this.testAsyncMethod('createOrder() - limit buy order', async () => {
|
|
175
|
+
const ticker = await this.mexc.getTicker('INDY/USDT');
|
|
176
|
+
const bidPrice = ticker.bid * 0.99; // 1% below current bid
|
|
177
|
+
const amount = Math.ceil(1.5 / bidPrice); // Ensure order value is > 1 USDT
|
|
178
|
+
const order = await this.mexc.createOrder('INDY/USDT', 'limit', 'buy', amount, bidPrice);
|
|
179
|
+
testOrderId = order.id;
|
|
180
|
+
console.log(` Created Order: ID=${order.id}, Side=${order.side}, Amount=${order.amount}, Price=${order.price}`);
|
|
181
|
+
console.log(` Status: ${order.status}, Symbol: ${order.symbol}`);
|
|
182
|
+
return !!(order.id && order.symbol === 'INDY/USDT' && order.side === 'buy');
|
|
183
|
+
});
|
|
184
|
+
// Test getOrder - specific order
|
|
185
|
+
if (testOrderId) {
|
|
186
|
+
await this.testAsyncMethod('getOrder() - specific order', async () => {
|
|
187
|
+
const order = await this.mexc.getOrder(testOrderId, 'INDY/USDT');
|
|
188
|
+
console.log(` Retrieved Order: ID=${order.id}, Status=${order.status}, Filled=${order.filled || 0}/${order.amount}`);
|
|
189
|
+
return order.id === testOrderId;
|
|
190
|
+
});
|
|
191
|
+
// Test cancelOrder
|
|
192
|
+
await this.testAsyncMethod('cancelOrder() - cancel test order', async () => {
|
|
193
|
+
await this.mexc.cancelOrder(testOrderId, 'INDY/USDT');
|
|
194
|
+
console.log(` Cancelled Order: ${testOrderId}`);
|
|
195
|
+
return true;
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
this.testResults['getOrder() - specific order'] = 'SKIP';
|
|
200
|
+
this.testResults['cancelOrder() - cancel test order'] = 'SKIP';
|
|
201
|
+
console.log(' ⏭️ SKIPPED: getOrder() and cancelOrder() - no test order created');
|
|
202
|
+
}
|
|
203
|
+
console.log();
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Test WebSocket methods
|
|
207
|
+
*/
|
|
208
|
+
async testWebSocketMethods() {
|
|
209
|
+
console.log('🌐 Testing WebSocket Methods\n');
|
|
210
|
+
// Test WebSocket status before connection
|
|
211
|
+
this.testMethod('getWebSocketStatus (before connect)', () => {
|
|
212
|
+
const status = this.mexc.getWebSocketStatus();
|
|
213
|
+
console.log(` WebSocket Status: ${status}`);
|
|
214
|
+
return status === 'disconnected';
|
|
215
|
+
});
|
|
216
|
+
this.testMethod('isWebSocketConnected (before connect)', () => {
|
|
217
|
+
const connected = this.mexc.isWebSocketConnected();
|
|
218
|
+
console.log(` WebSocket Connected: ${connected}`);
|
|
219
|
+
return connected === false;
|
|
220
|
+
});
|
|
221
|
+
// Test connectWebSocket
|
|
222
|
+
await this.testAsyncMethod('connectWebSocket()', async () => {
|
|
223
|
+
await this.mexc.connectWebSocket();
|
|
224
|
+
// Give it a moment to establish connection
|
|
225
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
226
|
+
return this.mexc.isWebSocketConnected();
|
|
227
|
+
});
|
|
228
|
+
// Test WebSocket status after connection
|
|
229
|
+
this.testMethod('getWebSocketStatus (after connect)', () => {
|
|
230
|
+
const status = this.mexc.getWebSocketStatus();
|
|
231
|
+
console.log(` WebSocket Status: ${status}`);
|
|
232
|
+
return status === 'connected';
|
|
233
|
+
});
|
|
234
|
+
this.testMethod('isWebSocketConnected (after connect)', () => {
|
|
235
|
+
const connected = this.mexc.isWebSocketConnected();
|
|
236
|
+
console.log(` WebSocket Connected: ${connected}`);
|
|
237
|
+
return connected;
|
|
238
|
+
});
|
|
239
|
+
// Test subscribeTicker
|
|
240
|
+
await this.testAsyncMethod('subscribeTicker("INDY/USDT")', async () => {
|
|
241
|
+
let tickerReceived = false;
|
|
242
|
+
const subscriptionId = await this.mexc.subscribeTicker('INDY/USDT', (ticker) => {
|
|
243
|
+
if (!tickerReceived) {
|
|
244
|
+
console.log(` 📊 Ticker Update: ${ticker.symbol} Last=${ticker.last}, Bid=${ticker.bid}, Ask=${ticker.ask}`);
|
|
245
|
+
tickerReceived = true;
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
this.subscriptionIds.push(subscriptionId);
|
|
249
|
+
console.log(` Subscription ID: ${subscriptionId}`);
|
|
250
|
+
// Wait for at least one ticker update - direct implementation is faster
|
|
251
|
+
await this.waitForCondition(() => tickerReceived, 10000, 'ticker update');
|
|
252
|
+
return tickerReceived;
|
|
253
|
+
});
|
|
254
|
+
// Test subscribeOrderBook
|
|
255
|
+
await this.testAsyncMethod('subscribeOrderBook("INDY/USDT")', async () => {
|
|
256
|
+
let orderBookReceived = false;
|
|
257
|
+
const subscriptionId = await this.mexc.subscribeOrderBook('INDY/USDT', (orderBook) => {
|
|
258
|
+
if (!orderBookReceived) {
|
|
259
|
+
console.log(` 📈 Order Book Update: ${orderBook.symbol} Bids=${orderBook.bids.length}, Asks=${orderBook.asks.length}`);
|
|
260
|
+
if (orderBook.bids.length > 0 && orderBook.asks.length > 0) {
|
|
261
|
+
console.log(` Best: ${orderBook.bids[0].price} × ${orderBook.bids[0].amount} / ${orderBook.asks[0].price} × ${orderBook.asks[0].amount}`);
|
|
262
|
+
}
|
|
263
|
+
orderBookReceived = true;
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
this.subscriptionIds.push(subscriptionId);
|
|
267
|
+
console.log(` Subscription ID: ${subscriptionId}`);
|
|
268
|
+
// Wait for at least one order book update
|
|
269
|
+
await this.waitForCondition(() => orderBookReceived, 30000, 'order book update');
|
|
270
|
+
return orderBookReceived;
|
|
271
|
+
});
|
|
272
|
+
// Test subscribeTrades with extended timeout and fallback
|
|
273
|
+
await this.testAsyncMethod('subscribeTrades("INDY/USDT")', async () => {
|
|
274
|
+
let tradeReceived = false;
|
|
275
|
+
let tradeSymbol = 'INDY/USDT';
|
|
276
|
+
// First attempt with INDY/USDT and longer timeout (60s)
|
|
277
|
+
let subscriptionId = await this.mexc.subscribeTrades(tradeSymbol, (trade) => {
|
|
278
|
+
if (!tradeReceived) {
|
|
279
|
+
console.log(` 💱 Trade Update: ${trade.symbol} ${trade.side} ${trade.amount} at ${trade.price} (ID: ${trade.id})`);
|
|
280
|
+
tradeReceived = true;
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
this.subscriptionIds.push(subscriptionId);
|
|
284
|
+
console.log(` Subscription ID: ${subscriptionId}`);
|
|
285
|
+
// Wait for trade update with extended 60-second timeout for low-volume pairs
|
|
286
|
+
console.log(` ⏰ Waiting up to 60 seconds for trade (${tradeSymbol} has low trading volume)...`);
|
|
287
|
+
try {
|
|
288
|
+
await this.waitForCondition(() => tradeReceived, 60000, 'trade update');
|
|
289
|
+
return tradeReceived;
|
|
290
|
+
}
|
|
291
|
+
catch (timeoutError) {
|
|
292
|
+
console.log(` ⚠️ INDY/USDT timeout after 60s, trying BTCUSDT (higher volume)...`);
|
|
293
|
+
// Unsubscribe from INDY/USDT
|
|
294
|
+
await this.mexc.unsubscribe(subscriptionId);
|
|
295
|
+
// Try with BTCUSDT (much higher trading volume)
|
|
296
|
+
tradeSymbol = 'BTC/USDT';
|
|
297
|
+
tradeReceived = false;
|
|
298
|
+
subscriptionId = await this.mexc.subscribeTrades(tradeSymbol, (trade) => {
|
|
299
|
+
if (!tradeReceived) {
|
|
300
|
+
console.log(` 💱 Trade Update: ${trade.symbol} ${trade.side} ${trade.amount} at ${trade.price} (ID: ${trade.id})`);
|
|
301
|
+
tradeReceived = true;
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
// Update subscription list
|
|
305
|
+
this.subscriptionIds[this.subscriptionIds.length - 1] = subscriptionId;
|
|
306
|
+
console.log(` 📊 Fallback Subscription ID: ${subscriptionId}`);
|
|
307
|
+
// Wait for trade with shorter timeout (BTCUSDT should have frequent trades)
|
|
308
|
+
await this.waitForCondition(() => tradeReceived, 15000, 'trade update (BTC/USDT)');
|
|
309
|
+
return tradeReceived;
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
console.log();
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Test User Data Stream methods
|
|
316
|
+
*/
|
|
317
|
+
async testUserDataStreamMethods() {
|
|
318
|
+
console.log('👤 Testing User Data Stream Methods\n');
|
|
319
|
+
// Test User Data Stream status before connection
|
|
320
|
+
this.testMethod('isUserDataStreamConnected (before connect)', () => {
|
|
321
|
+
const connected = this.mexc.isUserDataStreamConnected();
|
|
322
|
+
console.log(` User Data Stream Connected: ${connected}`);
|
|
323
|
+
return connected === false;
|
|
324
|
+
});
|
|
325
|
+
// Test connectUserDataStream
|
|
326
|
+
await this.testAsyncMethod('connectUserDataStream()', async () => {
|
|
327
|
+
await this.mexc.connectUserDataStream();
|
|
328
|
+
// Give it a moment to establish connection
|
|
329
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
330
|
+
return this.mexc.isUserDataStreamConnected();
|
|
331
|
+
});
|
|
332
|
+
// Test User Data Stream status after connection
|
|
333
|
+
this.testMethod('isUserDataStreamConnected (after connect)', () => {
|
|
334
|
+
const connected = this.mexc.isUserDataStreamConnected();
|
|
335
|
+
console.log(` User Data Stream Connected: ${connected}`);
|
|
336
|
+
return connected === true;
|
|
337
|
+
});
|
|
338
|
+
// Test subscribeUserOrders
|
|
339
|
+
await this.testAsyncMethod('subscribeUserOrders()', async () => {
|
|
340
|
+
let orderReceived = false;
|
|
341
|
+
const subscriptionId = await this.mexc.subscribeUserOrders((order) => {
|
|
342
|
+
if (!orderReceived) {
|
|
343
|
+
console.log(` 📋 User Order Update: ${order.id} - ${order.symbol} ${order.side} ${order.amount} at ${order.price} (${order.status})`);
|
|
344
|
+
orderReceived = true;
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
this.subscriptionIds.push(subscriptionId);
|
|
348
|
+
console.log(` Subscription ID: ${subscriptionId}`);
|
|
349
|
+
// Wait a bit for order updates (may not receive any if no trading activity)
|
|
350
|
+
await new Promise(resolve => setTimeout(resolve, 5000));
|
|
351
|
+
return true; // Success if no errors
|
|
352
|
+
});
|
|
353
|
+
// Test subscribeUserTrades
|
|
354
|
+
await this.testAsyncMethod('subscribeUserTrades()', async () => {
|
|
355
|
+
let tradeReceived = false;
|
|
356
|
+
const subscriptionId = await this.mexc.subscribeUserTrades((trade) => {
|
|
357
|
+
if (!tradeReceived) {
|
|
358
|
+
console.log(` 🎯 User Trade Execution: ${trade.id} - ${trade.symbol} ${trade.side} ${trade.amount} at ${trade.price}`);
|
|
359
|
+
tradeReceived = true;
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
this.subscriptionIds.push(subscriptionId);
|
|
363
|
+
console.log(` Subscription ID: ${subscriptionId}`);
|
|
364
|
+
// Wait a bit for trade executions (may not receive any if no trading activity)
|
|
365
|
+
await new Promise(resolve => setTimeout(resolve, 5000));
|
|
366
|
+
return true; // Success if no errors
|
|
367
|
+
});
|
|
368
|
+
console.log();
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Test Error Handling
|
|
372
|
+
*/
|
|
373
|
+
async testErrorHandling() {
|
|
374
|
+
console.log('🛡️ Testing Error Handling\n');
|
|
375
|
+
// Test invalid symbol
|
|
376
|
+
await this.testAsyncMethod('getTicker("INVALID/SYMBOL") - error handling', async () => {
|
|
377
|
+
try {
|
|
378
|
+
await this.mexc.getTicker('INVALID/SYMBOL');
|
|
379
|
+
return false; // Should have thrown an error
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
console.log(` ✅ Correctly handled invalid symbol error: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
383
|
+
return true;
|
|
384
|
+
}
|
|
385
|
+
});
|
|
386
|
+
console.log();
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Test cleanup and disconnect
|
|
390
|
+
*/
|
|
391
|
+
async testCleanup() {
|
|
392
|
+
console.log('🧹 Testing Cleanup and Disconnect\n');
|
|
393
|
+
// Test unsubscribe for all subscriptions
|
|
394
|
+
for (const subscriptionId of this.subscriptionIds) {
|
|
395
|
+
await this.testAsyncMethod(`unsubscribe(${subscriptionId.substring(0, 20)}...)`, async () => {
|
|
396
|
+
await this.mexc.unsubscribe(subscriptionId);
|
|
397
|
+
return true;
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
// Test disconnectWebSocket
|
|
401
|
+
await this.testAsyncMethod('disconnectWebSocket()', async () => {
|
|
402
|
+
await this.mexc.disconnectWebSocket();
|
|
403
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
404
|
+
return !this.mexc.isWebSocketConnected();
|
|
405
|
+
});
|
|
406
|
+
// Test disconnectUserDataStream
|
|
407
|
+
await this.testAsyncMethod('disconnectUserDataStream()', async () => {
|
|
408
|
+
await this.mexc.disconnectUserDataStream();
|
|
409
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
410
|
+
return !this.mexc.isUserDataStreamConnected();
|
|
411
|
+
});
|
|
412
|
+
// Test disconnect
|
|
413
|
+
await this.testAsyncMethod('disconnect()', async () => {
|
|
414
|
+
await this.mexc.disconnect();
|
|
415
|
+
return !this.mexc.isConnected();
|
|
416
|
+
});
|
|
417
|
+
console.log();
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Helper method to test synchronous methods
|
|
421
|
+
*/
|
|
422
|
+
testMethod(methodName, testFn) {
|
|
423
|
+
try {
|
|
424
|
+
const result = testFn();
|
|
425
|
+
this.testResults[methodName] = result ? 'PASS' : 'FAIL';
|
|
426
|
+
console.log(` ${result ? '✅' : '❌'} ${methodName}: ${result ? 'PASS' : 'FAIL'}`);
|
|
427
|
+
}
|
|
428
|
+
catch (error) {
|
|
429
|
+
this.testResults[methodName] = 'FAIL';
|
|
430
|
+
console.log(` ❌ ${methodName}: FAIL - ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Helper method to test asynchronous methods
|
|
435
|
+
*/
|
|
436
|
+
async testAsyncMethod(methodName, testFn) {
|
|
437
|
+
try {
|
|
438
|
+
const result = await testFn();
|
|
439
|
+
this.testResults[methodName] = result ? 'PASS' : 'FAIL';
|
|
440
|
+
console.log(` ${result ? '✅' : '❌'} ${methodName}: ${result ? 'PASS' : 'FAIL'}`);
|
|
441
|
+
}
|
|
442
|
+
catch (error) {
|
|
443
|
+
this.testResults[methodName] = 'FAIL';
|
|
444
|
+
console.log(` ❌ ${methodName}: FAIL - ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Helper method to wait for a condition
|
|
449
|
+
*/
|
|
450
|
+
async waitForCondition(condition, timeout, description) {
|
|
451
|
+
const start = Date.now();
|
|
452
|
+
while (Date.now() - start < timeout) {
|
|
453
|
+
if (condition()) {
|
|
454
|
+
return true;
|
|
455
|
+
}
|
|
456
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
457
|
+
}
|
|
458
|
+
console.log(` ⚠️ Timeout waiting for ${description}`);
|
|
459
|
+
return false;
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Print test summary
|
|
463
|
+
*/
|
|
464
|
+
printSummary() {
|
|
465
|
+
const results = Object.values(this.testResults);
|
|
466
|
+
const passed = results.filter(r => r === 'PASS').length;
|
|
467
|
+
const failed = results.filter(r => r === 'FAIL').length;
|
|
468
|
+
const skipped = results.filter(r => r === 'SKIP').length;
|
|
469
|
+
const total = results.length;
|
|
470
|
+
console.log('='.repeat(70));
|
|
471
|
+
console.log('📊 TEST SUMMARY');
|
|
472
|
+
console.log('='.repeat(70));
|
|
473
|
+
console.log(`✅ PASSED: ${passed}/${total} tests`);
|
|
474
|
+
console.log(`❌ FAILED: ${failed}/${total} tests`);
|
|
475
|
+
console.log(`⏭️ SKIPPED: ${skipped}/${total} tests`);
|
|
476
|
+
console.log(`📈 SUCCESS RATE: ${((passed / (total - skipped)) * 100).toFixed(1)}%`);
|
|
477
|
+
if (failed > 0) {
|
|
478
|
+
console.log('\n❌ FAILED TESTS:');
|
|
479
|
+
Object.entries(this.testResults)
|
|
480
|
+
.filter(([_, result]) => result === 'FAIL')
|
|
481
|
+
.forEach(([method, _]) => console.log(` - ${method}`));
|
|
482
|
+
}
|
|
483
|
+
if (skipped > 0) {
|
|
484
|
+
console.log('\n⏭️ SKIPPED TESTS:');
|
|
485
|
+
Object.entries(this.testResults)
|
|
486
|
+
.filter(([_, result]) => result === 'SKIP')
|
|
487
|
+
.forEach(([method, _]) => console.log(` - ${method}`));
|
|
488
|
+
}
|
|
489
|
+
console.log('\n🏗️ BASE SDK ARCHITECTURE STATUS:');
|
|
490
|
+
const coreMethodsPassed = [
|
|
491
|
+
'connect', 'getBalance() - all balances', 'getTicker("INDY/USDT")',
|
|
492
|
+
'connectWebSocket()', 'connectUserDataStream()', 'disconnect()'
|
|
493
|
+
].every(method => this.testResults[method] === 'PASS');
|
|
494
|
+
console.log(` ${coreMethodsPassed ? '✅' : '❌'} Core Methods: ${coreMethodsPassed ? 'ALL WORKING' : 'ISSUES DETECTED'}`);
|
|
495
|
+
console.log(` ${passed >= total * 0.8 ? '✅' : '❌'} Overall Health: ${passed >= total * 0.8 ? 'PRODUCTION READY' : 'NEEDS ATTENTION'}`);
|
|
496
|
+
console.log('\n🎯 MEXC CONNECTOR COMPREHENSIVE TEST COMPLETED');
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Run the comprehensive test
|
|
501
|
+
*/
|
|
502
|
+
async function runComprehensiveTest() {
|
|
503
|
+
const test = new MexcConnectorTest();
|
|
504
|
+
try {
|
|
505
|
+
await test.runAllTests();
|
|
506
|
+
await test.testCleanup();
|
|
507
|
+
}
|
|
508
|
+
catch (error) {
|
|
509
|
+
console.error('Fatal test error:', error);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
// Run the test
|
|
513
|
+
runComprehensiveTest();
|
|
514
|
+
//# sourceMappingURL=mexc-connector-comprehensive-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mexc-connector-comprehensive-test.js","sourceRoot":"","sources":["../../src/examples/mexc-connector-comprehensive-test.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAEH,yBAAuB;AACvB,qEAAiE;AAGjE,MAAM,iBAAiB;IAKrB;QAHQ,gBAAW,GAAgD,EAAE,CAAC;QAC9D,oBAAe,GAAa,EAAE,CAAC;QAGrC,IAAI,CAAC,IAAI,GAAG,IAAI,8BAAa,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QAEtE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAE/B,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB;QAC5B,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAElD,yCAAyC;QACzC,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,EAAE;YACrC,MAAM,WAAW,GAAwB;gBACvC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,UAAU;gBAC9C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,aAAa;aACjD,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,qBAAqB;QACrB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,EAAE;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/C,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,EAAE;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC/D,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,6BAA6B,EAAE,GAAG,EAAE;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC/D,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACtB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAEvD,mCAAmC;QACnC,MAAM,IAAI,CAAC,eAAe,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAA6B,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,oBAAoB,CAAC,CAAC;YAE1E,uBAAuB;YACvB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,OAAO,CAAC,IAAI,UAAU,OAAO,CAAC,IAAI,WAAW,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACjG,CAAC,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,0CAA0C;QAC1C,MAAM,IAAI,CAAC,eAAe,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAY,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,IAAI,UAAU,OAAO,CAAC,IAAI,WAAW,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACnG,OAAO,OAAO,CAAC,KAAK,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB;QACzB,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAE3D,iBAAiB;QACjB,MAAM,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,MAAM,UAAU,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7G,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,IAAI,CAAC,eAAe,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,yBAAyB,SAAS,CAAC,MAAM,UAAU,SAAS,CAAC,IAAI,CAAC,MAAM,UAAU,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACvH,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,OAAO,SAAS,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,IAAI,CAAC,eAAe,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,MAAM,mBAAmB,CAAC,CAAC;YACnE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,KAAK,SAAS,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;YACvG,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QAErD,mCAAmC;QACnC,MAAM,IAAI,CAAC,eAAe,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;YAE7D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACrH,CAAC;YAED,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,uCAAuC;QACvC,MAAM,IAAI,CAAC,eAAe,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YACpF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,+BAA+B,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;YAEnE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC1C,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1G,CAAC,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,gDAAgD;QAChD,IAAI,WAA+B,CAAC;QACpC,MAAM,IAAI,CAAC,eAAe,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,uBAAuB;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,iCAAiC;YAE3E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YACzF,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC;YAEvB,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,CAAC,EAAE,UAAU,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAClH,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,MAAM,aAAa,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAEnE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,iCAAiC;QACjC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,eAAe,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAY,EAAE,WAAW,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,CAAC,EAAE,YAAY,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvH,OAAO,KAAK,CAAC,EAAE,KAAK,WAAW,CAAC;YAClC,CAAC,CAAC,CAAC;YAEH,mBAAmB;YACnB,MAAM,IAAI,CAAC,eAAe,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;gBACzE,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAY,EAAE,WAAW,CAAC,CAAC;gBACvD,OAAO,CAAC,GAAG,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;gBAClD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC,GAAG,MAAM,CAAC;YACzD,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,GAAG,MAAM,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QACtF,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB;QACxB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAE9C,0CAA0C;QAC1C,IAAI,CAAC,UAAU,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;YAC9C,OAAO,MAAM,KAAK,cAAc,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;YACpD,OAAO,SAAS,KAAK,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,wBAAwB;QACxB,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACnC,2CAA2C;YAC3C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,yCAAyC;QACzC,IAAI,CAAC,UAAU,CAAC,oCAAoC,EAAE,GAAG,EAAE;YACzD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;YAC9C,OAAO,MAAM,KAAK,WAAW,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;YACpD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,IAAI,CAAC,eAAe,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YACpE,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC7E,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC/G,cAAc,GAAG,IAAI,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;YAErD,wEAAwE;YACxE,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;YAC1E,OAAO,cAAc,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,0BAA0B;QAC1B,MAAM,IAAI,CAAC,eAAe,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YACvE,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAC9B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,EAAE;gBACnF,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,4BAA4B,SAAS,CAAC,MAAM,SAAS,SAAS,CAAC,IAAI,CAAC,MAAM,UAAU,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;oBACzH,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC9I,CAAC;oBACD,iBAAiB,GAAG,IAAI,CAAC;gBAC3B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;YAErD,0CAA0C;YAC1C,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;YACjF,OAAO,iBAAiB,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,0DAA0D;QAC1D,MAAM,IAAI,CAAC,eAAe,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YACpE,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,WAAW,GAAG,WAAW,CAAC;YAE9B,wDAAwD;YACxD,IAAI,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC1E,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,KAAK,SAAS,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;oBACrH,aAAa,GAAG,IAAI,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;YAErD,6EAA6E;YAC7E,OAAO,CAAC,GAAG,CAAC,4CAA4C,WAAW,6BAA6B,CAAC,CAAC;YAElG,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;gBACxE,OAAO,aAAa,CAAC;YACvB,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;gBAErF,6BAA6B;gBAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAE5C,gDAAgD;gBAChD,WAAW,GAAG,UAAU,CAAC;gBACzB,aAAa,GAAG,KAAK,CAAC;gBAEtB,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;oBACtE,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,KAAK,SAAS,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;wBACrH,aAAa,GAAG,IAAI,CAAC;oBACvB,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,2BAA2B;gBAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,mCAAmC,cAAc,EAAE,CAAC,CAAC;gBAEjE,4EAA4E;gBAC5E,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,yBAAyB,CAAC,CAAC;gBACnF,OAAO,aAAa,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,yBAAyB;QAC7B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QAErD,iDAAiD;QACjD,IAAI,CAAC,UAAU,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACjE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;YAC3D,OAAO,SAAS,KAAK,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,6BAA6B;QAC7B,MAAM,IAAI,CAAC,eAAe,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACxC,2CAA2C;YAC3C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,gDAAgD;QAChD,IAAI,CAAC,UAAU,CAAC,2CAA2C,EAAE,GAAG,EAAE;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;YAC3D,OAAO,SAAS,KAAK,IAAI,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YAC7D,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,EAAE;gBACnE,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;oBACxI,aAAa,GAAG,IAAI,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;YAErD,4EAA4E;YAC5E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC,CAAC,uBAAuB;QACtC,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YAC7D,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,EAAE;gBACnE,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;oBACzH,aAAa,GAAG,IAAI,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;YAErD,+EAA+E;YAC/E,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC,CAAC,uBAAuB;QACtC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAE5C,sBAAsB;QACtB,MAAM,IAAI,CAAC,eAAe,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YACpF,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;gBAC5C,OAAO,KAAK,CAAC,CAAC,8BAA8B;YAC9C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,gDAAgD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;gBACxH,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QAEnD,yCAAyC;QACzC,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAClD,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;gBAC1F,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAC5C,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;QAED,2BAA2B;QAC3B,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACtC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,gCAAgC;QAChC,MAAM,IAAI,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC3C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,kBAAkB;QAClB,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,UAAkB,EAAE,MAAqB;QAC1D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACrF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,QAAQ,UAAU,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,UAAkB,EAAE,MAA8B;QAC9E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACrF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,QAAQ,UAAU,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,SAAwB,EAAE,OAAe,EAAE,WAAmB;QAC3F,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;YACpC,IAAI,SAAS,EAAE,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,8BAA8B,WAAW,EAAE,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;QACxD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;QACzD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;QAE7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,IAAI,KAAK,QAAQ,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,IAAI,KAAK,QAAQ,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEpF,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;iBAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC;iBAC1C,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;iBAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC;iBAC1C,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,MAAM,iBAAiB,GAAG;YACxB,SAAS,EAAE,6BAA6B,EAAE,wBAAwB;YAClE,oBAAoB,EAAE,yBAAyB,EAAE,cAAc;SAChE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC;QAEvD,OAAO,CAAC,GAAG,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,kBAAkB,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC1H,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,oBAAoB,MAAM,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAEzI,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;CACF;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB;IACjC,MAAM,IAAI,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,eAAe;AACf,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mexc-order-update-test.d.ts","sourceRoot":"","sources":["../../src/examples/mexc-order-update-test.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAevB,iBAAe,oBAAoB,kBAuMlC;AAQD,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|