iqoptionapi-node 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/README.md +219 -0
- package/dist/auth/CredentialAbstraction.d.ts +25 -0
- package/dist/auth/CredentialAbstraction.d.ts.map +1 -0
- package/dist/auth/CredentialAbstraction.js +46 -0
- package/dist/auth/CredentialAbstraction.js.map +1 -0
- package/dist/auth/EmailPasswordAuth.d.ts +11 -0
- package/dist/auth/EmailPasswordAuth.d.ts.map +1 -0
- package/dist/auth/EmailPasswordAuth.js +36 -0
- package/dist/auth/EmailPasswordAuth.js.map +1 -0
- package/dist/auth/SessionManager.d.ts +14 -0
- package/dist/auth/SessionManager.d.ts.map +1 -0
- package/dist/auth/SessionManager.js +51 -0
- package/dist/auth/SessionManager.js.map +1 -0
- package/dist/auth/SsidAuth.d.ts +10 -0
- package/dist/auth/SsidAuth.d.ts.map +1 -0
- package/dist/auth/SsidAuth.js +26 -0
- package/dist/auth/SsidAuth.js.map +1 -0
- package/dist/client/IQOptionClient.d.ts +58 -0
- package/dist/client/IQOptionClient.d.ts.map +1 -0
- package/dist/client/IQOptionClient.js +125 -0
- package/dist/client/IQOptionClient.js.map +1 -0
- package/dist/errors/index.d.ts +22 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +53 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/logger/index.d.ts +6 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +33 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/market-data/AssetCatalog.d.ts +16 -0
- package/dist/market-data/AssetCatalog.d.ts.map +1 -0
- package/dist/market-data/AssetCatalog.js +45 -0
- package/dist/market-data/AssetCatalog.js.map +1 -0
- package/dist/market-data/CandleBuffer.d.ts +12 -0
- package/dist/market-data/CandleBuffer.d.ts.map +1 -0
- package/dist/market-data/CandleBuffer.js +44 -0
- package/dist/market-data/CandleBuffer.js.map +1 -0
- package/dist/market-data/CandleStream.d.ts +19 -0
- package/dist/market-data/CandleStream.d.ts.map +1 -0
- package/dist/market-data/CandleStream.js +73 -0
- package/dist/market-data/CandleStream.js.map +1 -0
- package/dist/market-data/HistoricalCandles.d.ts +11 -0
- package/dist/market-data/HistoricalCandles.d.ts.map +1 -0
- package/dist/market-data/HistoricalCandles.js +32 -0
- package/dist/market-data/HistoricalCandles.js.map +1 -0
- package/dist/market-data/TickAggregator.d.ts +13 -0
- package/dist/market-data/TickAggregator.d.ts.map +1 -0
- package/dist/market-data/TickAggregator.js +40 -0
- package/dist/market-data/TickAggregator.js.map +1 -0
- package/dist/market-data/TickStream.d.ts +18 -0
- package/dist/market-data/TickStream.d.ts.map +1 -0
- package/dist/market-data/TickStream.js +68 -0
- package/dist/market-data/TickStream.js.map +1 -0
- package/dist/protocol/V1Adapter.d.ts +20 -0
- package/dist/protocol/V1Adapter.d.ts.map +1 -0
- package/dist/protocol/V1Adapter.js +21 -0
- package/dist/protocol/V1Adapter.js.map +1 -0
- package/dist/trading/BinaryOptions.d.ts +31 -0
- package/dist/trading/BinaryOptions.d.ts.map +1 -0
- package/dist/trading/BinaryOptions.js +107 -0
- package/dist/trading/BinaryOptions.js.map +1 -0
- package/dist/trading/DigitalOptions.d.ts +31 -0
- package/dist/trading/DigitalOptions.d.ts.map +1 -0
- package/dist/trading/DigitalOptions.js +107 -0
- package/dist/trading/DigitalOptions.js.map +1 -0
- package/dist/trading/OrderCache.d.ts +17 -0
- package/dist/trading/OrderCache.d.ts.map +1 -0
- package/dist/trading/OrderCache.js +39 -0
- package/dist/trading/OrderCache.js.map +1 -0
- package/dist/trading/OrderHistory.d.ts +9 -0
- package/dist/trading/OrderHistory.d.ts.map +1 -0
- package/dist/trading/OrderHistory.js +17 -0
- package/dist/trading/OrderHistory.js.map +1 -0
- package/dist/transformers/entities.d.ts +8 -0
- package/dist/transformers/entities.d.ts.map +1 -0
- package/dist/transformers/entities.js +51 -0
- package/dist/transformers/entities.js.map +1 -0
- package/dist/transformers/toCamelCase.d.ts +2 -0
- package/dist/transformers/toCamelCase.d.ts.map +1 -0
- package/dist/transformers/toCamelCase.js +18 -0
- package/dist/transformers/toCamelCase.js.map +1 -0
- package/dist/transport/MessageRouter.d.ts +17 -0
- package/dist/transport/MessageRouter.d.ts.map +1 -0
- package/dist/transport/MessageRouter.js +87 -0
- package/dist/transport/MessageRouter.js.map +1 -0
- package/dist/transport/ReconnectionManager.d.ts +25 -0
- package/dist/transport/ReconnectionManager.d.ts.map +1 -0
- package/dist/transport/ReconnectionManager.js +63 -0
- package/dist/transport/ReconnectionManager.js.map +1 -0
- package/dist/transport/WebSocketTransport.d.ts +21 -0
- package/dist/transport/WebSocketTransport.d.ts.map +1 -0
- package/dist/transport/WebSocketTransport.js +68 -0
- package/dist/transport/WebSocketTransport.js.map +1 -0
- package/dist/types/logger.d.ts +7 -0
- package/dist/types/logger.d.ts.map +1 -0
- package/dist/types/logger.js +3 -0
- package/dist/types/logger.js.map +1 -0
- package/dist/types/market-data.d.ts +38 -0
- package/dist/types/market-data.d.ts.map +1 -0
- package/dist/types/market-data.js +3 -0
- package/dist/types/market-data.js.map +1 -0
- package/dist/types/messages.d.ts +8 -0
- package/dist/types/messages.d.ts.map +1 -0
- package/dist/types/messages.js +3 -0
- package/dist/types/messages.js.map +1 -0
- package/dist/types/primitives.d.ts +29 -0
- package/dist/types/primitives.d.ts.map +1 -0
- package/dist/types/primitives.js +29 -0
- package/dist/types/primitives.js.map +1 -0
- package/dist/types/profile.d.ts +24 -0
- package/dist/types/profile.d.ts.map +1 -0
- package/dist/types/profile.js +3 -0
- package/dist/types/profile.js.map +1 -0
- package/dist/types/raw/asset.d.ts +20 -0
- package/dist/types/raw/asset.d.ts.map +1 -0
- package/dist/types/raw/asset.js +3 -0
- package/dist/types/raw/asset.js.map +1 -0
- package/dist/types/raw/candle.d.ts +15 -0
- package/dist/types/raw/candle.d.ts.map +1 -0
- package/dist/types/raw/candle.js +3 -0
- package/dist/types/raw/candle.js.map +1 -0
- package/dist/types/raw/order.d.ts +31 -0
- package/dist/types/raw/order.d.ts.map +1 -0
- package/dist/types/raw/order.js +3 -0
- package/dist/types/raw/order.js.map +1 -0
- package/dist/types/raw/tick.d.ts +9 -0
- package/dist/types/raw/tick.d.ts.map +1 -0
- package/dist/types/raw/tick.js +3 -0
- package/dist/types/raw/tick.js.map +1 -0
- package/dist/types/trading.d.ts +38 -0
- package/dist/types/trading.d.ts.map +1 -0
- package/dist/types/trading.js +3 -0
- package/dist/types/trading.js.map +1 -0
- package/dist/validators/malformedMessage.d.ts +16 -0
- package/dist/validators/malformedMessage.d.ts.map +1 -0
- package/dist/validators/malformedMessage.js +15 -0
- package/dist/validators/malformedMessage.js.map +1 -0
- package/dist/validators/messageSchema.d.ts +7 -0
- package/dist/validators/messageSchema.d.ts.map +1 -0
- package/dist/validators/messageSchema.js +25 -0
- package/dist/validators/messageSchema.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IQOptionClient = void 0;
|
|
4
|
+
const WebSocketTransport_1 = require("../transport/WebSocketTransport");
|
|
5
|
+
const MessageRouter_1 = require("../transport/MessageRouter");
|
|
6
|
+
const ReconnectionManager_1 = require("../transport/ReconnectionManager");
|
|
7
|
+
const SessionManager_1 = require("../auth/SessionManager");
|
|
8
|
+
const EmailPasswordAuth_1 = require("../auth/EmailPasswordAuth");
|
|
9
|
+
const SsidAuth_1 = require("../auth/SsidAuth");
|
|
10
|
+
const CredentialAbstraction_1 = require("../auth/CredentialAbstraction");
|
|
11
|
+
const AssetCatalog_1 = require("../market-data/AssetCatalog");
|
|
12
|
+
const HistoricalCandles_1 = require("../market-data/HistoricalCandles");
|
|
13
|
+
const CandleStream_1 = require("../market-data/CandleStream");
|
|
14
|
+
const TickStream_1 = require("../market-data/TickStream");
|
|
15
|
+
const OrderCache_1 = require("../trading/OrderCache");
|
|
16
|
+
const BinaryOptions_1 = require("../trading/BinaryOptions");
|
|
17
|
+
const DigitalOptions_1 = require("../trading/DigitalOptions");
|
|
18
|
+
const OrderHistory_1 = require("../trading/OrderHistory");
|
|
19
|
+
const logger_1 = require("../logger");
|
|
20
|
+
const IQ_WS_URL = 'wss://iqoption.com/echo/websocket';
|
|
21
|
+
class IQOptionClient {
|
|
22
|
+
transport;
|
|
23
|
+
router;
|
|
24
|
+
reconnection;
|
|
25
|
+
session;
|
|
26
|
+
emailAuth;
|
|
27
|
+
ssidAuth;
|
|
28
|
+
catalog;
|
|
29
|
+
historical;
|
|
30
|
+
candleStream;
|
|
31
|
+
tickStream;
|
|
32
|
+
orderCache;
|
|
33
|
+
binaryOptions;
|
|
34
|
+
digitalOptions;
|
|
35
|
+
orderHistory;
|
|
36
|
+
constructor(options = {}) {
|
|
37
|
+
const url = options.url ?? IQ_WS_URL;
|
|
38
|
+
const logger = options.logger ?? (options.silent ? logger_1.noopLogger : (0, logger_1.createConsoleLogger)());
|
|
39
|
+
const maxRetries = options.maxReconnectRetries ?? 5;
|
|
40
|
+
this.transport = new WebSocketTransport_1.WebSocketTransport(url);
|
|
41
|
+
this.router = new MessageRouter_1.MessageRouter(this.transport);
|
|
42
|
+
this.reconnection = new ReconnectionManager_1.ReconnectionManager(this.transport, maxRetries);
|
|
43
|
+
this.session = new SessionManager_1.SessionManager(logger);
|
|
44
|
+
this.emailAuth = new EmailPasswordAuth_1.EmailPasswordAuth(this.router, this.session);
|
|
45
|
+
this.ssidAuth = new SsidAuth_1.SsidAuth(this.router, this.session);
|
|
46
|
+
this.catalog = new AssetCatalog_1.AssetCatalog(this.router);
|
|
47
|
+
this.historical = new HistoricalCandles_1.HistoricalCandles(this.router, this.catalog);
|
|
48
|
+
this.candleStream = new CandleStream_1.CandleStream(this.router, this.catalog, this.reconnection);
|
|
49
|
+
this.tickStream = new TickStream_1.TickStream(this.router, this.catalog, this.reconnection);
|
|
50
|
+
this.orderCache = new OrderCache_1.OrderCache();
|
|
51
|
+
this.binaryOptions = new BinaryOptions_1.BinaryOptions(this.router, this.catalog, this.orderCache);
|
|
52
|
+
this.digitalOptions = new DigitalOptions_1.DigitalOptions(this.router, this.catalog, this.orderCache);
|
|
53
|
+
this.orderHistory = new OrderHistory_1.OrderHistory(this.orderCache);
|
|
54
|
+
}
|
|
55
|
+
async connect() {
|
|
56
|
+
await this.transport.connect();
|
|
57
|
+
}
|
|
58
|
+
disconnect() {
|
|
59
|
+
this.reconnection.reset();
|
|
60
|
+
this.router.clearPending();
|
|
61
|
+
this.transport.disconnect();
|
|
62
|
+
}
|
|
63
|
+
async login(credentials) {
|
|
64
|
+
return this.emailAuth.login(new CredentialAbstraction_1.EmailPasswordCredentials(credentials.email, credentials.password));
|
|
65
|
+
}
|
|
66
|
+
async restoreSession(ssid) {
|
|
67
|
+
return this.ssidAuth.restore(ssid);
|
|
68
|
+
}
|
|
69
|
+
getProfile() {
|
|
70
|
+
return this.session.getProfile();
|
|
71
|
+
}
|
|
72
|
+
// --- Assets ---
|
|
73
|
+
getAllAssets() {
|
|
74
|
+
return this.catalog.getAllAssets();
|
|
75
|
+
}
|
|
76
|
+
getOpenAssets() {
|
|
77
|
+
return this.catalog.getOpenAssets();
|
|
78
|
+
}
|
|
79
|
+
getOtcAssets() {
|
|
80
|
+
return this.catalog.getOtcAssets();
|
|
81
|
+
}
|
|
82
|
+
getNonOtcAssets() {
|
|
83
|
+
return this.catalog.getNonOtcAssets();
|
|
84
|
+
}
|
|
85
|
+
getAsset(symbol) {
|
|
86
|
+
return this.catalog.getAsset(symbol);
|
|
87
|
+
}
|
|
88
|
+
// --- Market Data ---
|
|
89
|
+
getCandles(symbol, timeframe, count, endTime) {
|
|
90
|
+
return this.historical.getCandles(symbol, timeframe, count, endTime);
|
|
91
|
+
}
|
|
92
|
+
subscribeCandles(symbol, timeframe, callback) {
|
|
93
|
+
this.candleStream.subscribe(symbol, timeframe, callback);
|
|
94
|
+
}
|
|
95
|
+
unsubscribeCandles(symbol, timeframe) {
|
|
96
|
+
this.candleStream.unsubscribe(symbol, timeframe);
|
|
97
|
+
}
|
|
98
|
+
subscribeQuotes(symbol, callback) {
|
|
99
|
+
this.tickStream.subscribe(symbol, callback);
|
|
100
|
+
}
|
|
101
|
+
unsubscribeQuotes(symbol) {
|
|
102
|
+
this.tickStream.unsubscribe(symbol);
|
|
103
|
+
}
|
|
104
|
+
// --- Trading ---
|
|
105
|
+
buyBinaryOption(params) {
|
|
106
|
+
return this.binaryOptions.buy(params);
|
|
107
|
+
}
|
|
108
|
+
checkBinaryOptionResult(orderId, timeoutMs) {
|
|
109
|
+
return this.binaryOptions.checkResult(orderId, timeoutMs);
|
|
110
|
+
}
|
|
111
|
+
buyDigitalOption(params) {
|
|
112
|
+
return this.digitalOptions.buy(params);
|
|
113
|
+
}
|
|
114
|
+
checkDigitalOptionResult(orderId, timeoutMs) {
|
|
115
|
+
return this.digitalOptions.checkResult(orderId, timeoutMs);
|
|
116
|
+
}
|
|
117
|
+
getOpenPositions() {
|
|
118
|
+
return this.orderHistory.getOpenPositions();
|
|
119
|
+
}
|
|
120
|
+
getClosedPositions(limit) {
|
|
121
|
+
return this.orderHistory.getClosedPositions(limit);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.IQOptionClient = IQOptionClient;
|
|
125
|
+
//# sourceMappingURL=IQOptionClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IQOptionClient.js","sourceRoot":"","sources":["../../src/client/IQOptionClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare class IQOptionError extends Error {
|
|
2
|
+
constructor(message: string);
|
|
3
|
+
}
|
|
4
|
+
export declare class AuthenticationError extends IQOptionError {
|
|
5
|
+
constructor(message: string);
|
|
6
|
+
}
|
|
7
|
+
export declare class ConnectionError extends IQOptionError {
|
|
8
|
+
constructor(message: string);
|
|
9
|
+
}
|
|
10
|
+
export declare class ProtocolError extends IQOptionError {
|
|
11
|
+
constructor(message: string);
|
|
12
|
+
}
|
|
13
|
+
export declare class TradingError extends IQOptionError {
|
|
14
|
+
constructor(message: string);
|
|
15
|
+
}
|
|
16
|
+
export declare class ValidationError extends IQOptionError {
|
|
17
|
+
constructor(message: string);
|
|
18
|
+
}
|
|
19
|
+
export declare class TimeoutError extends IQOptionError {
|
|
20
|
+
constructor(message: string);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAoB,SAAQ,aAAa;gBACxC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,aAAc,SAAQ,aAAa;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,aAAa;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,aAAa;gBACjC,OAAO,EAAE,MAAM;CAI5B"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TimeoutError = exports.ValidationError = exports.TradingError = exports.ProtocolError = exports.ConnectionError = exports.AuthenticationError = exports.IQOptionError = void 0;
|
|
4
|
+
class IQOptionError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = 'IQOptionError';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.IQOptionError = IQOptionError;
|
|
11
|
+
class AuthenticationError extends IQOptionError {
|
|
12
|
+
constructor(message) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.name = 'AuthenticationError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.AuthenticationError = AuthenticationError;
|
|
18
|
+
class ConnectionError extends IQOptionError {
|
|
19
|
+
constructor(message) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.name = 'ConnectionError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.ConnectionError = ConnectionError;
|
|
25
|
+
class ProtocolError extends IQOptionError {
|
|
26
|
+
constructor(message) {
|
|
27
|
+
super(message);
|
|
28
|
+
this.name = 'ProtocolError';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.ProtocolError = ProtocolError;
|
|
32
|
+
class TradingError extends IQOptionError {
|
|
33
|
+
constructor(message) {
|
|
34
|
+
super(message);
|
|
35
|
+
this.name = 'TradingError';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.TradingError = TradingError;
|
|
39
|
+
class ValidationError extends IQOptionError {
|
|
40
|
+
constructor(message) {
|
|
41
|
+
super(message);
|
|
42
|
+
this.name = 'ValidationError';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.ValidationError = ValidationError;
|
|
46
|
+
class TimeoutError extends IQOptionError {
|
|
47
|
+
constructor(message) {
|
|
48
|
+
super(message);
|
|
49
|
+
this.name = 'TimeoutError';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.TimeoutError = TimeoutError;
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED,MAAa,mBAAoB,SAAQ,aAAa;IACpD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC;AAED,MAAa,eAAgB,SAAQ,aAAa;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AALD,0CAKC;AAED,MAAa,aAAc,SAAQ,aAAa;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED,MAAa,YAAa,SAAQ,aAAa;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AALD,oCAKC;AAED,MAAa,eAAgB,SAAQ,aAAa;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AALD,0CAKC;AAED,MAAa,YAAa,SAAQ,aAAa;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AALD,oCAKC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { IQOptionClient } from './client/IQOptionClient';
|
|
2
|
+
export type { IQOptionClientOptions } from './client/IQOptionClient';
|
|
3
|
+
export * from './types/primitives';
|
|
4
|
+
export * from './errors';
|
|
5
|
+
export type { IQAsset, IQCandle, IQTick, IQAssetMap, Schedule } from './types/market-data';
|
|
6
|
+
export type { IQProfile } from './types/profile';
|
|
7
|
+
export type { IQPosition, BuyBinaryOptionParams, BuyDigitalOptionParams, BinaryOptionResult, DigitalOptionResult, OrderStatus, OrderResult, } from './types/trading';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AAEzB,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3F,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EACV,UAAU,EACV,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,WAAW,GACZ,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
exports.IQOptionClient = void 0;
|
|
18
|
+
var IQOptionClient_1 = require("./client/IQOptionClient");
|
|
19
|
+
Object.defineProperty(exports, "IQOptionClient", { enumerable: true, get: function () { return IQOptionClient_1.IQOptionClient; } });
|
|
20
|
+
__exportStar(require("./types/primitives"), exports);
|
|
21
|
+
__exportStar(require("./errors"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAAyD;AAAhD,gHAAA,cAAc,OAAA;AAGvB,qDAAmC;AACnC,2CAAyB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ILogger } from '../types/logger';
|
|
2
|
+
type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
3
|
+
export declare function createConsoleLogger(minLevel?: LogLevel): ILogger;
|
|
4
|
+
export declare const noopLogger: ILogger;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAIpD,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,QAAiB,GAAG,OAAO,CAgBxE;AAED,eAAO,MAAM,UAAU,EAAE,OAKxB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.noopLogger = void 0;
|
|
4
|
+
exports.createConsoleLogger = createConsoleLogger;
|
|
5
|
+
const LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };
|
|
6
|
+
function createConsoleLogger(minLevel = 'info') {
|
|
7
|
+
const min = LEVELS[minLevel];
|
|
8
|
+
return {
|
|
9
|
+
debug: (msg) => {
|
|
10
|
+
if (LEVELS.debug >= min)
|
|
11
|
+
console.debug(`[IQOption] ${msg}`);
|
|
12
|
+
},
|
|
13
|
+
info: (msg) => {
|
|
14
|
+
if (LEVELS.info >= min)
|
|
15
|
+
console.info(`[IQOption] ${msg}`);
|
|
16
|
+
},
|
|
17
|
+
warn: (msg) => {
|
|
18
|
+
if (LEVELS.warn >= min)
|
|
19
|
+
console.warn(`[IQOption] ${msg}`);
|
|
20
|
+
},
|
|
21
|
+
error: (msg) => {
|
|
22
|
+
if (LEVELS.error >= min)
|
|
23
|
+
console.error(`[IQOption] ${msg}`);
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
exports.noopLogger = {
|
|
28
|
+
debug: () => undefined,
|
|
29
|
+
info: () => undefined,
|
|
30
|
+
warn: () => undefined,
|
|
31
|
+
error: () => undefined,
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":";;;AAMA,kDAgBC;AAlBD,MAAM,MAAM,GAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAElF,SAAgB,mBAAmB,CAAC,WAAqB,MAAM;IAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,MAAM,CAAC,KAAK,IAAI,GAAG;gBAAE,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;YACZ,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG;gBAAE,OAAO,CAAC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;YACZ,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG;gBAAE,OAAO,CAAC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,MAAM,CAAC,KAAK,IAAI,GAAG;gBAAE,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;QAC9D,CAAC;KACF,CAAC;AACJ,CAAC;AAEY,QAAA,UAAU,GAAY;IACjC,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;IACtB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;CACvB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { MessageRouter } from '../transport/MessageRouter';
|
|
2
|
+
import type { IQAsset } from '../types/market-data';
|
|
3
|
+
import type { ActiveId } from '../types/primitives';
|
|
4
|
+
export declare class AssetCatalog {
|
|
5
|
+
private readonly byId;
|
|
6
|
+
private readonly byName;
|
|
7
|
+
constructor(router: MessageRouter);
|
|
8
|
+
private populate;
|
|
9
|
+
getAsset(symbol: string): IQAsset | undefined;
|
|
10
|
+
getAssetById(activeId: ActiveId): IQAsset | undefined;
|
|
11
|
+
getAllAssets(): IQAsset[];
|
|
12
|
+
getOpenAssets(): IQAsset[];
|
|
13
|
+
getOtcAssets(): IQAsset[];
|
|
14
|
+
getNonOtcAssets(): IQAsset[];
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=AssetCatalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetCatalog.d.ts","sourceRoot":"","sources":["../../src/market-data/AssetCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIpD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;gBAEzC,MAAM,EAAE,aAAa;IAOjC,OAAO,CAAC,QAAQ;IAWhB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAK7C,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS;IAIrD,YAAY,IAAI,OAAO,EAAE;IAIzB,aAAa,IAAI,OAAO,EAAE;IAI1B,YAAY,IAAI,OAAO,EAAE;IAIzB,eAAe,IAAI,OAAO,EAAE;CAG7B"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AssetCatalog = void 0;
|
|
4
|
+
const entities_1 = require("../transformers/entities");
|
|
5
|
+
const V1Adapter_1 = require("../protocol/V1Adapter");
|
|
6
|
+
class AssetCatalog {
|
|
7
|
+
byId = new Map();
|
|
8
|
+
byName = new Map();
|
|
9
|
+
constructor(router) {
|
|
10
|
+
router.registerHandler(V1Adapter_1.V1Adapter.initData, (msg) => {
|
|
11
|
+
const data = msg.msg;
|
|
12
|
+
this.populate(data);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
populate(data) {
|
|
16
|
+
this.byId.clear();
|
|
17
|
+
this.byName.clear();
|
|
18
|
+
for (const raw of data.instruments) {
|
|
19
|
+
const asset = (0, entities_1.transformAsset)(raw);
|
|
20
|
+
this.byId.set(asset.activeId, asset);
|
|
21
|
+
this.byName.set(asset.name.toUpperCase(), asset);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
getAsset(symbol) {
|
|
25
|
+
const upper = symbol.toUpperCase();
|
|
26
|
+
return this.byName.get(upper) ?? this.byName.get(`${upper}-OTC`);
|
|
27
|
+
}
|
|
28
|
+
getAssetById(activeId) {
|
|
29
|
+
return this.byId.get(activeId);
|
|
30
|
+
}
|
|
31
|
+
getAllAssets() {
|
|
32
|
+
return Array.from(this.byId.values());
|
|
33
|
+
}
|
|
34
|
+
getOpenAssets() {
|
|
35
|
+
return this.getAllAssets().filter((a) => !a.isSuspended);
|
|
36
|
+
}
|
|
37
|
+
getOtcAssets() {
|
|
38
|
+
return this.getAllAssets().filter((a) => a.isOtc);
|
|
39
|
+
}
|
|
40
|
+
getNonOtcAssets() {
|
|
41
|
+
return this.getAllAssets().filter((a) => !a.isOtc);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.AssetCatalog = AssetCatalog;
|
|
45
|
+
//# sourceMappingURL=AssetCatalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetCatalog.js","sourceRoot":"","sources":["../../src/market-data/AssetCatalog.ts"],"names":[],"mappings":";;;AAIA,uDAA0D;AAC1D,qDAAkD;AAElD,MAAa,YAAY;IACN,IAAI,GAAe,IAAI,GAAG,EAAE,CAAC;IAC7B,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;IAErD,YAAY,MAAqB;QAC/B,MAAM,CAAC,eAAe,CAAC,qBAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAoB,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,QAAQ,CAAC,IAAmB;QAClC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAEpB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAA,yBAAc,EAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,MAAc;QACrB,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;IACnE,CAAC;IAED,YAAY,CAAC,QAAkB;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;CACF;AA9CD,oCA8CC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IQCandle } from '../types/market-data';
|
|
2
|
+
export declare class CandleBuffer {
|
|
3
|
+
private readonly candles;
|
|
4
|
+
private readonly maxSize;
|
|
5
|
+
constructor(maxSize?: number);
|
|
6
|
+
push(candle: IQCandle): void;
|
|
7
|
+
getAll(): readonly IQCandle[];
|
|
8
|
+
getLast(count: number): readonly IQCandle[];
|
|
9
|
+
clear(): void;
|
|
10
|
+
get size(): number;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=CandleBuffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CandleBuffer.d.ts","sourceRoot":"","sources":["../../src/market-data/CandleBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIrD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,SAAc;IAIjC,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAuB5B,MAAM,IAAI,SAAS,QAAQ,EAAE;IAI7B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,QAAQ,EAAE;IAI3C,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CandleBuffer = void 0;
|
|
4
|
+
const DEFAULT_MAX = 500;
|
|
5
|
+
class CandleBuffer {
|
|
6
|
+
candles = [];
|
|
7
|
+
maxSize;
|
|
8
|
+
constructor(maxSize = DEFAULT_MAX) {
|
|
9
|
+
this.maxSize = maxSize;
|
|
10
|
+
}
|
|
11
|
+
push(candle) {
|
|
12
|
+
const existing = this.candles.findIndex((c) => c.time === candle.time);
|
|
13
|
+
if (existing !== -1) {
|
|
14
|
+
this.candles[existing] = candle; // update in place (same-timestamp merge)
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
// Insert at the correct position to keep the array sorted by time.
|
|
18
|
+
let insertAt = this.candles.length;
|
|
19
|
+
for (let i = this.candles.length - 1; i >= 0; i--) {
|
|
20
|
+
const c = this.candles[i];
|
|
21
|
+
if (c !== undefined && c.time <= candle.time)
|
|
22
|
+
break;
|
|
23
|
+
insertAt = i;
|
|
24
|
+
}
|
|
25
|
+
this.candles.splice(insertAt, 0, candle);
|
|
26
|
+
if (this.candles.length > this.maxSize) {
|
|
27
|
+
this.candles.shift(); // drop oldest
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
getAll() {
|
|
31
|
+
return this.candles;
|
|
32
|
+
}
|
|
33
|
+
getLast(count) {
|
|
34
|
+
return this.candles.slice(-count);
|
|
35
|
+
}
|
|
36
|
+
clear() {
|
|
37
|
+
this.candles.length = 0;
|
|
38
|
+
}
|
|
39
|
+
get size() {
|
|
40
|
+
return this.candles.length;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.CandleBuffer = CandleBuffer;
|
|
44
|
+
//# sourceMappingURL=CandleBuffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CandleBuffer.js","sourceRoot":"","sources":["../../src/market-data/CandleBuffer.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAa,YAAY;IACN,OAAO,GAAe,EAAE,CAAC;IACzB,OAAO,CAAS;IAEjC,YAAY,OAAO,GAAG,WAAW;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,MAAgB;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvE,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC,yCAAyC;YAC1E,OAAO;QACT,CAAC;QAED,mEAAmE;QACnE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI;gBAAE,MAAM;YACpD,QAAQ,GAAG,CAAC,CAAC;QACf,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAEzC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc;QACtC,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,KAAa;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;CACF;AA9CD,oCA8CC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MessageRouter } from '../transport/MessageRouter';
|
|
2
|
+
import type { ReconnectionManager } from '../transport/ReconnectionManager';
|
|
3
|
+
import type { AssetCatalog } from './AssetCatalog';
|
|
4
|
+
import type { IQCandle } from '../types/market-data';
|
|
5
|
+
import type { TimeFrame } from '../types/primitives';
|
|
6
|
+
import { CandleBuffer } from './CandleBuffer';
|
|
7
|
+
export declare class CandleStream {
|
|
8
|
+
private readonly router;
|
|
9
|
+
private readonly catalog;
|
|
10
|
+
private readonly subs;
|
|
11
|
+
constructor(router: MessageRouter, catalog: AssetCatalog, reconnection: ReconnectionManager);
|
|
12
|
+
subscribe(symbol: string, timeframe: TimeFrame, callback: (candle: IQCandle) => void): void;
|
|
13
|
+
unsubscribe(symbol: string, timeframe: TimeFrame): void;
|
|
14
|
+
getBuffer(symbol: string, timeframe: TimeFrame): CandleBuffer | undefined;
|
|
15
|
+
private resubscribeAll;
|
|
16
|
+
private sendSubscribe;
|
|
17
|
+
private sendUnsubscribe;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=CandleStream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CandleStream.d.ts","sourceRoot":"","sources":["../../src/market-data/CandleStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAiB9C,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmC;gBAE5C,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB;IAQ3F,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAuB3F,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAUvD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS;IAIzE,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,eAAe;CAMxB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CandleStream = void 0;
|
|
4
|
+
const CandleBuffer_1 = require("./CandleBuffer");
|
|
5
|
+
const entities_1 = require("../transformers/entities");
|
|
6
|
+
const errors_1 = require("../errors");
|
|
7
|
+
const V1Adapter_1 = require("../protocol/V1Adapter");
|
|
8
|
+
function subKey(symbol, timeframe) {
|
|
9
|
+
return `${symbol.toUpperCase()}:${String(timeframe)}`;
|
|
10
|
+
}
|
|
11
|
+
class CandleStream {
|
|
12
|
+
router;
|
|
13
|
+
catalog;
|
|
14
|
+
subs = new Map();
|
|
15
|
+
constructor(router, catalog, reconnection) {
|
|
16
|
+
this.router = router;
|
|
17
|
+
this.catalog = catalog;
|
|
18
|
+
reconnection.on('reconnected', () => {
|
|
19
|
+
this.resubscribeAll();
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
subscribe(symbol, timeframe, callback) {
|
|
23
|
+
const key = subKey(symbol, timeframe);
|
|
24
|
+
if (this.subs.has(key))
|
|
25
|
+
return;
|
|
26
|
+
const asset = this.catalog.getAsset(symbol);
|
|
27
|
+
if (!asset)
|
|
28
|
+
throw new errors_1.ValidationError(`Unknown asset: ${symbol}`);
|
|
29
|
+
const buffer = new CandleBuffer_1.CandleBuffer();
|
|
30
|
+
const handler = (msg) => {
|
|
31
|
+
const raw = msg.msg;
|
|
32
|
+
if (raw.active_id !== asset.activeId || raw.size !== timeframe)
|
|
33
|
+
return;
|
|
34
|
+
const candle = (0, entities_1.transformCandle)(raw);
|
|
35
|
+
buffer.push(candle);
|
|
36
|
+
callback(candle);
|
|
37
|
+
};
|
|
38
|
+
this.router.registerHandler(V1Adapter_1.V1Adapter.candleGenerated, handler);
|
|
39
|
+
this.sendSubscribe(asset.activeId, timeframe);
|
|
40
|
+
this.subs.set(key, { activeId: asset.activeId, timeframe, buffer, handler, callback });
|
|
41
|
+
}
|
|
42
|
+
unsubscribe(symbol, timeframe) {
|
|
43
|
+
const key = subKey(symbol, timeframe);
|
|
44
|
+
const sub = this.subs.get(key);
|
|
45
|
+
if (!sub)
|
|
46
|
+
return;
|
|
47
|
+
this.router.unregisterHandler(V1Adapter_1.V1Adapter.candleGenerated, sub.handler);
|
|
48
|
+
this.sendUnsubscribe(sub.activeId, sub.timeframe);
|
|
49
|
+
this.subs.delete(key);
|
|
50
|
+
}
|
|
51
|
+
getBuffer(symbol, timeframe) {
|
|
52
|
+
return this.subs.get(subKey(symbol, timeframe))?.buffer;
|
|
53
|
+
}
|
|
54
|
+
resubscribeAll() {
|
|
55
|
+
for (const sub of this.subs.values()) {
|
|
56
|
+
this.sendSubscribe(sub.activeId, sub.timeframe);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
sendSubscribe(activeId, timeframe) {
|
|
60
|
+
this.router.sendMessage(V1Adapter_1.V1Adapter.subscribe, {
|
|
61
|
+
name: V1Adapter_1.V1Adapter.candleGenerated,
|
|
62
|
+
params: { active_id: activeId, size: timeframe },
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
sendUnsubscribe(activeId, timeframe) {
|
|
66
|
+
this.router.sendMessage(V1Adapter_1.V1Adapter.unsubscribe, {
|
|
67
|
+
name: V1Adapter_1.V1Adapter.candleGenerated,
|
|
68
|
+
params: { active_id: activeId, size: timeframe },
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.CandleStream = CandleStream;
|
|
73
|
+
//# sourceMappingURL=CandleStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CandleStream.js","sourceRoot":"","sources":["../../src/market-data/CandleStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MessageRouter } from '../transport/MessageRouter';
|
|
2
|
+
import type { AssetCatalog } from './AssetCatalog';
|
|
3
|
+
import type { IQCandle } from '../types/market-data';
|
|
4
|
+
import type { TimeFrame } from '../types/primitives';
|
|
5
|
+
export declare class HistoricalCandles {
|
|
6
|
+
private readonly router;
|
|
7
|
+
private readonly catalog;
|
|
8
|
+
constructor(router: MessageRouter, catalog: AssetCatalog);
|
|
9
|
+
getCandles(symbol: string, timeframe: TimeFrame, count: number, endTime?: number): Promise<IQCandle[]>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=HistoricalCandles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HistoricalCandles.d.ts","sourceRoot":"","sources":["../../src/market-data/HistoricalCandles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAMrD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE3B,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY;IAKlD,UAAU,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,QAAQ,EAAE,CAAC;CAmBvB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HistoricalCandles = void 0;
|
|
4
|
+
const entities_1 = require("../transformers/entities");
|
|
5
|
+
const errors_1 = require("../errors");
|
|
6
|
+
const V1Adapter_1 = require("../protocol/V1Adapter");
|
|
7
|
+
class HistoricalCandles {
|
|
8
|
+
router;
|
|
9
|
+
catalog;
|
|
10
|
+
constructor(router, catalog) {
|
|
11
|
+
this.router = router;
|
|
12
|
+
this.catalog = catalog;
|
|
13
|
+
}
|
|
14
|
+
async getCandles(symbol, timeframe, count, endTime) {
|
|
15
|
+
const asset = this.catalog.getAsset(symbol);
|
|
16
|
+
if (!asset)
|
|
17
|
+
throw new errors_1.ValidationError(`Unknown asset: ${symbol}`);
|
|
18
|
+
if (count <= 0)
|
|
19
|
+
throw new errors_1.ValidationError('count must be greater than 0');
|
|
20
|
+
const params = {
|
|
21
|
+
active_id: asset.activeId,
|
|
22
|
+
size: timeframe,
|
|
23
|
+
count,
|
|
24
|
+
};
|
|
25
|
+
if (endTime !== undefined)
|
|
26
|
+
params['to'] = Math.floor(endTime / 1000);
|
|
27
|
+
const response = await this.router.sendRequest(V1Adapter_1.V1Adapter.getCandles, params);
|
|
28
|
+
return response.msg.candles.map(entities_1.transformCandle).sort((a, b) => a.time - b.time);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.HistoricalCandles = HistoricalCandles;
|
|
32
|
+
//# sourceMappingURL=HistoricalCandles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HistoricalCandles.js","sourceRoot":"","sources":["../../src/market-data/HistoricalCandles.ts"],"names":[],"mappings":";;;AAKA,uDAA2D;AAC3D,sCAA4C;AAC5C,qDAAkD;AAElD,MAAa,iBAAiB;IACX,MAAM,CAAgB;IACtB,OAAO,CAAe;IAEvC,YAAY,MAAqB,EAAE,OAAqB;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU,CACd,MAAc,EACd,SAAoB,EACpB,KAAa,EACb,OAAgB;QAEhB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,wBAAe,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;QAClE,IAAI,KAAK,IAAI,CAAC;YAAE,MAAM,IAAI,wBAAe,CAAC,8BAA8B,CAAC,CAAC;QAE1E,MAAM,MAAM,GAA4B;YACtC,SAAS,EAAE,KAAK,CAAC,QAAQ;YACzB,IAAI,EAAE,SAAS;YACf,KAAK;SACN,CAAC;QACF,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAErE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAC5C,qBAAS,CAAC,UAAU,EACpB,MAAM,CACP,CAAC;QAEF,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,0BAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;CACF;AAjCD,8CAiCC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IQTick } from '../types/market-data';
|
|
2
|
+
import type { ActiveId } from '../types/primitives';
|
|
3
|
+
export declare class TickAggregator {
|
|
4
|
+
private readonly windows;
|
|
5
|
+
private readonly windowMs;
|
|
6
|
+
private readonly maxTicks;
|
|
7
|
+
constructor(windowMs?: number, maxTicks?: number);
|
|
8
|
+
push(tick: IQTick): void;
|
|
9
|
+
getWindow(assetId: ActiveId): readonly IQTick[];
|
|
10
|
+
clearAsset(assetId: ActiveId): void;
|
|
11
|
+
clear(): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=TickAggregator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TickAggregator.d.ts","sourceRoot":"","sources":["../../src/market-data/TickAggregator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAKpD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,QAAQ,SAAoB,EAAE,QAAQ,SAAoB;IAKtE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBxB,SAAS,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,MAAM,EAAE;IAI/C,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IAInC,KAAK,IAAI,IAAI;CAGd"}
|