@tastytrade/api 3.1.0 → 5.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/.vscode/launch.json +29 -0
- package/CHANGELOG.md +41 -0
- package/CODEOWNERS +1 -0
- package/README.md +64 -31
- package/dist/account-streamer.d.ts +10 -8
- package/dist/account-streamer.d.ts.map +1 -0
- package/dist/account-streamer.js +147 -229
- package/dist/account-streamer.js.map +1 -0
- package/dist/logger.d.ts +20 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +36 -0
- package/dist/logger.js.map +1 -0
- package/dist/market-data-streamer.d.ts +7 -5
- package/dist/market-data-streamer.d.ts.map +1 -0
- package/dist/market-data-streamer.js +139 -172
- package/dist/market-data-streamer.js.map +1 -0
- package/dist/models/tastytrade-session.d.ts +1 -0
- package/dist/models/tastytrade-session.d.ts.map +1 -0
- package/dist/models/tastytrade-session.js +10 -20
- package/dist/models/tastytrade-session.js.map +1 -0
- package/dist/services/account-status-service.d.ts +2 -1
- package/dist/services/account-status-service.d.ts.map +1 -0
- package/dist/services/account-status-service.js +11 -60
- package/dist/services/account-status-service.js.map +1 -0
- package/dist/services/accounts-and-customers-service.d.ts +2 -1
- package/dist/services/accounts-and-customers-service.d.ts.map +1 -0
- package/dist/services/accounts-and-customers-service.js +29 -112
- package/dist/services/accounts-and-customers-service.js.map +1 -0
- package/dist/services/balances-and-positions-service.d.ts +2 -1
- package/dist/services/balances-and-positions-service.d.ts.map +1 -0
- package/dist/services/balances-and-positions-service.js +22 -88
- package/dist/services/balances-and-positions-service.js.map +1 -0
- package/dist/services/instruments-service.d.ts +2 -1
- package/dist/services/instruments-service.d.ts.map +1 -0
- package/dist/services/instruments-service.js +130 -365
- package/dist/services/instruments-service.js.map +1 -0
- package/dist/services/margin-requirements-service.d.ts +2 -1
- package/dist/services/margin-requirements-service.d.ts.map +1 -0
- package/dist/services/margin-requirements-service.js +16 -73
- package/dist/services/margin-requirements-service.js.map +1 -0
- package/dist/services/market-metrics-service.d.ts +2 -1
- package/dist/services/market-metrics-service.d.ts.map +1 -0
- package/dist/services/market-metrics-service.js +21 -88
- package/dist/services/market-metrics-service.js.map +1 -0
- package/dist/services/net-liquidating-value-history-service.d.ts +2 -1
- package/dist/services/net-liquidating-value-history-service.d.ts.map +1 -0
- package/dist/services/net-liquidating-value-history-service.js +16 -74
- package/dist/services/net-liquidating-value-history-service.js.map +1 -0
- package/dist/services/orders-service.d.ts +2 -1
- package/dist/services/orders-service.d.ts.map +1 -0
- package/dist/services/orders-service.js +76 -231
- package/dist/services/orders-service.js.map +1 -0
- package/dist/services/risk-parameters-service.d.ts +2 -1
- package/dist/services/risk-parameters-service.d.ts.map +1 -0
- package/dist/services/risk-parameters-service.js +16 -73
- package/dist/services/risk-parameters-service.js.map +1 -0
- package/dist/services/session-service.d.ts +2 -1
- package/dist/services/session-service.d.ts.map +1 -0
- package/dist/services/session-service.js +30 -110
- package/dist/services/session-service.js.map +1 -0
- package/dist/services/symbol-search-service.d.ts +2 -1
- package/dist/services/symbol-search-service.d.ts.map +1 -0
- package/dist/services/symbol-search-service.js +11 -60
- package/dist/services/symbol-search-service.js.map +1 -0
- package/dist/services/tastytrade-http-client.d.ts +5 -3
- package/dist/services/tastytrade-http-client.d.ts.map +1 -0
- package/dist/services/tastytrade-http-client.js +53 -134
- package/dist/services/tastytrade-http-client.js.map +1 -0
- package/dist/services/transactions-service.d.ts +2 -1
- package/dist/services/transactions-service.d.ts.map +1 -0
- package/dist/services/transactions-service.js +22 -87
- package/dist/services/transactions-service.js.map +1 -0
- package/dist/services/watchlists-service.d.ts +2 -1
- package/dist/services/watchlists-service.d.ts.map +1 -0
- package/dist/services/watchlists-service.js +51 -165
- package/dist/services/watchlists-service.js.map +1 -0
- package/dist/tastytrade-api.d.ts +32 -22
- package/dist/tastytrade-api.d.ts.map +1 -0
- package/dist/tastytrade-api.js +44 -79
- package/dist/tastytrade-api.js.map +1 -0
- package/dist/utils/constants.d.ts +1 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +2 -4
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/json-util.d.ts +4 -3
- package/dist/utils/json-util.d.ts.map +1 -0
- package/dist/utils/json-util.js +14 -25
- package/dist/utils/json-util.js.map +1 -0
- package/dist/utils/response-util.d.ts +1 -0
- package/dist/utils/response-util.d.ts.map +1 -0
- package/dist/utils/response-util.js +7 -12
- package/dist/utils/response-util.js.map +1 -0
- package/lib/account-streamer.ts +19 -12
- package/lib/logger.ts +48 -0
- package/lib/market-data-streamer.ts +5 -1
- package/lib/services/account-status-service.ts +2 -2
- package/lib/services/accounts-and-customers-service.ts +2 -2
- package/lib/services/balances-and-positions-service.ts +2 -2
- package/lib/services/instruments-service.ts +2 -2
- package/lib/services/margin-requirements-service.ts +2 -2
- package/lib/services/market-metrics-service.ts +2 -2
- package/lib/services/net-liquidating-value-history-service.ts +2 -2
- package/lib/services/orders-service.ts +2 -2
- package/lib/services/risk-parameters-service.ts +2 -2
- package/lib/services/session-service.ts +2 -2
- package/lib/services/symbol-search-service.ts +2 -2
- package/lib/services/tastytrade-http-client.ts +21 -16
- package/lib/services/transactions-service.ts +2 -2
- package/lib/services/watchlists-service.ts +2 -2
- package/lib/tastytrade-api.ts +35 -22
- package/package.json +14 -9
- package/tsconfig.json +12 -11
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
exports.CandleType = exports.MarketDataSubscriptionType = void 0;
|
|
7
|
-
var isomorphic_ws_1 = __importDefault(require("isomorphic-ws"));
|
|
8
|
-
var lodash_1 = __importDefault(require("lodash"));
|
|
9
|
-
var uuid_1 = require("uuid");
|
|
10
|
-
var constants_1 = require("./utils/constants");
|
|
11
|
-
var MarketDataSubscriptionType;
|
|
1
|
+
import WebSocket from 'isomorphic-ws';
|
|
2
|
+
import _ from 'lodash';
|
|
3
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
4
|
+
import { MinTlsVersion } from './utils/constants.js';
|
|
5
|
+
export var MarketDataSubscriptionType;
|
|
12
6
|
(function (MarketDataSubscriptionType) {
|
|
13
7
|
MarketDataSubscriptionType["Candle"] = "Candle";
|
|
14
8
|
MarketDataSubscriptionType["Quote"] = "Quote";
|
|
@@ -17,8 +11,8 @@ var MarketDataSubscriptionType;
|
|
|
17
11
|
MarketDataSubscriptionType["Profile"] = "Profile";
|
|
18
12
|
MarketDataSubscriptionType["Greeks"] = "Greeks";
|
|
19
13
|
MarketDataSubscriptionType["Underlying"] = "Underlying";
|
|
20
|
-
})(MarketDataSubscriptionType
|
|
21
|
-
var CandleType;
|
|
14
|
+
})(MarketDataSubscriptionType || (MarketDataSubscriptionType = {}));
|
|
15
|
+
export var CandleType;
|
|
22
16
|
(function (CandleType) {
|
|
23
17
|
CandleType["Tick"] = "t";
|
|
24
18
|
CandleType["Second"] = "s";
|
|
@@ -31,13 +25,13 @@ var CandleType;
|
|
|
31
25
|
CandleType["Year"] = "y";
|
|
32
26
|
CandleType["Volume"] = "v";
|
|
33
27
|
CandleType["Price"] = "p";
|
|
34
|
-
})(CandleType
|
|
28
|
+
})(CandleType || (CandleType = {}));
|
|
35
29
|
// List of all subscription types except for Candle
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
30
|
+
const AllSubscriptionTypes = Object.values(MarketDataSubscriptionType);
|
|
31
|
+
const KeepaliveInterval = 30000; // 30 seconds
|
|
32
|
+
const DefaultChannelId = 1;
|
|
33
|
+
export default class MarketDataStreamer {
|
|
34
|
+
constructor() {
|
|
41
35
|
this.webSocket = null;
|
|
42
36
|
this.token = '';
|
|
43
37
|
this.keepaliveIntervalId = null;
|
|
@@ -47,50 +41,47 @@ var MarketDataStreamer = /** @class */ (function () {
|
|
|
47
41
|
this.authState = '';
|
|
48
42
|
this.errorListeners = new Map();
|
|
49
43
|
this.authStateListeners = new Map();
|
|
44
|
+
console.warn('MarketDataStreamer is deprecated and will be removed in a future release of @tastytrade/api. Use @dxfeed/dxlink-api instead.');
|
|
50
45
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (lodash_1.default.isNil(dataListener)) {
|
|
55
|
-
return lodash_1.default.noop;
|
|
46
|
+
addDataListener(dataListener, channelId = null) {
|
|
47
|
+
if (_.isNil(dataListener)) {
|
|
48
|
+
return _.noop;
|
|
56
49
|
}
|
|
57
|
-
|
|
58
|
-
this.dataListeners.set(guid, { listener: dataListener, channelId
|
|
59
|
-
return
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
return lodash_1.default.noop;
|
|
50
|
+
const guid = uuidv4();
|
|
51
|
+
this.dataListeners.set(guid, { listener: dataListener, channelId });
|
|
52
|
+
return () => this.dataListeners.delete(guid);
|
|
53
|
+
}
|
|
54
|
+
addErrorListener(errorListener) {
|
|
55
|
+
if (_.isNil(errorListener)) {
|
|
56
|
+
return _.noop;
|
|
65
57
|
}
|
|
66
|
-
|
|
58
|
+
const guid = uuidv4();
|
|
67
59
|
this.errorListeners.set(guid, errorListener);
|
|
68
|
-
return
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
return lodash_1.default.noop;
|
|
60
|
+
return () => this.errorListeners.delete(guid);
|
|
61
|
+
}
|
|
62
|
+
addAuthStateChangeListener(authStateListener) {
|
|
63
|
+
if (_.isNil(authStateListener)) {
|
|
64
|
+
return _.noop;
|
|
74
65
|
}
|
|
75
|
-
|
|
66
|
+
const guid = uuidv4();
|
|
76
67
|
this.authStateListeners.set(guid, authStateListener);
|
|
77
|
-
return
|
|
78
|
-
}
|
|
79
|
-
|
|
68
|
+
return () => this.authStateListeners.delete(guid);
|
|
69
|
+
}
|
|
70
|
+
connect(url, token) {
|
|
80
71
|
if (this.isConnected) {
|
|
81
72
|
throw new Error('MarketDataStreamer is attempting to connect when an existing websocket is already connected');
|
|
82
73
|
}
|
|
83
74
|
this.token = token;
|
|
84
|
-
this.webSocket = new
|
|
85
|
-
minVersion:
|
|
75
|
+
this.webSocket = new WebSocket(url, [], {
|
|
76
|
+
minVersion: MinTlsVersion // TLS Config
|
|
86
77
|
});
|
|
87
78
|
this.webSocket.onopen = this.onOpen.bind(this);
|
|
88
79
|
this.webSocket.onerror = this.onError.bind(this);
|
|
89
80
|
this.webSocket.onmessage = this.handleMessageReceived.bind(this);
|
|
90
81
|
this.webSocket.onclose = this.onClose.bind(this);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
if (
|
|
82
|
+
}
|
|
83
|
+
disconnect() {
|
|
84
|
+
if (_.isNil(this.webSocket)) {
|
|
94
85
|
return;
|
|
95
86
|
}
|
|
96
87
|
this.clearKeepalive();
|
|
@@ -103,24 +94,22 @@ var MarketDataStreamer = /** @class */ (function () {
|
|
|
103
94
|
this.openChannels.clear();
|
|
104
95
|
this.subscriptionsQueue.clear();
|
|
105
96
|
this.authState = '';
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
if (options === void 0) { options = { subscriptionTypes: AllSubscriptionTypes, channelId: DefaultChannelId }; }
|
|
110
|
-
var subscriptionTypes = options.subscriptionTypes;
|
|
97
|
+
}
|
|
98
|
+
addSubscription(symbol, options = { subscriptionTypes: AllSubscriptionTypes, channelId: DefaultChannelId }) {
|
|
99
|
+
let { subscriptionTypes } = options;
|
|
111
100
|
// Don't allow candle subscriptions in this method. Use addCandleSubscription instead
|
|
112
|
-
subscriptionTypes =
|
|
113
|
-
|
|
101
|
+
subscriptionTypes = _.without(subscriptionTypes, MarketDataSubscriptionType.Candle);
|
|
102
|
+
const isOpen = this.isChannelOpened(options.channelId);
|
|
114
103
|
if (isOpen) {
|
|
115
104
|
this.sendSubscriptionMessage(symbol, subscriptionTypes, options.channelId, 'add');
|
|
116
105
|
}
|
|
117
106
|
else {
|
|
118
|
-
this.queueSubscription(symbol, { subscriptionTypes
|
|
107
|
+
this.queueSubscription(symbol, { subscriptionTypes, channelId: options.channelId });
|
|
119
108
|
}
|
|
120
|
-
return
|
|
121
|
-
|
|
109
|
+
return () => {
|
|
110
|
+
this.removeSubscription(symbol, options);
|
|
122
111
|
};
|
|
123
|
-
}
|
|
112
|
+
}
|
|
124
113
|
/**
|
|
125
114
|
* Adds a candle subscription (historical data)
|
|
126
115
|
* @param streamerSymbol Get this from an instrument's streamer-symbol json response field
|
|
@@ -130,49 +119,45 @@ var MarketDataStreamer = /** @class */ (function () {
|
|
|
130
119
|
* From there, setting fromTime to 24 hours ago would give you 24 hours of data grouped in 5 minute intervals
|
|
131
120
|
* @returns
|
|
132
121
|
*/
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
var subscriptionTypes = [MarketDataSubscriptionType.Candle];
|
|
137
|
-
var channelId = (_a = options.channelId) !== null && _a !== void 0 ? _a : DefaultChannelId;
|
|
122
|
+
addCandleSubscription(streamerSymbol, fromTime, options) {
|
|
123
|
+
const subscriptionTypes = [MarketDataSubscriptionType.Candle];
|
|
124
|
+
const channelId = options.channelId ?? DefaultChannelId;
|
|
138
125
|
// Example: AAPL{=5m} where each candle represents 5 minutes of data
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
126
|
+
const candleSymbol = `${streamerSymbol}{=${options.period}${options.type}}`;
|
|
127
|
+
const isOpen = this.isChannelOpened(channelId);
|
|
128
|
+
const subscriptionArgs = { fromTime };
|
|
142
129
|
if (isOpen) {
|
|
143
130
|
this.sendSubscriptionMessage(candleSymbol, subscriptionTypes, channelId, 'add', subscriptionArgs);
|
|
144
131
|
}
|
|
145
132
|
else {
|
|
146
|
-
this.queueSubscription(candleSymbol, { subscriptionTypes
|
|
133
|
+
this.queueSubscription(candleSymbol, { subscriptionTypes, channelId, subscriptionArgs });
|
|
147
134
|
}
|
|
148
|
-
return
|
|
149
|
-
|
|
135
|
+
return () => {
|
|
136
|
+
this.removeSubscription(candleSymbol, { subscriptionTypes, channelId });
|
|
150
137
|
};
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
var isOpen = this.isChannelOpened(channelId);
|
|
138
|
+
}
|
|
139
|
+
removeSubscription(symbol, options = { subscriptionTypes: AllSubscriptionTypes, channelId: DefaultChannelId }) {
|
|
140
|
+
const { subscriptionTypes, channelId } = options;
|
|
141
|
+
const isOpen = this.isChannelOpened(channelId);
|
|
156
142
|
if (isOpen) {
|
|
157
143
|
this.sendSubscriptionMessage(symbol, subscriptionTypes, channelId, 'remove');
|
|
158
144
|
}
|
|
159
145
|
else {
|
|
160
146
|
this.dequeueSubscription(symbol, options);
|
|
161
147
|
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
var isOpen = this.isChannelOpened(channelId);
|
|
148
|
+
}
|
|
149
|
+
removeAllSubscriptions(channelId = DefaultChannelId) {
|
|
150
|
+
const isOpen = this.isChannelOpened(channelId);
|
|
166
151
|
if (isOpen) {
|
|
167
152
|
this.sendMessage({ "type": "FEED_SUBSCRIPTION", "channel": channelId, reset: true });
|
|
168
153
|
}
|
|
169
154
|
else {
|
|
170
155
|
this.subscriptionsQueue.set(channelId, []);
|
|
171
156
|
}
|
|
172
|
-
}
|
|
173
|
-
|
|
157
|
+
}
|
|
158
|
+
openFeedChannel(channelId) {
|
|
174
159
|
if (!this.isReadyToOpenChannels) {
|
|
175
|
-
throw new Error(
|
|
160
|
+
throw new Error(`Unable to open channel ${channelId} due to DxLink authorization state: ${this.authState}`);
|
|
176
161
|
}
|
|
177
162
|
if (this.isChannelOpened(channelId)) {
|
|
178
163
|
return;
|
|
@@ -185,64 +170,55 @@ var MarketDataStreamer = /** @class */ (function () {
|
|
|
185
170
|
"contract": "AUTO"
|
|
186
171
|
}
|
|
187
172
|
});
|
|
188
|
-
}
|
|
189
|
-
|
|
173
|
+
}
|
|
174
|
+
isChannelOpened(channelId) {
|
|
190
175
|
return this.isConnected && this.openChannels.has(channelId);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
Object.defineProperty(MarketDataStreamer.prototype, "isConnected", {
|
|
200
|
-
get: function () {
|
|
201
|
-
return !lodash_1.default.isNil(this.webSocket);
|
|
202
|
-
},
|
|
203
|
-
enumerable: false,
|
|
204
|
-
configurable: true
|
|
205
|
-
});
|
|
206
|
-
MarketDataStreamer.prototype.scheduleKeepalive = function () {
|
|
176
|
+
}
|
|
177
|
+
get isReadyToOpenChannels() {
|
|
178
|
+
return this.isConnected && this.isDxLinkAuthorized;
|
|
179
|
+
}
|
|
180
|
+
get isConnected() {
|
|
181
|
+
return !_.isNil(this.webSocket);
|
|
182
|
+
}
|
|
183
|
+
scheduleKeepalive() {
|
|
207
184
|
this.keepaliveIntervalId = setInterval(this.sendKeepalive, KeepaliveInterval);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
if (
|
|
185
|
+
}
|
|
186
|
+
sendKeepalive() {
|
|
187
|
+
if (_.isNil(this.keepaliveIntervalId)) {
|
|
211
188
|
return;
|
|
212
189
|
}
|
|
213
190
|
this.sendMessage({
|
|
214
191
|
"type": "KEEPALIVE",
|
|
215
192
|
"channel": 0
|
|
216
193
|
});
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
if (
|
|
194
|
+
}
|
|
195
|
+
queueSubscription(symbol, options) {
|
|
196
|
+
const { subscriptionTypes, channelId, subscriptionArgs } = options;
|
|
197
|
+
let queue = this.subscriptionsQueue.get(options.channelId);
|
|
198
|
+
if (_.isNil(queue)) {
|
|
222
199
|
queue = [];
|
|
223
200
|
this.subscriptionsQueue.set(channelId, queue);
|
|
224
201
|
}
|
|
225
|
-
queue.push({ symbol
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
if (
|
|
202
|
+
queue.push({ symbol, subscriptionTypes, subscriptionArgs });
|
|
203
|
+
}
|
|
204
|
+
dequeueSubscription(symbol, options) {
|
|
205
|
+
const queue = this.subscriptionsQueue.get(options.channelId);
|
|
206
|
+
if (_.isNil(queue) || _.isEmpty(queue)) {
|
|
230
207
|
return;
|
|
231
208
|
}
|
|
232
|
-
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
if (lodash_1.default.isNil(queuedSubscriptions)) {
|
|
209
|
+
_.remove(queue, (queueItem) => queueItem.symbol === symbol);
|
|
210
|
+
}
|
|
211
|
+
sendQueuedSubscriptions(channelId) {
|
|
212
|
+
const queuedSubscriptions = this.subscriptionsQueue.get(channelId);
|
|
213
|
+
if (_.isNil(queuedSubscriptions)) {
|
|
238
214
|
return;
|
|
239
215
|
}
|
|
240
216
|
// Clear out queue immediately
|
|
241
217
|
this.subscriptionsQueue.set(channelId, []);
|
|
242
|
-
queuedSubscriptions.forEach(
|
|
243
|
-
|
|
218
|
+
queuedSubscriptions.forEach(subscription => {
|
|
219
|
+
this.sendSubscriptionMessage(subscription.symbol, subscription.subscriptionTypes, channelId, 'add', subscription.subscriptionArgs);
|
|
244
220
|
});
|
|
245
|
-
}
|
|
221
|
+
}
|
|
246
222
|
/**
|
|
247
223
|
*
|
|
248
224
|
* @param {*} symbol
|
|
@@ -250,22 +226,19 @@ var MarketDataStreamer = /** @class */ (function () {
|
|
|
250
226
|
* @param {*} channelId
|
|
251
227
|
* @param {*} direction add or remove
|
|
252
228
|
*/
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
_a));
|
|
263
|
-
};
|
|
264
|
-
MarketDataStreamer.prototype.onError = function (error) {
|
|
229
|
+
sendSubscriptionMessage(symbol, subscriptionTypes, channelId, direction, subscriptionArgs = {}) {
|
|
230
|
+
const subscriptions = subscriptionTypes.map(type => (Object.assign({}, { "symbol": symbol, "type": type }, subscriptionArgs ?? {})));
|
|
231
|
+
this.sendMessage({
|
|
232
|
+
"type": "FEED_SUBSCRIPTION",
|
|
233
|
+
"channel": channelId,
|
|
234
|
+
[direction]: subscriptions
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
onError(error) {
|
|
265
238
|
console.error('Error received: ', error);
|
|
266
239
|
this.notifyErrorListeners(error);
|
|
267
|
-
}
|
|
268
|
-
|
|
240
|
+
}
|
|
241
|
+
onOpen() {
|
|
269
242
|
this.openChannels.clear();
|
|
270
243
|
this.sendMessage({
|
|
271
244
|
"type": "SETUP",
|
|
@@ -275,28 +248,23 @@ var MarketDataStreamer = /** @class */ (function () {
|
|
|
275
248
|
"version": "0.1-js/1.0.0"
|
|
276
249
|
});
|
|
277
250
|
this.scheduleKeepalive();
|
|
278
|
-
}
|
|
279
|
-
|
|
251
|
+
}
|
|
252
|
+
onClose() {
|
|
280
253
|
this.webSocket = null;
|
|
281
254
|
this.clearKeepalive();
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
if (!
|
|
255
|
+
}
|
|
256
|
+
clearKeepalive() {
|
|
257
|
+
if (!_.isNil(this.keepaliveIntervalId)) {
|
|
285
258
|
clearInterval(this.keepaliveIntervalId);
|
|
286
259
|
}
|
|
287
260
|
this.keepaliveIntervalId = null;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
enumerable: false,
|
|
294
|
-
configurable: true
|
|
295
|
-
});
|
|
296
|
-
MarketDataStreamer.prototype.handleAuthStateMessage = function (data) {
|
|
297
|
-
var _this = this;
|
|
261
|
+
}
|
|
262
|
+
get isDxLinkAuthorized() {
|
|
263
|
+
return this.authState === 'AUTHORIZED';
|
|
264
|
+
}
|
|
265
|
+
handleAuthStateMessage(data) {
|
|
298
266
|
this.authState = data.state;
|
|
299
|
-
this.authStateListeners.forEach(
|
|
267
|
+
this.authStateListeners.forEach(listener => listener(this.isDxLinkAuthorized));
|
|
300
268
|
if (this.isDxLinkAuthorized) {
|
|
301
269
|
this.openFeedChannel(DefaultChannelId);
|
|
302
270
|
}
|
|
@@ -307,24 +275,24 @@ var MarketDataStreamer = /** @class */ (function () {
|
|
|
307
275
|
"token": this.token
|
|
308
276
|
});
|
|
309
277
|
}
|
|
310
|
-
}
|
|
311
|
-
|
|
278
|
+
}
|
|
279
|
+
handleChannelOpened(jsonData) {
|
|
312
280
|
this.openChannels.add(jsonData.channel);
|
|
313
281
|
this.sendQueuedSubscriptions(jsonData.channel);
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
this.dataListeners.forEach(
|
|
317
|
-
if (listenerData.channelId === jsonData.channel ||
|
|
282
|
+
}
|
|
283
|
+
notifyListeners(jsonData) {
|
|
284
|
+
this.dataListeners.forEach(listenerData => {
|
|
285
|
+
if (listenerData.channelId === jsonData.channel || _.isNil(listenerData.channelId)) {
|
|
318
286
|
listenerData.listener(jsonData);
|
|
319
287
|
}
|
|
320
288
|
});
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
this.errorListeners.forEach(
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
289
|
+
}
|
|
290
|
+
notifyErrorListeners(error) {
|
|
291
|
+
this.errorListeners.forEach(listener => listener(error));
|
|
292
|
+
}
|
|
293
|
+
handleMessageReceived(data) {
|
|
294
|
+
const messageData = _.get(data, 'data', '{}');
|
|
295
|
+
const jsonData = JSON.parse(messageData);
|
|
328
296
|
switch (jsonData.type) {
|
|
329
297
|
case 'AUTH_STATE':
|
|
330
298
|
this.handleAuthStateMessage(jsonData);
|
|
@@ -336,13 +304,12 @@ var MarketDataStreamer = /** @class */ (function () {
|
|
|
336
304
|
this.notifyListeners(jsonData);
|
|
337
305
|
break;
|
|
338
306
|
}
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
if (
|
|
307
|
+
}
|
|
308
|
+
sendMessage(json) {
|
|
309
|
+
if (_.isNil(this.webSocket)) {
|
|
342
310
|
return;
|
|
343
311
|
}
|
|
344
312
|
this.webSocket.send(JSON.stringify(json));
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
exports.default = MarketDataStreamer;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=market-data-streamer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market-data-streamer.js","sourceRoot":"","sources":["../lib/market-data-streamer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tastytrade-session.d.ts","sourceRoot":"","sources":["../../lib/models/tastytrade-session.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAClC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IAE/B,IAAI,OAAO,YAEV;IAED,KAAK;CAGR"}
|
|
@@ -1,23 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
var lodash_1 = __importDefault(require("lodash"));
|
|
7
|
-
var TastytradeSession = /** @class */ (function () {
|
|
8
|
-
function TastytradeSession() {
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
export default class TastytradeSession {
|
|
3
|
+
constructor() {
|
|
9
4
|
this.authToken = null;
|
|
10
5
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
enumerable: false,
|
|
16
|
-
configurable: true
|
|
17
|
-
});
|
|
18
|
-
TastytradeSession.prototype.clear = function () {
|
|
6
|
+
get isValid() {
|
|
7
|
+
return !_.isNil(this.authToken);
|
|
8
|
+
}
|
|
9
|
+
clear() {
|
|
19
10
|
this.authToken = null;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
exports.default = TastytradeSession;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=tastytrade-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tastytrade-session.js","sourceRoot":"","sources":["../../lib/models/tastytrade-session.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AAEtB,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAAtC;QACI,cAAS,GAAkB,IAAI,CAAA;IASnC,CAAC;IAPG,IAAI,OAAO;QACT,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACjC,CAAC;IAED,KAAK;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACzB,CAAC;CACJ"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import TastytradeHttpClient from "./tastytrade-http-client";
|
|
1
|
+
import TastytradeHttpClient from "./tastytrade-http-client.js";
|
|
2
2
|
export default class AccountStatusService {
|
|
3
3
|
private httpClient;
|
|
4
4
|
constructor(httpClient: TastytradeHttpClient);
|
|
5
5
|
getAccountStatus(accountNumber: string): Promise<any>;
|
|
6
6
|
}
|
|
7
|
+
//# sourceMappingURL=account-status-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-status-service.d.ts","sourceRoot":"","sources":["../../lib/services/account-status-service.ts"],"names":[],"mappings":"AACA,OAAO,oBAAoB,MAAM,6BAA6B,CAAC;AAG/D,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACzB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,oBAAoB;IAI9C,gBAAgB,CAAC,aAAa,EAAE,MAAM;CAK/C"}
|
|
@@ -1,64 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
-
};
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
var response_util_1 = __importDefault(require("../utils/response-util"));
|
|
1
|
+
import extractResponseData from "../utils/response-util.js";
|
|
2
|
+
import TastytradeHttpClient from "./tastytrade-http-client.js";
|
|
43
3
|
// create the central class that aggregates all services
|
|
44
|
-
|
|
45
|
-
|
|
4
|
+
export default class AccountStatusService {
|
|
5
|
+
constructor(httpClient) {
|
|
46
6
|
this.httpClient = httpClient;
|
|
47
7
|
}
|
|
48
8
|
//Trading Status: Allows an API client to request information about the basic trade status of an account. This includes information about the strategies an account can trade.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
accountStatus = (_a.sent());
|
|
57
|
-
return [2 /*return*/, (0, response_util_1.default)(accountStatus)];
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
};
|
|
62
|
-
return AccountStatusService;
|
|
63
|
-
}());
|
|
64
|
-
exports.default = AccountStatusService;
|
|
9
|
+
async getAccountStatus(accountNumber) {
|
|
10
|
+
//Returns current trading status for an account.
|
|
11
|
+
const accountStatus = (await this.httpClient.getData(`/accounts/${accountNumber}/trading-status`, {}, {}));
|
|
12
|
+
return extractResponseData(accountStatus);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=account-status-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-status-service.js","sourceRoot":"","sources":["../../lib/services/account-status-service.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAC5D,OAAO,oBAAoB,MAAM,6BAA6B,CAAC;AAE/D,wDAAwD;AACxD,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACrC,YAAoB,UAAgC;QAAhC,eAAU,GAAV,UAAU,CAAsB;IACpD,CAAC;IAED,+KAA+K;IAC/K,KAAK,CAAC,gBAAgB,CAAC,aAAqB;QACxC,gDAAgD;QAChD,MAAM,aAAa,GAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,aAAa,iBAAiB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QAC3G,OAAO,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAC7C,CAAC;CACJ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import TastytradeHttpClient from "./tastytrade-http-client";
|
|
1
|
+
import TastytradeHttpClient from "./tastytrade-http-client.js";
|
|
2
2
|
export default class AccountsAndCustomersService {
|
|
3
3
|
private httpClient;
|
|
4
4
|
constructor(httpClient: TastytradeHttpClient);
|
|
@@ -8,3 +8,4 @@ export default class AccountsAndCustomersService {
|
|
|
8
8
|
getFullCustomerAccountResource(accountNumber: string): Promise<any>;
|
|
9
9
|
getApiQuoteToken(): Promise<any>;
|
|
10
10
|
}
|
|
11
|
+
//# sourceMappingURL=accounts-and-customers-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounts-and-customers-service.d.ts","sourceRoot":"","sources":["../../lib/services/accounts-and-customers-service.ts"],"names":[],"mappings":"AACA,OAAO,oBAAoB,MAAM,6BAA6B,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,2BAA2B;IAChC,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,oBAAoB;IAE9C,mBAAmB;IAMnB,mBAAmB;IAKnB,2BAA2B;IAK3B,8BAA8B,CAAC,aAAa,EAAE,MAAM;IAOpD,gBAAgB;CAIzB"}
|