@stoqey/ib 1.3.30 → 1.4.1
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/dist/api/api.js +2 -2
- package/dist/api/api.js.map +1 -1
- package/dist/api/contract/contractDetails.d.ts +1 -1
- package/dist/api/contract/forex.js.map +1 -1
- package/dist/api/contract/priceIncrement.d.ts +7 -0
- package/dist/api/contract/priceIncrement.js +3 -0
- package/dist/api/contract/priceIncrement.js.map +1 -0
- package/dist/api/data/enum/min-server-version.d.ts +1 -2
- package/dist/api/data/enum/min-server-version.js +0 -1
- package/dist/api/data/enum/min-server-version.js.map +1 -1
- package/dist/api/order/enum/orderType.d.ts +1 -0
- package/dist/api/order/enum/orderType.js +1 -0
- package/dist/api/order/enum/orderType.js.map +1 -1
- package/dist/api-next/api-next.d.ts +22 -2
- package/dist/api-next/api-next.js +80 -57
- package/dist/api-next/api-next.js.map +1 -1
- package/dist/api-next/common/error.d.ts +6 -5
- package/dist/api-next/common/error.js +17 -0
- package/dist/api-next/common/error.js.map +1 -1
- package/dist/api-next/index.d.ts +3 -4
- package/dist/api-next/index.js +9 -3
- package/dist/api-next/index.js.map +1 -1
- package/dist/api-next/market-scanner/market-scanner.d.ts +2 -2
- package/dist/api-next/order/open-order.d.ts +2 -2
- package/dist/common/configuration.js +22 -8
- package/dist/common/configuration.js.map +1 -1
- package/dist/common/errorCode.d.ts +9 -3
- package/dist/common/errorCode.js +26 -5
- package/dist/common/errorCode.js.map +1 -1
- package/dist/common/logger.js +20 -9
- package/dist/common/logger.js.map +1 -1
- package/dist/core/api-next/auto-connection.js +18 -8
- package/dist/core/api-next/auto-connection.js.map +1 -1
- package/dist/core/api-next/console-logger.js +17 -7
- package/dist/core/api-next/console-logger.js.map +1 -1
- package/dist/core/api-next/subscription-registry.d.ts +5 -5
- package/dist/core/api-next/subscription-registry.js +9 -9
- package/dist/core/api-next/subscription-registry.js.map +1 -1
- package/dist/core/api-next/subscription.js +5 -5
- package/dist/core/api-next/subscription.js.map +1 -1
- package/dist/core/io/controller.d.ts +1 -1
- package/dist/core/io/controller.js +3 -4
- package/dist/core/io/controller.js.map +1 -1
- package/dist/core/io/decoder.d.ts +1 -1
- package/dist/core/io/decoder.js +17 -15
- package/dist/core/io/decoder.js.map +1 -1
- package/dist/core/io/encoder.d.ts +14 -14
- package/dist/core/io/encoder.js +79 -83
- package/dist/core/io/encoder.js.map +1 -1
- package/dist/core/io/enum/in-msg-id.js.map +1 -1
- package/dist/core/io/socket.js +17 -29
- package/dist/core/io/socket.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/tests/nodb-test-environment.js +1 -1
- package/dist/tests/nodb-test-environment.js.map +1 -1
- package/dist/tests/unit/api/historical-data.test.js +34 -42
- package/dist/tests/unit/api/historical-data.test.js.map +1 -1
- package/dist/tests/unit/api/market-scanner.test.js +19 -27
- package/dist/tests/unit/api/market-scanner.test.js.map +1 -1
- package/dist/tests/unit/api/order/cancelOrder.test.js +86 -67
- package/dist/tests/unit/api/order/cancelOrder.test.js.map +1 -1
- package/dist/tests/unit/api/pnl.test.js +12 -4
- package/dist/tests/unit/api/pnl.test.js.map +1 -1
- package/dist/tests/unit/api/positions.test.js +3 -6
- package/dist/tests/unit/api/positions.test.js.map +1 -1
- package/dist/tests/unit/api-next/get-account-summary.test.js +1 -1
- package/dist/tests/unit/api-next/get-account-updates.test.d.ts +4 -0
- package/dist/tests/unit/api-next/get-account-updates.test.js +86 -0
- package/dist/tests/unit/api-next/get-account-updates.test.js.map +1 -0
- package/dist/tests/unit/api-next/get-historical-data.test.js +1 -1
- package/dist/tests/unit/api-next/get-historical-data.test.js.map +1 -1
- package/dist/tests/unit/api-next/next-valid-order-id.test.js +1 -1
- package/dist/tests/unit/api-next/next-valid-order-id.test.js.map +1 -1
- package/dist/tests/unit/api-next-live/get-contract-details.test.js +7 -17
- package/dist/tests/unit/api-next-live/get-contract-details.test.js.map +1 -1
- package/dist/tests/unit/api-next-live/get-current-time.test.d.ts +4 -0
- package/dist/tests/unit/api-next-live/get-current-time.test.js +64 -0
- package/dist/tests/unit/api-next-live/get-current-time.test.js.map +1 -0
- package/dist/tests/unit/api-next-live/get-historical-ticks.test.js +7 -3
- package/dist/tests/unit/api-next-live/get-historical-ticks.test.js.map +1 -1
- package/dist/tests/unit/api-next-live/get-managed-accounts.test.d.ts +4 -0
- package/dist/tests/unit/api-next-live/get-managed-accounts.test.js +48 -0
- package/dist/tests/unit/api-next-live/get-managed-accounts.test.js.map +1 -0
- package/dist/tests/unit/api-next-live/get-market-rule.test.d.ts +4 -0
- package/dist/tests/unit/api-next-live/get-market-rule.test.js +64 -0
- package/dist/tests/unit/api-next-live/get-market-rule.test.js.map +1 -0
- package/dist/tests/unit/api-next-live/get-user-info.test.d.ts +4 -0
- package/dist/tests/unit/api-next-live/get-user-info.test.js +50 -0
- package/dist/tests/unit/api-next-live/get-user-info.test.js.map +1 -0
- package/dist/tests/unit/api-next-live/subscription-registry.test.js +11 -7
- package/dist/tests/unit/api-next-live/subscription-registry.test.js.map +1 -1
- package/dist/tools/common/ib-api-next-app.js +3 -2
- package/dist/tools/common/ib-api-next-app.js.map +1 -1
- package/package.json +14 -11
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
exports.IBApiAutoConnection = void 0;
|
|
27
37
|
const rxjs_1 = require("rxjs");
|
|
@@ -62,7 +72,7 @@ class IBApiAutoConnection extends __1.default {
|
|
|
62
72
|
this.on(__1.EventName.connected, () => this.onConnected());
|
|
63
73
|
this.on(__1.EventName.disconnected, () => this.onDisconnected());
|
|
64
74
|
this.on(__1.EventName.received, () => (this.lastDataIngressTm = Date.now()));
|
|
65
|
-
this.on(__1.EventName.error, (
|
|
75
|
+
this.on(__1.EventName.error, (_error, code) => {
|
|
66
76
|
if (code === __1.ErrorCode.CONNECT_FAIL) {
|
|
67
77
|
this.onDisconnected();
|
|
68
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-connection.js","sourceRoot":"","sources":["../../../src/core/api-next/auto-connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auto-connection.js","sourceRoot":"","sources":["../../../src/core/api-next/auto-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console-logger.js","sourceRoot":"","sources":["../../../src/core/api-next/console-logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"console-logger.js","sourceRoot":"","sources":["../../../src/core/api-next/console-logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAC5B,2CAA6B;AAC7B,6BAAyC;AAEzC;;;;GAIG;AACH,MAAa,aAAa;IAA1B;QACE,4BAA4B;QACpB,cAAS,GAAG,YAAQ,CAAC,MAAM,CAAC;IA+DtC,CAAC;IA7DC,iCAAiC;IACjC,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,iCAAiC;IACjC,IAAI,QAAQ,CAAC,KAAe;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,GAAW,EAAE,IAAwB;QACzC,IAAI,IAAI,CAAC,SAAS,IAAI,YAAQ,CAAC,MAAM,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CACX,IAAI,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE,cAAc,GAAG,KAAK,EACzD,IAAI,CACL,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC,GAAW,EAAE,IAAwB;QACxC,IAAI,IAAI,CAAC,SAAS,IAAI,YAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CACT,IAAI,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE,aAAa,GAAG,KAAK,EACxD,IAAI,CACL,CAAC;QACJ,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,GAAW,EAAE,IAAwB;QACxC,IAAI,IAAI,CAAC,SAAS,IAAI,YAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,OAAO,GAAG,IAAI,CAAC;YACnB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBAAE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAM,CAAC,MAAM,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CACV,gBAAM,CAAC,IAAI,CAAC,MAAM,CAChB,IAAI,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE,aAAa,GAAG,KAAK,CACzD,EACD,OAAO,CACR,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,GAAW,EAAE,IAAwB;QACzC,IAAI,IAAI,CAAC,SAAS,IAAI,YAAQ,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,OAAO,GAAG,IAAI,CAAC;YACnB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACrB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACvB,gBAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CACrE,CAAC;YAEJ,OAAO,CAAC,KAAK,CACX,gBAAM,CAAC,IAAI,CAAC,GAAG,CACb,IAAI,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI,CACzD,EACD,OAAO,CACR,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAjED,sCAiEC"}
|
|
@@ -28,7 +28,7 @@ export declare class IBApiNextSubscriptionRegistry {
|
|
|
28
28
|
*/
|
|
29
29
|
constructor(api: IBApiAutoConnection, apiNext: IBApiNext);
|
|
30
30
|
/** A Map containing the subscription registry, with event name as key. */
|
|
31
|
-
private readonly
|
|
31
|
+
private readonly entries;
|
|
32
32
|
/**
|
|
33
33
|
* Register a subscription.
|
|
34
34
|
*
|
|
@@ -39,15 +39,15 @@ export declare class IBApiNextSubscriptionRegistry {
|
|
|
39
39
|
* the subscription instance. This can be used to avoid creation of multiple subscriptions,
|
|
40
40
|
* that will end up on same TWS request (i.e. request same market data multiple times), but an
|
|
41
41
|
* existing subscription instance will be re-used if same instanceId does already exist.
|
|
42
|
-
* As a general rule: don't use instanceId when there is
|
|
43
|
-
* a Promise (single emitted value). Use it everywhere else.
|
|
42
|
+
* As a general rule: don't use instanceId when there is a reqId. Use it everywhere else.
|
|
44
43
|
*/
|
|
45
|
-
register<T>(requestFunction: (reqId: number) => void, cancelFunction: (reqId: number) => void | null | undefined,
|
|
44
|
+
register<T>(requestFunction: (reqId: number) => void, cancelFunction: (reqId: number) => void | null | undefined, // eslint-disable-line @typescript-eslint/no-invalid-void-type
|
|
45
|
+
eventHandler: [
|
|
46
46
|
EventName,
|
|
47
47
|
(subscriptions: Map<number, IBApiNextSubscription<T>>, ...eventArgs: unknown[]) => void
|
|
48
48
|
][], instanceId?: string): Observable<ItemListUpdate<T>>;
|
|
49
49
|
/**
|
|
50
50
|
* Dispatch an error into the subscription that owns the given request id.
|
|
51
51
|
*/
|
|
52
|
-
dispatchError(
|
|
52
|
+
dispatchError(error: IBApiNextError): void;
|
|
53
53
|
}
|
|
@@ -48,7 +48,7 @@ class IBApiNextSubscriptionRegistry {
|
|
|
48
48
|
this.api = api;
|
|
49
49
|
this.apiNext = apiNext;
|
|
50
50
|
/** A Map containing the subscription registry, with event name as key. */
|
|
51
|
-
this.
|
|
51
|
+
this.entries = new map_1.IBApiNextMap();
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* Register a subscription.
|
|
@@ -60,16 +60,16 @@ class IBApiNextSubscriptionRegistry {
|
|
|
60
60
|
* the subscription instance. This can be used to avoid creation of multiple subscriptions,
|
|
61
61
|
* that will end up on same TWS request (i.e. request same market data multiple times), but an
|
|
62
62
|
* existing subscription instance will be re-used if same instanceId does already exist.
|
|
63
|
-
* As a general rule: don't use instanceId when there is
|
|
64
|
-
* a Promise (single emitted value). Use it everywhere else.
|
|
63
|
+
* As a general rule: don't use instanceId when there is a reqId. Use it everywhere else.
|
|
65
64
|
*/
|
|
66
|
-
register(requestFunction, cancelFunction,
|
|
65
|
+
register(requestFunction, cancelFunction, // eslint-disable-line @typescript-eslint/no-invalid-void-type
|
|
66
|
+
eventHandler, instanceId) {
|
|
67
67
|
// get the existing registry entries, or add if not existing yet
|
|
68
68
|
const entries = [];
|
|
69
69
|
eventHandler.forEach((handler) => {
|
|
70
70
|
const eventName = handler[0];
|
|
71
71
|
const callback = handler[1];
|
|
72
|
-
const entry = this.
|
|
72
|
+
const entry = this.entries.getOrAdd(eventName, () => {
|
|
73
73
|
const entry = new RegistryEntry(eventName, callback);
|
|
74
74
|
this.apiNext.logger.debug(LOG_TAG, `Add RegistryEntry for EventName.${eventName}`);
|
|
75
75
|
this.api.addListener(eventName, entry.listener);
|
|
@@ -107,7 +107,7 @@ class IBApiNextSubscriptionRegistry {
|
|
|
107
107
|
if (!entry.subscriptions.size) {
|
|
108
108
|
this.api.removeListener(entry.eventName, entry.listener);
|
|
109
109
|
this.apiNext.logger.debug(LOG_TAG, `Remove RegistryEntry for EventName.${entry.eventName}.`);
|
|
110
|
-
this.
|
|
110
|
+
this.entries.delete(entry.eventName);
|
|
111
111
|
}
|
|
112
112
|
});
|
|
113
113
|
this.apiNext.logger.debug(LOG_TAG, `Deleted IBApiNextSubscription for ${subscription.reqId}.`);
|
|
@@ -123,9 +123,9 @@ class IBApiNextSubscriptionRegistry {
|
|
|
123
123
|
/**
|
|
124
124
|
* Dispatch an error into the subscription that owns the given request id.
|
|
125
125
|
*/
|
|
126
|
-
dispatchError(
|
|
127
|
-
this.
|
|
128
|
-
entry.subscriptions.get(reqId)?.error(error);
|
|
126
|
+
dispatchError(error) {
|
|
127
|
+
this.entries.forEach((entry) => {
|
|
128
|
+
entry.subscriptions.get(error.reqId)?.error(error);
|
|
129
129
|
});
|
|
130
130
|
}
|
|
131
131
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-registry.js","sourceRoot":"","sources":["../../../src/core/api-next/subscription-registry.ts"],"names":[],"mappings":";;;AAIA,+BAAqC;AACrC,iDAAuD;AAQvD,kBAAkB;AAClB,MAAM,OAAO,GAAG,+BAA+B,CAAC;AAEhD;;;;GAIG;AACH,MAAM,aAAa;IACjB;;;;;OAKG;IACH,YACkB,SAAoB,EACpB,QAGP;QAJO,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAGf;QAUX,0DAA0D;QAC1C,kBAAa,GAC3B,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"subscription-registry.js","sourceRoot":"","sources":["../../../src/core/api-next/subscription-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,7 +68,7 @@ class IBApiNextSubscription {
|
|
|
68
68
|
*/
|
|
69
69
|
error(error) {
|
|
70
70
|
delete this._lastAllValue;
|
|
71
|
-
this.endEventReceived = false;
|
|
71
|
+
// this.endEventReceived = false;
|
|
72
72
|
this.hasError = true;
|
|
73
73
|
this.subject.error(error);
|
|
74
74
|
this.cancelTwsSubscription();
|
|
@@ -97,15 +97,15 @@ class IBApiNextSubscription {
|
|
|
97
97
|
}))
|
|
98
98
|
.subscribe(subscriber);
|
|
99
99
|
// request from TWS if first subscriber
|
|
100
|
-
if (this.observersCount === 0) {
|
|
100
|
+
if (this.observersCount++ === 0) {
|
|
101
101
|
this.requestTwsSubscription();
|
|
102
102
|
}
|
|
103
|
-
this.observersCount++;
|
|
103
|
+
// this.observersCount++; moved into "if" condition above
|
|
104
104
|
// handle unsubscribe
|
|
105
105
|
return () => {
|
|
106
106
|
subscription$.unsubscribe();
|
|
107
|
-
this.observersCount--;
|
|
108
|
-
if (this.observersCount <= 0) {
|
|
107
|
+
// this.observersCount--; moved into "if" condition below
|
|
108
|
+
if (--this.observersCount <= 0) {
|
|
109
109
|
this.cancelTwsSubscription();
|
|
110
110
|
this.cleanupFunction();
|
|
111
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../../src/core/api-next/subscription.ts"],"names":[],"mappings":";;;AAAA,+BAA+D;AAC/D,8CAAqC;AAErC,6EAAyE;AAGzE;;;;;;;;;GASG;AACH,MAAa,qBAAqB;IAChC;;;;;;;OAOG;IACH,YACU,GAAc,EACd,eAA2B,EAC3B,cAA0B,EAC1B,eAA2B,EACnB,UAAmB;QAJ3B,QAAG,GAAH,GAAG,CAAW;QACd,oBAAe,GAAf,eAAe,CAAY;QAC3B,mBAAc,GAAd,cAAc,CAAY;QAC1B,oBAAe,GAAf,eAAe,CAAY;QACnB,eAAU,GAAV,UAAU,CAAS;QAQrC,kCAAkC;QAC1B,mBAAc,GAAG,CAAC,CAAC;QAE3B,6DAA6D;QACrD,YAAO,GAAG,IAAI,oBAAa,CAA6B,CAAC,CAAC,CAAC;QAEnE,2DAA2D;QACnD,aAAQ,GAAG,KAAK,CAAC;QAQzB,sGAAsG;QAC/F,qBAAgB,GAAG,KAAK,CAAC;QAtB9B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC;IAC7B,CAAC;IAuBD,uDAAuD;IACvD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,sGAAsG;IACtG,IAAI,YAAY,CAAC,KAAQ;QACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAiC;QACpC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,yDAAyD;IACzD,QAAQ;QACN,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAqB;QACzB,OAAO,IAAI,CAAC,aAAa,CAAC;QAC1B,
|
|
1
|
+
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../../src/core/api-next/subscription.ts"],"names":[],"mappings":"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"}
|
|
@@ -125,7 +125,7 @@ export declare class Controller implements EncoderCallbacks, DecoderCallbacks {
|
|
|
125
125
|
* @param reqId RequestId associated to this error.
|
|
126
126
|
* @param advancedOrderReject Additional error data (optional).
|
|
127
127
|
*/
|
|
128
|
-
emitError(errMsg: string, code: number, reqId
|
|
128
|
+
emitError(errMsg: string, code: number, reqId?: number, advancedOrderReject?: unknown): void;
|
|
129
129
|
/**
|
|
130
130
|
* Execute a command.
|
|
131
131
|
*
|
|
@@ -189,8 +189,7 @@ class Controller {
|
|
|
189
189
|
* @param advancedOrderReject Additional error data (optional).
|
|
190
190
|
*/
|
|
191
191
|
emitError(errMsg, code, reqId, advancedOrderReject) {
|
|
192
|
-
|
|
193
|
-
this.emitEvent(event_name_1.EventName.error, new Error(errMsg), code, reqId, advancedOrderReject);
|
|
192
|
+
this.emitEvent(event_name_1.EventName.error, new Error(errMsg), code, reqId ?? errorCode_1.ErrorCode.NO_VALID_ID, advancedOrderReject);
|
|
194
193
|
}
|
|
195
194
|
/**
|
|
196
195
|
* Execute a command.
|
|
@@ -211,7 +210,7 @@ class Controller {
|
|
|
211
210
|
this.socket.connect(clientId);
|
|
212
211
|
}
|
|
213
212
|
else {
|
|
214
|
-
this.
|
|
213
|
+
this.emitInfo("Cannot connect if already connected.", errorCode_1.ErrorCode.ALREADY_CONNECTED);
|
|
215
214
|
}
|
|
216
215
|
}
|
|
217
216
|
/**
|
|
@@ -239,7 +238,7 @@ class Controller {
|
|
|
239
238
|
this.socket.send(tokens);
|
|
240
239
|
}
|
|
241
240
|
else {
|
|
242
|
-
this.emitError("Cannot send data when disconnected.", errorCode_1.ErrorCode.NOT_CONNECTED,
|
|
241
|
+
this.emitError("Cannot send data when disconnected.", errorCode_1.ErrorCode.NOT_CONNECTED, errorCode_1.ErrorCode.NO_VALID_ID);
|
|
243
242
|
}
|
|
244
243
|
}
|
|
245
244
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/core/io/controller.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA2C;AAC3C,8EAA4C;AAG5C,+DAA2D;AAC3D,+EAAuD;AACvD,sDAAmD;AACnD,uCAAsD;AACtD,uCAAsD;AACtD,qCAAoD;AAEpD;;;;;GAKG;AACH,MAAa,UAAU;IACrB;;;;OAIG;IACH,
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/core/io/controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ export interface DecoderCallbacks {
|
|
|
34
34
|
* @param reqId The request identifier which generated the error.
|
|
35
35
|
* @param advancedOrderReject An object providing more information in case of an order rejection
|
|
36
36
|
*/
|
|
37
|
-
emitError(errMsg: string, code: number, reqId
|
|
37
|
+
emitError(errMsg: string, code: number, reqId?: number, advancedOrderReject?: unknown): void;
|
|
38
38
|
/**
|
|
39
39
|
* Emit an information message event to public API interface.
|
|
40
40
|
*
|
package/dist/core/io/decoder.js
CHANGED
|
@@ -267,7 +267,7 @@ class Decoder {
|
|
|
267
267
|
case in_msg_id_1.IN_MSG_ID.USER_INFO:
|
|
268
268
|
return this.decodeMsg_USER_INFO();
|
|
269
269
|
default:
|
|
270
|
-
this.callback.emitError(`No parser implementation found for token: ${in_msg_id_1.IN_MSG_ID[msgId]} (${msgId}).`, errorCode_1.ErrorCode.UNKNOWN_ID
|
|
270
|
+
this.callback.emitError(`No parser implementation found for token: ${in_msg_id_1.IN_MSG_ID[msgId]} (${msgId}).`, errorCode_1.ErrorCode.UNKNOWN_ID);
|
|
271
271
|
}
|
|
272
272
|
}
|
|
273
273
|
/**
|
|
@@ -295,7 +295,7 @@ class Decoder {
|
|
|
295
295
|
// check if all of the message data was processed and drain any remaining tokens
|
|
296
296
|
if (verifyMessageBoundary) {
|
|
297
297
|
if (this.dataQueue[0] !== undefined) {
|
|
298
|
-
this.callback.emitError(`Decoding error on ${in_msg_id_1.IN_MSG_ID[msgId]}: unprocessed data left on queue (${JSON.stringify(this.dataQueue)}). Please report to https://github.com/stoqey/ib`, errorCode_1.ErrorCode.UNKNOWN_ID
|
|
298
|
+
this.callback.emitError(`Decoding error on ${in_msg_id_1.IN_MSG_ID[msgId]}: unprocessed data left on queue (${JSON.stringify(this.dataQueue)}). Please report to https://github.com/stoqey/ib`, errorCode_1.ErrorCode.UNKNOWN_ID);
|
|
299
299
|
}
|
|
300
300
|
this.drainQueue();
|
|
301
301
|
}
|
|
@@ -305,7 +305,7 @@ class Decoder {
|
|
|
305
305
|
throw e;
|
|
306
306
|
}
|
|
307
307
|
if (verifyMessageBoundary) {
|
|
308
|
-
this.callback.emitError(`Underrun error on ${in_msg_id_1.IN_MSG_ID[msgId]}: ${e.message} Please report to https://github.com/stoqey/ib`, errorCode_1.ErrorCode.UNKNOWN_ID
|
|
308
|
+
this.callback.emitError(`Underrun error on ${in_msg_id_1.IN_MSG_ID[msgId]}: ${e.message} Please report to https://github.com/stoqey/ib`, errorCode_1.ErrorCode.UNKNOWN_ID);
|
|
309
309
|
}
|
|
310
310
|
this.drainQueue();
|
|
311
311
|
}
|
|
@@ -334,7 +334,9 @@ class Decoder {
|
|
|
334
334
|
v = v.replace(escapeString, String.fromCharCode(hexVal));
|
|
335
335
|
}
|
|
336
336
|
}
|
|
337
|
-
catch (
|
|
337
|
+
catch (_e) {
|
|
338
|
+
/* TODO: handle error? */
|
|
339
|
+
}
|
|
338
340
|
return v;
|
|
339
341
|
}
|
|
340
342
|
/**
|
|
@@ -542,7 +544,7 @@ class Decoder {
|
|
|
542
544
|
const version = this.readInt();
|
|
543
545
|
if (version < 2) {
|
|
544
546
|
const errorMsg = this.readStr();
|
|
545
|
-
this.callback.emitError(errorMsg,
|
|
547
|
+
this.callback.emitError(errorMsg, errorCode_1.ErrorCode.UNKNOWN_ID);
|
|
546
548
|
}
|
|
547
549
|
else {
|
|
548
550
|
const id = this.readInt();
|
|
@@ -558,7 +560,7 @@ class Decoder {
|
|
|
558
560
|
advancedOrderReject = JSON.parse(this.decodeUnicodeEscapedString(advancedOrderRejectJson));
|
|
559
561
|
}
|
|
560
562
|
}
|
|
561
|
-
if (id ===
|
|
563
|
+
if (id === errorCode_1.ErrorCode.NO_VALID_ID) {
|
|
562
564
|
this.callback.emitInfo(msg, code);
|
|
563
565
|
}
|
|
564
566
|
else {
|
|
@@ -1171,7 +1173,7 @@ class Decoder {
|
|
|
1171
1173
|
* Decode a SCANNER_PARAMETERS message from data queue and emit a scannerParameters event.
|
|
1172
1174
|
*/
|
|
1173
1175
|
decodeMsg_SCANNER_PARAMETERS() {
|
|
1174
|
-
this.readInt();
|
|
1176
|
+
const _version = this.readInt();
|
|
1175
1177
|
const xml = this.readStr();
|
|
1176
1178
|
this.emit(event_name_1.EventName.scannerParameters, xml);
|
|
1177
1179
|
}
|
|
@@ -1215,16 +1217,14 @@ class Decoder {
|
|
|
1215
1217
|
* Decode a TICK_OPTION_COMPUTATION message from data queue and emit a tickOptionComputation event.
|
|
1216
1218
|
*/
|
|
1217
1219
|
decodeMsg_TICK_OPTION_COMPUTATION() {
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
else
|
|
1222
|
-
version = this.readInt();
|
|
1220
|
+
const version = this.serverVersion >= min_server_version_1.default.PRICE_BASED_VOLATILITY
|
|
1221
|
+
? Number.MAX_VALUE
|
|
1222
|
+
: this.readInt();
|
|
1223
1223
|
const tickerId = this.readInt();
|
|
1224
1224
|
const tickType = this.readInt();
|
|
1225
|
-
let
|
|
1225
|
+
let _tickAttrib;
|
|
1226
1226
|
if (this.serverVersion >= min_server_version_1.default.PRICE_BASED_VOLATILITY) {
|
|
1227
|
-
|
|
1227
|
+
_tickAttrib = this.readInt();
|
|
1228
1228
|
}
|
|
1229
1229
|
let impliedVol = this.readDouble();
|
|
1230
1230
|
if (impliedVol == -1) {
|
|
@@ -1278,7 +1278,9 @@ class Decoder {
|
|
|
1278
1278
|
undPrice = undefined;
|
|
1279
1279
|
}
|
|
1280
1280
|
}
|
|
1281
|
-
this.emit(event_name_1.EventName.tickOptionComputation, tickerId, tickType,
|
|
1281
|
+
this.emit(event_name_1.EventName.tickOptionComputation, tickerId, tickType,
|
|
1282
|
+
// tickAttrib, 0 - return based, 1- price based. Ignored
|
|
1283
|
+
impliedVol, delta, optPrice, pvDividend, gamma, vega, theta, undPrice);
|
|
1282
1284
|
}
|
|
1283
1285
|
/**
|
|
1284
1286
|
* Decode a TICK_GENERIC message from data queue and emit a tickGeneric event.
|