iq-option-client 1.3.3

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 (155) hide show
  1. package/LICENSE +16 -0
  2. package/README.md +531 -0
  3. package/dist/bin/IQOption.d.ts +2 -0
  4. package/dist/bin/IQOption.js +100 -0
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.js +26 -0
  7. package/dist/lib/Helper/Logger/ILogger.d.ts +39 -0
  8. package/dist/lib/Helper/Logger/ILogger.js +3 -0
  9. package/dist/lib/Helper/Logger/LogLevel.d.ts +10 -0
  10. package/dist/lib/Helper/Logger/LogLevel.js +23 -0
  11. package/dist/lib/Helper/Logger/LoggerContext.d.ts +59 -0
  12. package/dist/lib/Helper/Logger/LoggerContext.js +49 -0
  13. package/dist/lib/Helper/Logger/LoggerFactory.d.ts +22 -0
  14. package/dist/lib/Helper/Logger/LoggerFactory.js +87 -0
  15. package/dist/lib/Helper/Logger/WinstonLogger.d.ts +21 -0
  16. package/dist/lib/Helper/Logger/WinstonLogger.js +56 -0
  17. package/dist/lib/Helper/Logger/index.d.ts +5 -0
  18. package/dist/lib/Helper/Logger/index.js +30 -0
  19. package/dist/lib/Helper/LoggerHelper.d.ts +11 -0
  20. package/dist/lib/Helper/LoggerHelper.js +48 -0
  21. package/dist/lib/Helper/SleepHelper.d.ts +6 -0
  22. package/dist/lib/Helper/SleepHelper.js +15 -0
  23. package/dist/lib/Helper/index.d.ts +3 -0
  24. package/dist/lib/Helper/index.js +20 -0
  25. package/dist/lib/Service/IQOptionService/Adapter/StreamAdapter.d.ts +16 -0
  26. package/dist/lib/Service/IQOptionService/Adapter/StreamAdapter.js +47 -0
  27. package/dist/lib/Service/IQOptionService/Adapter/index.d.ts +1 -0
  28. package/dist/lib/Service/IQOptionService/Adapter/index.js +26 -0
  29. package/dist/lib/Service/IQOptionService/Builder/OrderBuilder.d.ts +44 -0
  30. package/dist/lib/Service/IQOptionService/Builder/OrderBuilder.js +91 -0
  31. package/dist/lib/Service/IQOptionService/Builder/OrderRequest.d.ts +28 -0
  32. package/dist/lib/Service/IQOptionService/Builder/OrderRequest.js +20 -0
  33. package/dist/lib/Service/IQOptionService/Builder/index.d.ts +2 -0
  34. package/dist/lib/Service/IQOptionService/Builder/index.js +27 -0
  35. package/dist/lib/Service/IQOptionService/Command/CommandInvoker.d.ts +13 -0
  36. package/dist/lib/Service/IQOptionService/Command/CommandInvoker.js +35 -0
  37. package/dist/lib/Service/IQOptionService/Command/GetProfileCommand.d.ts +13 -0
  38. package/dist/lib/Service/IQOptionService/Command/GetProfileCommand.js +20 -0
  39. package/dist/lib/Service/IQOptionService/Command/ICommand.d.ts +13 -0
  40. package/dist/lib/Service/IQOptionService/Command/ICommand.js +11 -0
  41. package/dist/lib/Service/IQOptionService/Command/SendOrderCommand.d.ts +14 -0
  42. package/dist/lib/Service/IQOptionService/Command/SendOrderCommand.js +20 -0
  43. package/dist/lib/Service/IQOptionService/Command/index.d.ts +4 -0
  44. package/dist/lib/Service/IQOptionService/Command/index.js +29 -0
  45. package/dist/lib/Service/IQOptionService/Error/AuthenticationError.d.ts +7 -0
  46. package/dist/lib/Service/IQOptionService/Error/AuthenticationError.js +22 -0
  47. package/dist/lib/Service/IQOptionService/Error/ConnectionError.d.ts +7 -0
  48. package/dist/lib/Service/IQOptionService/Error/ConnectionError.js +22 -0
  49. package/dist/lib/Service/IQOptionService/Error/ErrorHandler.d.ts +17 -0
  50. package/dist/lib/Service/IQOptionService/Error/ErrorHandler.js +58 -0
  51. package/dist/lib/Service/IQOptionService/Error/IQOptionError.d.ts +15 -0
  52. package/dist/lib/Service/IQOptionService/Error/IQOptionError.js +46 -0
  53. package/dist/lib/Service/IQOptionService/Error/OrderError.d.ts +7 -0
  54. package/dist/lib/Service/IQOptionService/Error/OrderError.js +22 -0
  55. package/dist/lib/Service/IQOptionService/Error/RetryStrategy.d.ts +42 -0
  56. package/dist/lib/Service/IQOptionService/Error/RetryStrategy.js +67 -0
  57. package/dist/lib/Service/IQOptionService/Error/Retryable.d.ts +20 -0
  58. package/dist/lib/Service/IQOptionService/Error/Retryable.js +36 -0
  59. package/dist/lib/Service/IQOptionService/Error/TimeoutError.d.ts +7 -0
  60. package/dist/lib/Service/IQOptionService/Error/TimeoutError.js +23 -0
  61. package/dist/lib/Service/IQOptionService/Error/index.d.ts +8 -0
  62. package/dist/lib/Service/IQOptionService/Error/index.js +33 -0
  63. package/dist/lib/Service/IQOptionService/Factory/StreamFactory.d.ts +17 -0
  64. package/dist/lib/Service/IQOptionService/Factory/StreamFactory.js +43 -0
  65. package/dist/lib/Service/IQOptionService/Factory/StreamType.d.ts +9 -0
  66. package/dist/lib/Service/IQOptionService/Factory/StreamType.js +22 -0
  67. package/dist/lib/Service/IQOptionService/Factory/index.d.ts +2 -0
  68. package/dist/lib/Service/IQOptionService/Factory/index.js +27 -0
  69. package/dist/lib/Service/IQOptionService/Helper/InputValidator.d.ts +34 -0
  70. package/dist/lib/Service/IQOptionService/Helper/InputValidator.js +101 -0
  71. package/dist/lib/Service/IQOptionService/Helper/RequestIdGenerator.d.ts +18 -0
  72. package/dist/lib/Service/IQOptionService/Helper/RequestIdGenerator.js +37 -0
  73. package/dist/lib/Service/IQOptionService/Helper/index.d.ts +2 -0
  74. package/dist/lib/Service/IQOptionService/Helper/index.js +27 -0
  75. package/dist/lib/Service/IQOptionService/IQOptionApi.d.ts +96 -0
  76. package/dist/lib/Service/IQOptionService/IQOptionApi.js +343 -0
  77. package/dist/lib/Service/IQOptionService/IQOptionExpired.d.ts +7 -0
  78. package/dist/lib/Service/IQOptionService/IQOptionExpired.js +27 -0
  79. package/dist/lib/Service/IQOptionService/IQOptionStreamCandleGenerated.d.ts +55 -0
  80. package/dist/lib/Service/IQOptionService/IQOptionStreamCandleGenerated.js +88 -0
  81. package/dist/lib/Service/IQOptionService/IQOptionStreamOptionClose.d.ts +33 -0
  82. package/dist/lib/Service/IQOptionService/IQOptionStreamOptionClose.js +59 -0
  83. package/dist/lib/Service/IQOptionService/IQOptionStreamTradersSentiment.d.ts +46 -0
  84. package/dist/lib/Service/IQOptionService/IQOptionStreamTradersSentiment.js +84 -0
  85. package/dist/lib/Service/IQOptionService/IQOptionStreamUserAlerts.d.ts +40 -0
  86. package/dist/lib/Service/IQOptionService/IQOptionStreamUserAlerts.js +79 -0
  87. package/dist/lib/Service/IQOptionService/IQOptionWrapper.d.ts +51 -0
  88. package/dist/lib/Service/IQOptionService/IQOptionWrapper.js +111 -0
  89. package/dist/lib/Service/IQOptionService/IQOptionWs.d.ts +56 -0
  90. package/dist/lib/Service/IQOptionService/IQOptionWs.js +125 -0
  91. package/dist/lib/Service/IQOptionService/Interface/IAuthService.d.ts +12 -0
  92. package/dist/lib/Service/IQOptionService/Interface/IAuthService.js +11 -0
  93. package/dist/lib/Service/IQOptionService/Interface/IIQOptionStream.d.ts +9 -0
  94. package/dist/lib/Service/IQOptionService/Interface/IIQOptionStream.js +11 -0
  95. package/dist/lib/Service/IQOptionService/Interface/IWebSocketClient.d.ts +26 -0
  96. package/dist/lib/Service/IQOptionService/Interface/IWebSocketClient.js +3 -0
  97. package/dist/lib/Service/IQOptionService/Interface/index.d.ts +3 -0
  98. package/dist/lib/Service/IQOptionService/Interface/index.js +28 -0
  99. package/dist/lib/Service/IQOptionService/Model/IQOptionAction.d.ts +23 -0
  100. package/dist/lib/Service/IQOptionService/Model/IQOptionAction.js +36 -0
  101. package/dist/lib/Service/IQOptionService/Model/IQOptionCandle.d.ts +61 -0
  102. package/dist/lib/Service/IQOptionService/Model/IQOptionCandle.js +11 -0
  103. package/dist/lib/Service/IQOptionService/Model/IQOptionCurrency.d.ts +9 -0
  104. package/dist/lib/Service/IQOptionService/Model/IQOptionCurrency.js +22 -0
  105. package/dist/lib/Service/IQOptionService/Model/IQOptionCurrencyType.d.ts +8 -0
  106. package/dist/lib/Service/IQOptionService/Model/IQOptionCurrencyType.js +21 -0
  107. package/dist/lib/Service/IQOptionService/Model/IQOptionInitializationData.d.ts +117 -0
  108. package/dist/lib/Service/IQOptionService/Model/IQOptionInitializationData.js +14 -0
  109. package/dist/lib/Service/IQOptionService/Model/IQOptionInstrumentType.d.ts +4 -0
  110. package/dist/lib/Service/IQOptionService/Model/IQOptionInstrumentType.js +9 -0
  111. package/dist/lib/Service/IQOptionService/Model/IQOptionInstruments.d.ts +22 -0
  112. package/dist/lib/Service/IQOptionService/Model/IQOptionInstruments.js +3 -0
  113. package/dist/lib/Service/IQOptionService/Model/IQOptionMarket.d.ts +100 -0
  114. package/dist/lib/Service/IQOptionService/Model/IQOptionMarket.js +113 -0
  115. package/dist/lib/Service/IQOptionService/Model/IQOptionMarketInvert.d.ts +6 -0
  116. package/dist/lib/Service/IQOptionService/Model/IQOptionMarketInvert.js +108 -0
  117. package/dist/lib/Service/IQOptionService/Model/IQOptionMode.d.ts +7 -0
  118. package/dist/lib/Service/IQOptionService/Model/IQOptionMode.js +20 -0
  119. package/dist/lib/Service/IQOptionService/Model/IQOptionModel.d.ts +13 -0
  120. package/dist/lib/Service/IQOptionService/Model/IQOptionModel.js +26 -0
  121. package/dist/lib/Service/IQOptionService/Model/IQOptionName.d.ts +8 -0
  122. package/dist/lib/Service/IQOptionService/Model/IQOptionName.js +21 -0
  123. package/dist/lib/Service/IQOptionService/Model/IQOptionOptionClosed.d.ts +43 -0
  124. package/dist/lib/Service/IQOptionService/Model/IQOptionOptionClosed.js +11 -0
  125. package/dist/lib/Service/IQOptionService/Model/IQOptionOptionOpened.d.ts +39 -0
  126. package/dist/lib/Service/IQOptionService/Model/IQOptionOptionOpened.js +11 -0
  127. package/dist/lib/Service/IQOptionService/Model/IQOptionProfile.d.ts +152 -0
  128. package/dist/lib/Service/IQOptionService/Model/IQOptionProfile.js +11 -0
  129. package/dist/lib/Service/IQOptionService/Model/IQOptionResult.d.ts +17 -0
  130. package/dist/lib/Service/IQOptionService/Model/IQOptionResult.js +30 -0
  131. package/dist/lib/Service/IQOptionService/Model/IQOptionTime.d.ts +12 -0
  132. package/dist/lib/Service/IQOptionService/Model/IQOptionTime.js +25 -0
  133. package/dist/lib/Service/IQOptionService/Model/index.d.ts +17 -0
  134. package/dist/lib/Service/IQOptionService/Model/index.js +42 -0
  135. package/dist/lib/Service/IQOptionService/Repository/IQOptionRepository.d.ts +26 -0
  136. package/dist/lib/Service/IQOptionService/Repository/IQOptionRepository.js +3 -0
  137. package/dist/lib/Service/IQOptionService/Repository/WebSocketRepository.d.ts +19 -0
  138. package/dist/lib/Service/IQOptionService/Repository/WebSocketRepository.js +99 -0
  139. package/dist/lib/Service/IQOptionService/Repository/index.d.ts +2 -0
  140. package/dist/lib/Service/IQOptionService/Repository/index.js +27 -0
  141. package/dist/lib/Service/IQOptionService/Strategy/BinaryOrderStrategy.d.ts +15 -0
  142. package/dist/lib/Service/IQOptionService/Strategy/BinaryOrderStrategy.js +66 -0
  143. package/dist/lib/Service/IQOptionService/Strategy/DigitalOrderStrategy.d.ts +15 -0
  144. package/dist/lib/Service/IQOptionService/Strategy/DigitalOrderStrategy.js +83 -0
  145. package/dist/lib/Service/IQOptionService/Strategy/IOrderStrategy.d.ts +10 -0
  146. package/dist/lib/Service/IQOptionService/Strategy/IOrderStrategy.js +3 -0
  147. package/dist/lib/Service/IQOptionService/Strategy/index.d.ts +3 -0
  148. package/dist/lib/Service/IQOptionService/Strategy/index.js +28 -0
  149. package/dist/lib/Service/IQOptionService/index.d.ts +16 -0
  150. package/dist/lib/Service/IQOptionService/index.js +41 -0
  151. package/dist/lib/Service/index.d.ts +1 -0
  152. package/dist/lib/Service/index.js +26 -0
  153. package/dist/lib/index.d.ts +2 -0
  154. package/dist/lib/index.js +27 -0
  155. package/package.json +67 -0
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrderError = void 0;
4
+ /*
5
+ * Copyright (C) 2020 Wellington Rocha
6
+ * All Rights Reserved.
7
+ *
8
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
9
+ *
10
+ * Proprietary and confidential.
11
+ */
12
+ const IQOptionError_1 = require("./IQOptionError");
13
+ /**
14
+ * Order error.
15
+ */
16
+ class OrderError extends IQOptionError_1.IQOptionError {
17
+ constructor(message = "Order failed", context, retryable = false, cause) {
18
+ super(message, "ORDER_ERROR", context, retryable, cause);
19
+ }
20
+ }
21
+ exports.OrderError = OrderError;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXJFcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvU2VydmljZS9JUU9wdGlvblNlcnZpY2UvRXJyb3IvT3JkZXJFcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7OztHQU9HO0FBQ0gsbURBQWdEO0FBRWhEOztHQUVHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsNkJBQWE7SUFDekMsWUFDSSxVQUFrQixjQUFjLEVBQ2hDLE9BQTZCLEVBQzdCLFlBQXFCLEtBQUssRUFDMUIsS0FBYTtRQUViLEtBQUssQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNKO0FBVEQsZ0NBU0MifQ==
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Retry strategy configuration.
3
+ */
4
+ export interface RetryConfig {
5
+ /**
6
+ * Maximum number of retry attempts.
7
+ */
8
+ maxAttempts: number;
9
+ /**
10
+ * Initial delay in milliseconds.
11
+ */
12
+ initialDelayMs: number;
13
+ /**
14
+ * Maximum delay in milliseconds.
15
+ */
16
+ maxDelayMs: number;
17
+ /**
18
+ * Multiplier for exponential backoff.
19
+ */
20
+ backoffMultiplier: number;
21
+ /**
22
+ * Function to determine if error is retryable.
23
+ */
24
+ isRetryable?: (error: Error) => boolean;
25
+ }
26
+ /**
27
+ * Default retry configuration.
28
+ */
29
+ export declare const DEFAULT_RETRY_CONFIG: RetryConfig;
30
+ /**
31
+ * Retry strategy for handling retryable operations.
32
+ */
33
+ export declare class RetryStrategy {
34
+ /**
35
+ * Execute function with retry logic.
36
+ */
37
+ static execute<T>(fn: () => Promise<T>, config?: RetryConfig): Promise<T>;
38
+ /**
39
+ * Sleep for specified milliseconds.
40
+ */
41
+ private static sleep;
42
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RetryStrategy = exports.DEFAULT_RETRY_CONFIG = void 0;
4
+ /*
5
+ * Copyright (C) 2020 Wellington Rocha
6
+ * All Rights Reserved.
7
+ *
8
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
9
+ *
10
+ * Proprietary and confidential.
11
+ */
12
+ const IQOptionError_1 = require("./IQOptionError");
13
+ /**
14
+ * Default retry configuration.
15
+ */
16
+ exports.DEFAULT_RETRY_CONFIG = {
17
+ maxAttempts: 3,
18
+ initialDelayMs: 1000,
19
+ maxDelayMs: 10000,
20
+ backoffMultiplier: 2,
21
+ isRetryable: (error) => {
22
+ if (error instanceof IQOptionError_1.IQOptionError) {
23
+ return error.retryable;
24
+ }
25
+ return false;
26
+ },
27
+ };
28
+ /**
29
+ * Retry strategy for handling retryable operations.
30
+ */
31
+ class RetryStrategy {
32
+ /**
33
+ * Execute function with retry logic.
34
+ */
35
+ static async execute(fn, config = exports.DEFAULT_RETRY_CONFIG) {
36
+ let lastError;
37
+ let delay = config.initialDelayMs;
38
+ for (let attempt = 0; attempt <= config.maxAttempts; attempt++) {
39
+ try {
40
+ return await fn();
41
+ }
42
+ catch (error) {
43
+ lastError = error instanceof Error ? error : new Error(String(error));
44
+ // Check if error is retryable
45
+ if (config.isRetryable && !config.isRetryable(lastError)) {
46
+ throw lastError;
47
+ }
48
+ // If this was the last attempt, throw the error
49
+ if (attempt === config.maxAttempts) {
50
+ throw lastError;
51
+ }
52
+ // Wait before retrying with exponential backoff
53
+ await this.sleep(Math.min(delay, config.maxDelayMs));
54
+ delay *= config.backoffMultiplier;
55
+ }
56
+ }
57
+ throw lastError || new Error("Retry failed");
58
+ }
59
+ /**
60
+ * Sleep for specified milliseconds.
61
+ */
62
+ static sleep(ms) {
63
+ return new Promise((resolve) => setTimeout(resolve, ms));
64
+ }
65
+ }
66
+ exports.RetryStrategy = RetryStrategy;
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmV0cnlTdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvU2VydmljZS9JUU9wdGlvblNlcnZpY2UvRXJyb3IvUmV0cnlTdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7OztHQU9HO0FBQ0gsbURBQWdEO0FBZ0NoRDs7R0FFRztBQUNVLFFBQUEsb0JBQW9CLEdBQWdCO0lBQzdDLFdBQVcsRUFBRSxDQUFDO0lBQ2QsY0FBYyxFQUFFLElBQUk7SUFDcEIsVUFBVSxFQUFFLEtBQUs7SUFDakIsaUJBQWlCLEVBQUUsQ0FBQztJQUNwQixXQUFXLEVBQUUsQ0FBQyxLQUFZLEVBQUUsRUFBRTtRQUMxQixJQUFJLEtBQUssWUFBWSw2QkFBYSxFQUFFLENBQUM7WUFDakMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0osQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBYSxhQUFhO0lBQ3RCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ3ZCLEVBQW9CLEVBQ3BCLFNBQXNCLDRCQUFvQjtRQUUxQyxJQUFJLFNBQTRCLENBQUM7UUFDakMsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztRQUVsQyxLQUFLLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQztnQkFDRCxPQUFPLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDdEIsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2IsU0FBUyxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBRXRFLDhCQUE4QjtnQkFDOUIsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUN2RCxNQUFNLFNBQVMsQ0FBQztnQkFDcEIsQ0FBQztnQkFFRCxnREFBZ0Q7Z0JBQ2hELElBQUksT0FBTyxLQUFLLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxTQUFTLENBQUM7Z0JBQ3BCLENBQUM7Z0JBRUQsZ0RBQWdEO2dCQUNoRCxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELEtBQUssSUFBSSxNQUFNLENBQUMsaUJBQWlCLENBQUM7WUFDdEMsQ0FBQztRQUNMLENBQUM7UUFFRCxNQUFNLFNBQVMsSUFBSSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQVU7UUFDM0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7Q0FDSjtBQTFDRCxzQ0EwQ0MifQ==
@@ -0,0 +1,20 @@
1
+ import { RetryConfig } from "./RetryStrategy";
2
+ /**
3
+ * Decorator/interface for retryable operations.
4
+ */
5
+ export interface IRetryable {
6
+ /**
7
+ * Execute with retry logic.
8
+ */
9
+ executeWithRetry<T>(fn: () => Promise<T>, config?: RetryConfig): Promise<T>;
10
+ }
11
+ /**
12
+ * Retryable operation wrapper.
13
+ */
14
+ export declare class RetryableOperation implements IRetryable {
15
+ executeWithRetry<T>(fn: () => Promise<T>, config?: RetryConfig): Promise<T>;
16
+ }
17
+ /**
18
+ * Decorator function for marking methods as retryable.
19
+ */
20
+ export declare function Retryable(config?: RetryConfig): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RetryableOperation = void 0;
4
+ exports.Retryable = Retryable;
5
+ /*
6
+ * Copyright (C) 2020 Wellington Rocha
7
+ * All Rights Reserved.
8
+ *
9
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
10
+ *
11
+ * Proprietary and confidential.
12
+ */
13
+ const RetryStrategy_1 = require("./RetryStrategy");
14
+ /**
15
+ * Retryable operation wrapper.
16
+ */
17
+ class RetryableOperation {
18
+ async executeWithRetry(fn, config) {
19
+ return RetryStrategy_1.RetryStrategy.execute(fn, config || RetryStrategy_1.DEFAULT_RETRY_CONFIG);
20
+ }
21
+ }
22
+ exports.RetryableOperation = RetryableOperation;
23
+ /**
24
+ * Decorator function for marking methods as retryable.
25
+ */
26
+ function Retryable(config) {
27
+ return function (target, propertyKey, descriptor) {
28
+ const originalMethod = descriptor.value;
29
+ descriptor.value = async function (...args) {
30
+ const retryConfig = config || RetryStrategy_1.DEFAULT_RETRY_CONFIG;
31
+ return RetryStrategy_1.RetryStrategy.execute(() => originalMethod.apply(this, args), retryConfig);
32
+ };
33
+ return descriptor;
34
+ };
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmV0cnlhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9TZXJ2aWNlL0lRT3B0aW9uU2VydmljZS9FcnJvci9SZXRyeWFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZ0NBLDhCQVdDO0FBM0NEOzs7Ozs7O0dBT0c7QUFDSCxtREFBbUY7QUFZbkY7O0dBRUc7QUFDSCxNQUFhLGtCQUFrQjtJQUNwQixLQUFLLENBQUMsZ0JBQWdCLENBQUksRUFBb0IsRUFBRSxNQUFvQjtRQUN2RSxPQUFPLDZCQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLElBQUksb0NBQW9CLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0o7QUFKRCxnREFJQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLE1BQW9CO0lBQzFDLE9BQU8sVUFBVSxNQUFXLEVBQUUsV0FBbUIsRUFBRSxVQUE4QjtRQUM3RSxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBRXhDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxXQUFXLEdBQUcsSUFBVztZQUM3QyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksb0NBQW9CLENBQUM7WUFDbkQsT0FBTyw2QkFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN0RixDQUFDLENBQUM7UUFFRixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDLENBQUM7QUFDTixDQUFDIn0=
@@ -0,0 +1,7 @@
1
+ import { IQOptionError } from "./IQOptionError";
2
+ /**
3
+ * Timeout error.
4
+ */
5
+ export declare class TimeoutError extends IQOptionError {
6
+ constructor(message?: string, timeoutMs?: number, context?: Record<string, any>, cause?: Error);
7
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimeoutError = void 0;
4
+ /*
5
+ * Copyright (C) 2020 Wellington Rocha
6
+ * All Rights Reserved.
7
+ *
8
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
9
+ *
10
+ * Proprietary and confidential.
11
+ */
12
+ const IQOptionError_1 = require("./IQOptionError");
13
+ /**
14
+ * Timeout error.
15
+ */
16
+ class TimeoutError extends IQOptionError_1.IQOptionError {
17
+ constructor(message = "Operation timed out", timeoutMs, context, cause) {
18
+ super(message, "TIMEOUT_ERROR", Object.assign(Object.assign({}, context), { timeoutMs }), true, // Timeouts are retryable
19
+ cause);
20
+ }
21
+ }
22
+ exports.TimeoutError = TimeoutError;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZW91dEVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9TZXJ2aWNlL0lRT3B0aW9uU2VydmljZS9FcnJvci9UaW1lb3V0RXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7R0FPRztBQUNILG1EQUFnRDtBQUVoRDs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLDZCQUFhO0lBQzNDLFlBQ0ksVUFBa0IscUJBQXFCLEVBQ3ZDLFNBQWtCLEVBQ2xCLE9BQTZCLEVBQzdCLEtBQWE7UUFFYixLQUFLLENBQ0QsT0FBTyxFQUNQLGVBQWUsa0NBQ1YsT0FBTyxLQUFFLFNBQVMsS0FDdkIsSUFBSSxFQUFFLHlCQUF5QjtRQUMvQixLQUFLLENBQ1IsQ0FBQztJQUNOLENBQUM7Q0FDSjtBQWZELG9DQWVDIn0=
@@ -0,0 +1,8 @@
1
+ export * from "./IQOptionError";
2
+ export * from "./AuthenticationError";
3
+ export * from "./ConnectionError";
4
+ export * from "./OrderError";
5
+ export * from "./TimeoutError";
6
+ export * from "./ErrorHandler";
7
+ export * from "./RetryStrategy";
8
+ export * from "./Retryable";
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ /*
18
+ * Copyright (C) 2020 Wellington Rocha
19
+ * All Rights Reserved.
20
+ *
21
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
22
+ *
23
+ * Proprietary and confidential.
24
+ */
25
+ __exportStar(require("./IQOptionError"), exports);
26
+ __exportStar(require("./AuthenticationError"), exports);
27
+ __exportStar(require("./ConnectionError"), exports);
28
+ __exportStar(require("./OrderError"), exports);
29
+ __exportStar(require("./TimeoutError"), exports);
30
+ __exportStar(require("./ErrorHandler"), exports);
31
+ __exportStar(require("./RetryStrategy"), exports);
32
+ __exportStar(require("./Retryable"), exports);
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL1NlcnZpY2UvSVFPcHRpb25TZXJ2aWNlL0Vycm9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7OztHQU9HO0FBQ0gsa0RBQWdDO0FBQ2hDLHdEQUFzQztBQUN0QyxvREFBa0M7QUFDbEMsK0NBQTZCO0FBQzdCLGlEQUErQjtBQUMvQixpREFBK0I7QUFDL0Isa0RBQWdDO0FBQ2hDLDhDQUE0QiJ9
@@ -0,0 +1,17 @@
1
+ import { IWebSocketClient } from "../Interface/IWebSocketClient";
2
+ import { IIQOptionStream } from "../Interface/IIQOptionStream";
3
+ import { StreamType } from "./StreamType";
4
+ import * as Core from "../../../index";
5
+ import { ILogger } from "../../../Helper/Logger";
6
+ /**
7
+ * Stream factory for creating stream instances.
8
+ */
9
+ export declare class StreamFactory {
10
+ private readonly wsClient;
11
+ private readonly logger;
12
+ constructor(wsClient: IWebSocketClient, logger?: ILogger);
13
+ /**
14
+ * Create stream instance based on type.
15
+ */
16
+ create(type: StreamType, market?: Core.IQOptionMarket, time?: Core.IQOptionTime): IIQOptionStream;
17
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamFactory = void 0;
4
+ const StreamType_1 = require("./StreamType");
5
+ const IQOptionStreamCandleGenerated_1 = require("../IQOptionStreamCandleGenerated");
6
+ const IQOptionStreamOptionClose_1 = require("../IQOptionStreamOptionClose");
7
+ const IQOptionStreamTradersSentiment_1 = require("../IQOptionStreamTradersSentiment");
8
+ const IQOptionStreamUserAlerts_1 = require("../IQOptionStreamUserAlerts");
9
+ const Logger_1 = require("../../../Helper/Logger");
10
+ /**
11
+ * Stream factory for creating stream instances.
12
+ */
13
+ class StreamFactory {
14
+ constructor(wsClient, logger) {
15
+ this.wsClient = wsClient;
16
+ this.logger = logger || Logger_1.LoggerFactory.create({ className: "StreamFactory" });
17
+ }
18
+ /**
19
+ * Create stream instance based on type.
20
+ */
21
+ create(type, market, time) {
22
+ switch (type) {
23
+ case StreamType_1.StreamType.CANDLE:
24
+ if (!market || !time) {
25
+ throw new Error("Market and time are required for candle stream");
26
+ }
27
+ return new IQOptionStreamCandleGenerated_1.IQOptionStreamCandleGenerated(this.wsClient, market, time);
28
+ case StreamType_1.StreamType.OPTION_CLOSE:
29
+ return new IQOptionStreamOptionClose_1.IQOptionStreamOptionClose(this.wsClient);
30
+ case StreamType_1.StreamType.TRADERS_SENTIMENT:
31
+ if (!market) {
32
+ throw new Error("Market is required for traders sentiment stream");
33
+ }
34
+ return new IQOptionStreamTradersSentiment_1.IQOptionStreamOptionTradersSentiment(this.wsClient, market);
35
+ case StreamType_1.StreamType.USER_ALERTS:
36
+ return new IQOptionStreamUserAlerts_1.IQOptionStreamUserAlerts(this.wsClient);
37
+ default:
38
+ throw new Error(`Unknown stream type: ${type}`);
39
+ }
40
+ }
41
+ }
42
+ exports.StreamFactory = StreamFactory;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RyZWFtRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvU2VydmljZS9JUU9wdGlvblNlcnZpY2UvRmFjdG9yeS9TdHJlYW1GYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVVBLDZDQUEwQztBQUMxQyxvRkFBaUY7QUFDakYsNEVBQXlFO0FBQ3pFLHNGQUF5RjtBQUN6RiwwRUFBdUU7QUFHdkUsbURBQXVEO0FBRXZEOztHQUVHO0FBQ0gsTUFBYSxhQUFhO0lBSXRCLFlBQVksUUFBMEIsRUFBRSxNQUFnQjtRQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxzQkFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FDVCxJQUFnQixFQUNoQixNQUE0QixFQUM1QixJQUF3QjtRQUV4QixRQUFRLElBQUksRUFBRSxDQUFDO1lBQ1gsS0FBSyx1QkFBVSxDQUFDLE1BQU07Z0JBQ2xCLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO2dCQUN0RSxDQUFDO2dCQUNELE9BQU8sSUFBSSw2REFBNkIsQ0FBQyxJQUFJLENBQUMsUUFBZSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqRixLQUFLLHVCQUFVLENBQUMsWUFBWTtnQkFDeEIsT0FBTyxJQUFJLHFEQUF5QixDQUFDLElBQUksQ0FBQyxRQUFlLENBQUMsQ0FBQztZQUMvRCxLQUFLLHVCQUFVLENBQUMsaUJBQWlCO2dCQUM3QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO2dCQUN2RSxDQUFDO2dCQUNELE9BQU8sSUFBSSxxRUFBb0MsQ0FBQyxJQUFJLENBQUMsUUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2xGLEtBQUssdUJBQVUsQ0FBQyxXQUFXO2dCQUN2QixPQUFPLElBQUksbURBQXdCLENBQUMsSUFBSSxDQUFDLFFBQWUsQ0FBQyxDQUFDO1lBQzlEO2dCQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQXBDRCxzQ0FvQ0MifQ==
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Stream type enum.
3
+ */
4
+ export declare enum StreamType {
5
+ CANDLE = "candle",
6
+ OPTION_CLOSE = "option_close",
7
+ TRADERS_SENTIMENT = "traders_sentiment",
8
+ USER_ALERTS = "user_alerts"
9
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (C) 2020 Wellington Rocha
4
+ * All Rights Reserved.
5
+ *
6
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
7
+ *
8
+ * Proprietary and confidential.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.StreamType = void 0;
12
+ /**
13
+ * Stream type enum.
14
+ */
15
+ var StreamType;
16
+ (function (StreamType) {
17
+ StreamType["CANDLE"] = "candle";
18
+ StreamType["OPTION_CLOSE"] = "option_close";
19
+ StreamType["TRADERS_SENTIMENT"] = "traders_sentiment";
20
+ StreamType["USER_ALERTS"] = "user_alerts";
21
+ })(StreamType || (exports.StreamType = StreamType = {}));
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RyZWFtVHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvU2VydmljZS9JUU9wdGlvblNlcnZpY2UvRmFjdG9yeS9TdHJlYW1UeXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOzs7QUFFSDs7R0FFRztBQUNILElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNsQiwrQkFBaUIsQ0FBQTtJQUNqQiwyQ0FBNkIsQ0FBQTtJQUM3QixxREFBdUMsQ0FBQTtJQUN2Qyx5Q0FBMkIsQ0FBQTtBQUMvQixDQUFDLEVBTFcsVUFBVSwwQkFBVixVQUFVLFFBS3JCIn0=
@@ -0,0 +1,2 @@
1
+ export * from "./StreamFactory";
2
+ export * from "./StreamType";
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ /*
18
+ * Copyright (C) 2020 Wellington Rocha
19
+ * All Rights Reserved.
20
+ *
21
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
22
+ *
23
+ * Proprietary and confidential.
24
+ */
25
+ __exportStar(require("./StreamFactory"), exports);
26
+ __exportStar(require("./StreamType"), exports);
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL1NlcnZpY2UvSVFPcHRpb25TZXJ2aWNlL0ZhY3RvcnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7O0dBT0c7QUFDSCxrREFBZ0M7QUFDaEMsK0NBQTZCIn0=
@@ -0,0 +1,34 @@
1
+ import * as Core from "../../../index";
2
+ /**
3
+ * Input validator for IQ Option API.
4
+ */
5
+ export declare class InputValidator {
6
+ /**
7
+ * Validate email format.
8
+ */
9
+ static validateEmail(email: string): void;
10
+ /**
11
+ * Validate password.
12
+ */
13
+ static validatePassword(password: string): void;
14
+ /**
15
+ * Validate market.
16
+ */
17
+ static validateMarket(market: Core.IQOptionMarket): void;
18
+ /**
19
+ * Validate amount.
20
+ */
21
+ static validateAmount(amount: number): void;
22
+ /**
23
+ * Validate time.
24
+ */
25
+ static validateTime(time: number): void;
26
+ /**
27
+ * Validate user balance ID.
28
+ */
29
+ static validateUserBalanceId(userBalanceId: number): void;
30
+ /**
31
+ * Validate profit percent.
32
+ */
33
+ static validateProfitPercent(profitPercent: number): void;
34
+ }
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InputValidator = void 0;
4
+ const IQOptionError_1 = require("../Error/IQOptionError");
5
+ /**
6
+ * Input validator for IQ Option API.
7
+ */
8
+ class InputValidator {
9
+ /**
10
+ * Validate email format.
11
+ */
12
+ static validateEmail(email) {
13
+ if (!email || typeof email !== "string") {
14
+ throw new IQOptionError_1.IQOptionError("Email is required and must be a string", "VALIDATION_ERROR");
15
+ }
16
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
17
+ if (!emailRegex.test(email)) {
18
+ throw new IQOptionError_1.IQOptionError("Invalid email format", "VALIDATION_ERROR");
19
+ }
20
+ }
21
+ /**
22
+ * Validate password.
23
+ */
24
+ static validatePassword(password) {
25
+ if (!password || typeof password !== "string") {
26
+ throw new IQOptionError_1.IQOptionError("Password is required and must be a string", "VALIDATION_ERROR");
27
+ }
28
+ if (password.length < 3) {
29
+ throw new IQOptionError_1.IQOptionError("Password must be at least 3 characters", "VALIDATION_ERROR");
30
+ }
31
+ }
32
+ /**
33
+ * Validate market.
34
+ */
35
+ static validateMarket(market) {
36
+ if (market === undefined || market === null) {
37
+ throw new IQOptionError_1.IQOptionError("Market is required", "VALIDATION_ERROR");
38
+ }
39
+ if (typeof market !== "number") {
40
+ throw new IQOptionError_1.IQOptionError("Market must be a number", "VALIDATION_ERROR");
41
+ }
42
+ }
43
+ /**
44
+ * Validate amount.
45
+ */
46
+ static validateAmount(amount) {
47
+ if (amount === undefined || amount === null) {
48
+ throw new IQOptionError_1.IQOptionError("Amount is required", "VALIDATION_ERROR");
49
+ }
50
+ if (typeof amount !== "number") {
51
+ throw new IQOptionError_1.IQOptionError("Amount must be a number", "VALIDATION_ERROR");
52
+ }
53
+ if (amount <= 0) {
54
+ throw new IQOptionError_1.IQOptionError("Amount must be greater than 0", "VALIDATION_ERROR");
55
+ }
56
+ }
57
+ /**
58
+ * Validate time.
59
+ */
60
+ static validateTime(time) {
61
+ if (time === undefined || time === null) {
62
+ throw new IQOptionError_1.IQOptionError("Time is required", "VALIDATION_ERROR");
63
+ }
64
+ if (typeof time !== "number") {
65
+ throw new IQOptionError_1.IQOptionError("Time must be a number", "VALIDATION_ERROR");
66
+ }
67
+ if (time <= 0) {
68
+ throw new IQOptionError_1.IQOptionError("Time must be greater than 0", "VALIDATION_ERROR");
69
+ }
70
+ }
71
+ /**
72
+ * Validate user balance ID.
73
+ */
74
+ static validateUserBalanceId(userBalanceId) {
75
+ if (userBalanceId === undefined || userBalanceId === null) {
76
+ throw new IQOptionError_1.IQOptionError("User balance ID is required", "VALIDATION_ERROR");
77
+ }
78
+ if (typeof userBalanceId !== "number") {
79
+ throw new IQOptionError_1.IQOptionError("User balance ID must be a number", "VALIDATION_ERROR");
80
+ }
81
+ if (userBalanceId <= 0) {
82
+ throw new IQOptionError_1.IQOptionError("User balance ID must be greater than 0", "VALIDATION_ERROR");
83
+ }
84
+ }
85
+ /**
86
+ * Validate profit percent.
87
+ */
88
+ static validateProfitPercent(profitPercent) {
89
+ if (profitPercent === undefined || profitPercent === null) {
90
+ throw new IQOptionError_1.IQOptionError("Profit percent is required", "VALIDATION_ERROR");
91
+ }
92
+ if (typeof profitPercent !== "number") {
93
+ throw new IQOptionError_1.IQOptionError("Profit percent must be a number", "VALIDATION_ERROR");
94
+ }
95
+ if (profitPercent < 0 || profitPercent > 100) {
96
+ throw new IQOptionError_1.IQOptionError("Profit percent must be between 0 and 100", "VALIDATION_ERROR");
97
+ }
98
+ }
99
+ }
100
+ exports.InputValidator = InputValidator;
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXRWYWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL1NlcnZpY2UvSVFPcHRpb25TZXJ2aWNlL0hlbHBlci9JbnB1dFZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFTQSwwREFBdUQ7QUFFdkQ7O0dBRUc7QUFDSCxNQUFhLGNBQWM7SUFDdkI7O09BRUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWE7UUFDckMsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksNkJBQWEsQ0FBQyx3Q0FBd0MsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQzFGLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyw0QkFBNEIsQ0FBQztRQUNoRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSw2QkFBYSxDQUFDLHNCQUFzQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDeEUsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUMzQyxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSw2QkFBYSxDQUFDLDJDQUEyQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDN0YsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksNkJBQWEsQ0FBQyx3Q0FBd0MsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQzFGLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQTJCO1FBQ3BELElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxN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
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Centralized request ID generator.
3
+ */
4
+ export declare class RequestIdGenerator {
5
+ private static counter;
6
+ /**
7
+ * Get next request ID.
8
+ */
9
+ static getNext(): number;
10
+ /**
11
+ * Reset counter (useful for testing).
12
+ */
13
+ static reset(): void;
14
+ /**
15
+ * Get current counter value.
16
+ */
17
+ static getCurrent(): number;
18
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (C) 2020 Wellington Rocha
4
+ * All Rights Reserved.
5
+ *
6
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
7
+ *
8
+ * Proprietary and confidential.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.RequestIdGenerator = void 0;
12
+ /**
13
+ * Centralized request ID generator.
14
+ */
15
+ class RequestIdGenerator {
16
+ /**
17
+ * Get next request ID.
18
+ */
19
+ static getNext() {
20
+ return ++this.counter;
21
+ }
22
+ /**
23
+ * Reset counter (useful for testing).
24
+ */
25
+ static reset() {
26
+ this.counter = 0;
27
+ }
28
+ /**
29
+ * Get current counter value.
30
+ */
31
+ static getCurrent() {
32
+ return this.counter;
33
+ }
34
+ }
35
+ exports.RequestIdGenerator = RequestIdGenerator;
36
+ RequestIdGenerator.counter = 0;
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVxdWVzdElkR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9TZXJ2aWNlL0lRT3B0aW9uU2VydmljZS9IZWxwZXIvUmVxdWVzdElkR2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOzs7QUFFSDs7R0FFRztBQUNILE1BQWEsa0JBQWtCO0lBRzNCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE9BQU87UUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEtBQUs7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsVUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQzs7QUF0QkwsZ0RBdUJDO0FBdEJrQiwwQkFBTyxHQUFXLENBQUMsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ export * from "./RequestIdGenerator";
2
+ export * from "./InputValidator";
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ /*
18
+ * Copyright (C) 2020 Wellington Rocha
19
+ * All Rights Reserved.
20
+ *
21
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
22
+ *
23
+ * Proprietary and confidential.
24
+ */
25
+ __exportStar(require("./RequestIdGenerator"), exports);
26
+ __exportStar(require("./InputValidator"), exports);
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL1NlcnZpY2UvSVFPcHRpb25TZXJ2aWNlL0hlbHBlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7R0FPRztBQUNILHVEQUFxQztBQUNyQyxtREFBaUMifQ==