iq-option-client 1.3.6 โ†’ 1.3.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/LICENSE CHANGED
@@ -20,3 +20,4 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20
20
 
21
21
 
22
22
 
23
+
package/README.md CHANGED
@@ -11,12 +11,13 @@ A robust TypeScript client library for interacting with the **IQ Option WebSocke
11
11
  - ๐Ÿ” **Secure Authentication** - Environment-based credential management
12
12
  - ๐Ÿ“Š **Real-time Data Streaming** - WebSocket-based candle data, trader sentiment, and option events
13
13
  - ๐Ÿ“ˆ **Order Management** - Binary and digital option order execution
14
- - ๐Ÿ“œ **Historical Data** - Retrieve historical candles for backtesting and analysis
14
+ - ๐Ÿ“œ **Historical Data** - Retrieve historical candles for backtesting and analysis (with configurable timeout)
15
15
  - ๐ŸŽฏ **Type-Safe** - Full TypeScript support with comprehensive type definitions
16
16
  - ๐Ÿ—๏ธ **SOLID Architecture** - Clean code with design patterns (Strategy, Repository, Factory, Command, Builder)
17
17
  - ๐Ÿ”„ **Error Handling** - Comprehensive error handling with retry logic
18
18
  - ๐Ÿ“ **Structured Logging** - Winston-based logging with context and metadata
19
19
  - โœ… **Input Validation** - Built-in validation for all API methods
20
+ - ๐Ÿ”ง **Helper Utilities** - Market symbol helpers, request ID generators, and validators
20
21
  - ๐Ÿงช **Well Tested** - Comprehensive test suite
21
22
 
22
23
  ## ๐Ÿ“ฆ Installation
@@ -99,7 +100,7 @@ const initData = await api.getInitializationData();
99
100
  // Get digital option instruments
100
101
  const instruments = await api.getDigitalOptionInstruments(IQOptionMarket.EURUSD);
101
102
 
102
- // Get historical candles
103
+ // Get historical candles with default timeout (15 seconds)
103
104
  const historicalCandles = await api.getCandles(
104
105
  activeId, // Market/Active ID (e.g., 1 for EURUSD)
105
106
  size, // Candle size in seconds (60 = 1 min, 120 = 2 min)
@@ -109,6 +110,17 @@ const historicalCandles = await api.getCandles(
109
110
  true // only_closed (optional, default: true)
110
111
  );
111
112
 
113
+ // Get historical candles with custom timeout (30 seconds)
114
+ const historicalCandlesWithTimeout = await api.getCandles(
115
+ activeId,
116
+ size,
117
+ fromId,
118
+ toId,
119
+ true,
120
+ true,
121
+ 30000 // timeoutMs (optional, default: 15000)
122
+ );
123
+
112
124
  // Send binary order
113
125
  await api.sendOrderBinary(
114
126
  market,
@@ -387,6 +399,44 @@ await api.sendOrderBinary(
387
399
  );
388
400
  ```
389
401
 
402
+ ### Market Helper
403
+
404
+ Get market symbol/name from market ID for logging and error messages:
405
+
406
+ ```typescript
407
+ import { MarketHelper, IQOptionMarket } from 'iq-option-client';
408
+
409
+ // Get market symbol
410
+ const symbol = MarketHelper.getMarketSymbol(IQOptionMarket.EURUSD);
411
+ console.log(symbol); // "EURUSD"
412
+
413
+ // Get market symbol with fallback
414
+ const symbolWithFallback = MarketHelper.getMarketSymbolWithFallback(
415
+ IQOptionMarket.USDJPY,
416
+ "UNKNOWN"
417
+ );
418
+ console.log(symbolWithFallback); // "USDJPY"
419
+
420
+ // Check if market exists
421
+ const exists = MarketHelper.hasMarketSymbol(IQOptionMarket.GBPUSD);
422
+ console.log(exists); // true
423
+
424
+ // Example: Use in error handling
425
+ try {
426
+ await api.sendOrderBinary(
427
+ IQOptionMarket.EURUSD_OTC,
428
+ IQOptionModel.BUY,
429
+ iqOptionExpired(1),
430
+ balanceId,
431
+ 90,
432
+ 10
433
+ );
434
+ } catch (error) {
435
+ const symbol = MarketHelper.getMarketSymbol(IQOptionMarket.EURUSD_OTC);
436
+ console.error(`[โœ—] Erro ao enviar ordem: ${symbol}`, error);
437
+ }
438
+ ```
439
+
390
440
  ## ๐ŸŽฏ API Reference
391
441
 
392
442
  ### Enums
@@ -418,6 +468,7 @@ await api.sendOrderBinary(
418
468
  - `InputValidator` - Validate input parameters
419
469
  - `CandleValidator` - Validate candle data structure
420
470
  - `CurrencyValidator` - Validate currency update messages
471
+ - `MarketHelper` - Get market symbol/name from market ID
421
472
 
422
473
  ## ๐Ÿ”ง Configuration
423
474
 
@@ -459,6 +510,9 @@ npm run sample:quick
459
510
 
460
511
  # Test historical candles functionality
461
512
  npm run test:candles
513
+
514
+ # Test fetching 200 candles
515
+ npm run test:200candles
462
516
  ```
463
517
 
464
518
  **Note:** Tests require valid IQ Option credentials set in environment variables:
@@ -567,7 +621,8 @@ candleStream.on('data', async (candle) => {
567
621
  candle.id - 100, // Last 100 candles
568
622
  candle.id,
569
623
  true,
570
- true
624
+ true,
625
+ 30000 // Custom timeout for large requests
571
626
  );
572
627
 
573
628
  logger.info(`Retrieved ${historicalCandles.length} historical candles for analysis`);
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /*
4
+ * Copyright (C) 2020 Wellington Rocha
5
+ * All Rights Reserved.
6
+ *
7
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
8
+ *
9
+ * Proprietary and confidential.
10
+ */
11
+ // Load environment variables from .env file if it exists
12
+ try {
13
+ require("dotenv").config();
14
+ }
15
+ catch (e) {
16
+ // dotenv is optional, continue without it
17
+ }
18
+ const Core = require("../lib");
19
+ const Logger_1 = require("../lib/Helper/Logger");
20
+ const Helper_1 = require("../lib/Service/IQOptionService/Helper");
21
+ const IQOptionExpired_1 = require("../lib/Service/IQOptionService/IQOptionExpired");
22
+ // Get credentials from environment variables
23
+ const email = process.env.IQ_OPTION_EMAIL;
24
+ const password = process.env.IQ_OPTION_PASSWORD;
25
+ if (!email || !password) {
26
+ // eslint-disable-next-line no-console
27
+ console.error("Error: IQ_OPTION_EMAIL and IQ_OPTION_PASSWORD environment variables are required");
28
+ process.exit(1);
29
+ }
30
+ const logger = Logger_1.LoggerFactory.getDefault();
31
+ const iqOptionApi = new Core.IQOptionApi(email, password);
32
+ // Lista de mercados para testar
33
+ const markets = [
34
+ Core.IQOptionMarket.USDJPY,
35
+ Core.IQOptionMarket.GBPJPY,
36
+ Core.IQOptionMarket.EURGBP,
37
+ Core.IQOptionMarket.USDCHF,
38
+ Core.IQOptionMarket.EURAUD,
39
+ Core.IQOptionMarket.GBPUSD,
40
+ Core.IQOptionMarket.AUDUSD,
41
+ ];
42
+ iqOptionApi
43
+ .connectAsync()
44
+ .then(async (profile) => {
45
+ logger.info("Connected successfully", { operation: "connect", userId: profile.user_id });
46
+ const testBalance = profile.balances.find(b => b.type === Core.IQOptionCurrencyType.TEST);
47
+ if (!testBalance) {
48
+ throw new Error("Test balance not found");
49
+ }
50
+ // Funรงรฃo para enviar ordem com retry e tratamento de erro correto
51
+ const sendOrderWithRetry = async (market, attempt = 1, maxAttempts = 3) => {
52
+ // โœ… CORRETO: Usar MarketHelper para obter o sรญmbolo do mercado
53
+ const symbol = Helper_1.MarketHelper.getMarketSymbol(market);
54
+ logger.info(`${symbol} | Tentativa ${attempt}...`, {
55
+ operation: "sendOrder",
56
+ market,
57
+ metadata: { symbol, attempt },
58
+ });
59
+ try {
60
+ const result = await iqOptionApi.sendOrderBinary(market, Core.IQOptionModel.BUY, (0, IQOptionExpired_1.iqOptionExpired)(1), testBalance.id, 90, 10);
61
+ logger.info(`โœ… Ordem enviada com sucesso: ${symbol}`, {
62
+ operation: "sendOrder",
63
+ market,
64
+ metadata: { symbol, optionId: result.option_id },
65
+ });
66
+ }
67
+ catch (error) {
68
+ const err = error instanceof Error ? error : new Error(String(error));
69
+ // โœ… CORRETO: Usar a variรกvel symbol que foi definida acima
70
+ logger.error(`[โœ—] Erro ao enviar ordem: ${symbol}`, {
71
+ operation: "sendOrder",
72
+ market,
73
+ metadata: { symbol, attempt, errorMessage: err.message },
74
+ }, err);
75
+ // Retry logic
76
+ if (attempt < maxAttempts) {
77
+ await new Promise(resolve => setTimeout(resolve, 1000)); // Wait 1 second
78
+ return sendOrderWithRetry(market, attempt + 1, maxAttempts);
79
+ }
80
+ }
81
+ };
82
+ // Enviar ordens para todos os mercados
83
+ for (const market of markets) {
84
+ await sendOrderWithRetry(market);
85
+ // Pequeno delay entre ordens
86
+ await new Promise(resolve => setTimeout(resolve, 500));
87
+ }
88
+ logger.info("Todas as ordens processadas", {
89
+ operation: "main",
90
+ metadata: { marketsCount: markets.length },
91
+ });
92
+ })
93
+ .catch((e) => {
94
+ const error = e instanceof Error ? e : new Error(String(e));
95
+ logger.error("Application error", { operation: "main" }, error);
96
+ process.exit(1);
97
+ });
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXJFeGFtcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi9PcmRlckV4YW1wbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7OztHQU9HO0FBQ0gseURBQXlEO0FBQ3pELElBQUksQ0FBQztJQUNELE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUMvQixDQUFDO0FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUNULDBDQUEwQztBQUM5QyxDQUFDO0FBRUQsK0JBQStCO0FBQy9CLGlEQUFxRDtBQUNyRCxrRUFBcUU7QUFDckUsb0ZBQWlGO0FBRWpGLDZDQUE2QztBQUM3QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQztBQUMxQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDO0FBRWhELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QixzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxrRkFBa0YsQ0FBQyxDQUFDO0lBQ2xHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sTUFBTSxHQUFHLHNCQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDMUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztBQUUxRCxnQ0FBZ0M7QUFDaEMsTUFBTSxPQUFPLEdBQUc7SUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07SUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNO0lBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTTtJQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07SUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNO0lB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LE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUU7UUFDdkMsU0FBUyxFQUFFLE1BQU07UUFDakIsUUFBUSxFQUFFLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUU7S0FDN0MsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0tBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7SUFDZCxNQUFNLEtBQUssR0FBRyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUMsQ0FBQyJ9
@@ -0,0 +1,29 @@
1
+ import { IQOptionMarket } from "../Model/IQOptionMarket";
2
+ /**
3
+ * Helper functions for market operations.
4
+ */
5
+ export declare class MarketHelper {
6
+ /**
7
+ * Get market symbol/name from market ID.
8
+ * Returns the symbol name if found, otherwise returns the market ID as string.
9
+ *
10
+ * @param market Market ID (IQOptionMarket enum value)
11
+ * @returns Market symbol name (e.g., "EURUSD", "GBPUSD") or market ID as string
12
+ */
13
+ static getMarketSymbol(market: IQOptionMarket | number): string;
14
+ /**
15
+ * Get market symbol/name from market ID with fallback.
16
+ *
17
+ * @param market Market ID (IQOptionMarket enum value)
18
+ * @param fallback Fallback string if market not found
19
+ * @returns Market symbol name or fallback
20
+ */
21
+ static getMarketSymbolWithFallback(market: IQOptionMarket | number, fallback?: string): string;
22
+ /**
23
+ * Check if market exists in the invert map.
24
+ *
25
+ * @param market Market ID (IQOptionMarket enum value)
26
+ * @returns True if market exists, false otherwise
27
+ */
28
+ static hasMarketSymbol(market: IQOptionMarket | number): boolean;
29
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MarketHelper = void 0;
4
+ const IQOptionMarketInvert_1 = require("../Model/IQOptionMarketInvert");
5
+ /**
6
+ * Helper functions for market operations.
7
+ */
8
+ class MarketHelper {
9
+ /**
10
+ * Get market symbol/name from market ID.
11
+ * Returns the symbol name if found, otherwise returns the market ID as string.
12
+ *
13
+ * @param market Market ID (IQOptionMarket enum value)
14
+ * @returns Market symbol name (e.g., "EURUSD", "GBPUSD") or market ID as string
15
+ */
16
+ static getMarketSymbol(market) {
17
+ const marketId = typeof market === "number" ? market : market;
18
+ const symbol = IQOptionMarketInvert_1.IQOptionMarketInvert[marketId];
19
+ return symbol || `MARKET_${marketId}`;
20
+ }
21
+ /**
22
+ * Get market symbol/name from market ID with fallback.
23
+ *
24
+ * @param market Market ID (IQOptionMarket enum value)
25
+ * @param fallback Fallback string if market not found
26
+ * @returns Market symbol name or fallback
27
+ */
28
+ static getMarketSymbolWithFallback(market, fallback = "UNKNOWN") {
29
+ const marketId = typeof market === "number" ? market : market;
30
+ return IQOptionMarketInvert_1.IQOptionMarketInvert[marketId] || fallback;
31
+ }
32
+ /**
33
+ * Check if market exists in the invert map.
34
+ *
35
+ * @param market Market ID (IQOptionMarket enum value)
36
+ * @returns True if market exists, false otherwise
37
+ */
38
+ static hasMarketSymbol(market) {
39
+ const marketId = typeof market === "number" ? market : market;
40
+ return marketId in IQOptionMarketInvert_1.IQOptionMarketInvert;
41
+ }
42
+ }
43
+ exports.MarketHelper = MarketHelper;
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFya2V0SGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9TZXJ2aWNlL0lRT3B0aW9uU2VydmljZS9IZWxwZXIvTWFya2V0SGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVNBLHdFQUFxRTtBQUVyRTs7R0FFRztBQUNILE1BQWEsWUFBWTtJQUNyQjs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQStCO1FBQ3pELE1BQU0sUUFBUSxHQUFHLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxNQUFpQixDQUFDO1FBQzFFLE1BQU0sTUFBTSxHQUFHLDJDQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLE9BQU8sTUFBTSxJQUFJLFVBQVUsUUFBUSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQywyQkFBMkIsQ0FDckMsTUFBK0IsRUFDL0IsV0FBbUIsU0FBUztRQUU1QixNQUFNLFFBQVEsR0FBRyxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsTUFBaUIsQ0FBQztRQUMxRSxPQUFPLDJDQUFvQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQStCO1FBQ3pELE1BQU0sUUFBUSxHQUFHLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxNQUFpQixDQUFDO1FBQzFFLE9BQU8sUUFBUSxJQUFJLDJDQUFvQixDQUFDO0lBQzVDLENBQUM7Q0FDSjtBQXZDRCxvQ0F1Q0MifQ==
@@ -2,3 +2,4 @@ export * from "./RequestIdGenerator";
2
2
  export * from "./InputValidator";
3
3
  export * from "./CandleValidator";
4
4
  export * from "./CurrencyValidator";
5
+ export * from "./MarketHelper";
@@ -26,4 +26,5 @@ __exportStar(require("./RequestIdGenerator"), exports);
26
26
  __exportStar(require("./InputValidator"), exports);
27
27
  __exportStar(require("./CandleValidator"), exports);
28
28
  __exportStar(require("./CurrencyValidator"), exports);
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL1NlcnZpY2UvSVFPcHRpb25TZXJ2aWNlL0hlbHBlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7R0FPRztBQUNILHVEQUFxQztBQUNyQyxtREFBaUM7QUFDakMsb0RBQWtDO0FBQ2xDLHNEQUFvQyJ9
29
+ __exportStar(require("./MarketHelper"), exports);
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL1NlcnZpY2UvSVFPcHRpb25TZXJ2aWNlL0hlbHBlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7R0FPRztBQUNILHVEQUFxQztBQUNyQyxtREFBaUM7QUFDakMsb0RBQWtDO0FBQ2xDLHNEQUFvQztBQUNwQyxpREFBK0IifQ==
@@ -381,13 +381,44 @@ class IQOptionApi {
381
381
  }, requestID)
382
382
  .then(() => {
383
383
  return new Promise((resolve, reject) => {
384
+ let resolved = false;
385
+ const receivedMessages = [];
386
+ let timeoutId = null;
387
+ const cleanup = () => {
388
+ if (timeoutId) {
389
+ clearTimeout(timeoutId);
390
+ timeoutId = null;
391
+ }
392
+ this.iqOptionWs.socket().off("message", listener);
393
+ };
394
+ const doResolve = (candles) => {
395
+ if (resolved)
396
+ return;
397
+ resolved = true;
398
+ cleanup();
399
+ resolve(candles);
400
+ };
401
+ const doReject = (error) => {
402
+ if (resolved)
403
+ return;
404
+ resolved = true;
405
+ cleanup();
406
+ reject(error);
407
+ };
384
408
  const listener = (message) => {
385
- var _a, _b, _c;
409
+ var _a, _b, _c, _d;
386
410
  try {
387
411
  const messageJSON = JSON.parse(message.toString());
412
+ // Store all messages for debugging
413
+ receivedMessages.push({
414
+ name: messageJSON.name,
415
+ request_id: messageJSON.request_id,
416
+ hasMsg: !!messageJSON.msg,
417
+ timestamp: Date.now(),
418
+ });
388
419
  // Log all messages with matching request_id for debugging
389
420
  if (messageJSON.request_id === String(requestID)) {
390
- Core.logger().silly("IQOptionApi::getCandles - Received response", {
421
+ Core.logger().debug("IQOptionApi::getCandles - Received message with matching request_id", {
391
422
  operation: "getCandles",
392
423
  metadata: {
393
424
  name: messageJSON.name,
@@ -395,19 +426,23 @@ class IQOptionApi {
395
426
  hasMsg: !!messageJSON.msg,
396
427
  msgType: typeof messageJSON.msg,
397
428
  isArray: Array.isArray(messageJSON.msg),
429
+ fullMessage: JSON.stringify(messageJSON).substring(0, 1000),
398
430
  },
399
431
  });
400
432
  }
401
433
  // Check if this is the candles response
402
- if (messageJSON.request_id === String(requestID) &&
403
- (messageJSON.name === Core.IQOptionAction.CANDLES ||
404
- messageJSON.name === "candles" ||
405
- messageJSON.name === "get-candles-result")) {
406
- this.iqOptionWs.socket().off("message", listener);
407
- Core.logger().debug("IQOptionApi::getCandles - Processing response", {
434
+ // First check by request_id, then by name
435
+ const hasMatchingRequestId = messageJSON.request_id === String(requestID);
436
+ const isCandlesResponse = messageJSON.name === Core.IQOptionAction.CANDLES ||
437
+ messageJSON.name === "candles" ||
438
+ messageJSON.name === "get-candles-result" ||
439
+ messageJSON.name === "get-candles";
440
+ if (hasMatchingRequestId && isCandlesResponse) {
441
+ Core.logger().debug("IQOptionApi::getCandles - Processing candles response", {
408
442
  operation: "getCandles",
409
443
  metadata: {
410
444
  name: messageJSON.name,
445
+ request_id: messageJSON.request_id,
411
446
  msgType: typeof messageJSON.msg,
412
447
  isArray: Array.isArray(messageJSON.msg),
413
448
  },
@@ -418,9 +453,6 @@ class IQOptionApi {
418
453
  if (Array.isArray(messageJSON.msg)) {
419
454
  candles = messageJSON.msg;
420
455
  }
421
- else if (messageJSON.msg && Array.isArray(messageJSON.msg)) {
422
- candles = messageJSON.msg;
423
- }
424
456
  else if (((_a = messageJSON.msg) === null || _a === void 0 ? void 0 : _a.candles) && Array.isArray(messageJSON.msg.candles)) {
425
457
  candles = messageJSON.msg.candles;
426
458
  }
@@ -430,6 +462,9 @@ class IQOptionApi {
430
462
  else if (((_c = messageJSON.msg) === null || _c === void 0 ? void 0 : _c.result) && Array.isArray(messageJSON.msg.result)) {
431
463
  candles = messageJSON.msg.result;
432
464
  }
465
+ else if (((_d = messageJSON.msg) === null || _d === void 0 ? void 0 : _d.body) && Array.isArray(messageJSON.msg.body)) {
466
+ candles = messageJSON.msg.body;
467
+ }
433
468
  else if (Array.isArray(messageJSON)) {
434
469
  // Response might be directly an array
435
470
  candles = messageJSON;
@@ -438,7 +473,7 @@ class IQOptionApi {
438
473
  Core.logger().warn("IQOptionApi::getCandles - Unknown response format", {
439
474
  operation: "getCandles",
440
475
  metadata: {
441
- response: JSON.stringify(messageJSON).substring(0, 500),
476
+ response: JSON.stringify(messageJSON).substring(0, 1000),
442
477
  },
443
478
  });
444
479
  }
@@ -446,31 +481,46 @@ class IQOptionApi {
446
481
  operation: "getCandles",
447
482
  metadata: {
448
483
  count: candles.length,
484
+ requestID,
485
+ },
486
+ });
487
+ doResolve(candles);
488
+ }
489
+ else if (hasMatchingRequestId) {
490
+ // Log messages with matching request_id but different name
491
+ Core.logger().debug("IQOptionApi::getCandles - Message with matching request_id but different name", {
492
+ operation: "getCandles",
493
+ metadata: {
494
+ name: messageJSON.name,
495
+ request_id: messageJSON.request_id,
496
+ expectedName: Core.IQOptionAction.CANDLES,
449
497
  },
450
498
  });
451
- resolve(candles);
452
499
  }
453
500
  }
454
501
  catch (error) {
455
502
  const err = error instanceof Error ? error : new Error(String(error));
456
503
  Core.logger().error("IQOptionApi::getCandles - Error parsing response", {
457
504
  operation: "getCandles",
505
+ metadata: { requestID },
458
506
  }, err);
459
- this.iqOptionWs.socket().off("message", listener);
460
- reject(err);
507
+ doReject(err);
461
508
  }
462
509
  };
463
510
  this.iqOptionWs.socket().on("message", listener);
464
- setTimeout(() => {
465
- this.iqOptionWs.socket().off("message", listener);
466
- Core.logger().error("IQOptionApi::getCandles - Timeout waiting for response", {
467
- operation: "getCandles",
468
- metadata: {
469
- requestID,
470
- timeout: timeout,
471
- },
472
- });
473
- reject(new Error("Timeout waiting for candles response."));
511
+ timeoutId = setTimeout(() => {
512
+ if (!resolved) {
513
+ Core.logger().error("IQOptionApi::getCandles - Timeout waiting for response", {
514
+ operation: "getCandles",
515
+ metadata: {
516
+ requestID,
517
+ timeout: timeout,
518
+ receivedMessagesCount: receivedMessages.length,
519
+ receivedMessages: receivedMessages.slice(-10), // Last 10 messages
520
+ },
521
+ });
522
+ doReject(new Error(`Timeout waiting for candles response. Received ${receivedMessages.length} messages, but none matched the expected response.`));
523
+ }
474
524
  }, timeout);
475
525
  });
476
526
  });
@@ -487,4 +537,4 @@ class IQOptionApi {
487
537
  }
488
538
  }
489
539
  exports.IQOptionApi = IQOptionApi;
490
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVFPcHRpb25BcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL1NlcnZpY2UvSVFPcHRpb25TZXJ2aWNlL0lRT3B0aW9uQXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7O0dBT0c7QUFDSCwyQ0FBb0M7QUFDcEMsMENBQTBDO0FBQzFDLDhCQUE4QjtBQUM5Qix1REFBb0Q7QUFDcEQsNkNBQTBDO0FBQzFDLDREQUF5RDtBQUN6RCxvRUFBaUU7QUFFakU7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUErQ3BCOzs7OztPQUtHO0lBQ0gsWUFBWSxLQUFhLEVBQUUsUUFBZ0I7UUFwRDNDOztXQUVHO1FBQ2MsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFFL0M7O1dBRUc7UUFDYyx1QkFBa0IsR0FBVyxJQUFJLENBQUM7UUFFbkQ7O1dBRUc7UUFDYyxnQ0FBMkIsR0FBVyxJQUFJLENBQUM7UUFFNUQ7O1dBRUc7UUFDYyxzQ0FBaUMsR0FBVyxLQUFLLENBQUM7UUFhbkU7O1dBRUc7UUFDYyx3QkFBbUIsR0FBRyxJQUFJLG9CQUFVLENBQUM7WUFDbEQsYUFBYSxFQUFFLENBQUM7WUFDaEIsT0FBTyxFQUFFLENBQUM7U0FDYixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNjLHVCQUFrQixHQUFHLElBQUksb0JBQVUsQ0FBQztZQUNqRCxhQUFhLEVBQUUsQ0FBQztTQUNuQixDQUFDLENBQUM7UUFTQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDaEQsa0JBQWtCO1FBQ2xCLCtCQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLCtCQUFjLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGlDQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVELElBQUks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
540
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVFPcHRpb25BcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL1NlcnZpY2UvSVFPcHRpb25TZXJ2aWNlL0lRT3B0aW9uQXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7O0dBT0c7QUFDSCwyQ0FBb0M7QUFDcEMsMENBQTBDO0FBQzFDLDhCQUE4QjtBQUM5Qix1REFBb0Q7QUFDcEQsNkNBQTBDO0FBQzFDLDREQUF5RDtBQUN6RCxvRUFBaUU7QUFFakU7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUErQ3BCOzs7OztPQUtHO0lBQ0gsWUFBWSxLQUFhLEVBQUUsUUFBZ0I7UUFwRDNDOztXQUVHO1FBQ2MsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFFL0M7O1dBRUc7UUFDYyx1QkFBa0IsR0FBVyxJQUFJLENBQUM7UUFFbkQ7O1dBRUc7UUFDYyxnQ0FBMkIsR0FBVyxJQUFJLENBQUM7UUFFNUQ7O1dBRUc7UUFDYyxzQ0FBaUMsR0FBVyxLQUFLLENBQUM7UUFhbkU7O1dBRUc7UUFDYyx3QkFBbUIsR0FBRyxJQUFJLG9CQUFVLENBQUM7WUFDbEQsYUFBYSxFQUFFLENBQUM7WUFDaEIsT0FBTyxFQUFFLENBQUM7U0FDYixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNjLHVCQUFrQixHQUFHLElBQUksb0JBQVUsQ0FBQztZQUNqRCxhQUFhLEVBQUUsQ0FBQztTQUNuQixDQUFDLENBQUM7UUFTQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDaEQsa0JBQWtCO1FBQ2xCLCtCQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLCtCQUFjLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGlDQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVELElBQUks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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iq-option-client",
3
- "version": "1.3.6",
3
+ "version": "1.3.7",
4
4
  "description": "A robust TypeScript client library for interacting with the IQ Option WebSocket API. Features real-time trading, market data streaming, and order management with SOLID principles.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",