@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.
Files changed (112) hide show
  1. package/.vscode/launch.json +29 -0
  2. package/CHANGELOG.md +41 -0
  3. package/CODEOWNERS +1 -0
  4. package/README.md +64 -31
  5. package/dist/account-streamer.d.ts +10 -8
  6. package/dist/account-streamer.d.ts.map +1 -0
  7. package/dist/account-streamer.js +147 -229
  8. package/dist/account-streamer.js.map +1 -0
  9. package/dist/logger.d.ts +20 -0
  10. package/dist/logger.d.ts.map +1 -0
  11. package/dist/logger.js +36 -0
  12. package/dist/logger.js.map +1 -0
  13. package/dist/market-data-streamer.d.ts +7 -5
  14. package/dist/market-data-streamer.d.ts.map +1 -0
  15. package/dist/market-data-streamer.js +139 -172
  16. package/dist/market-data-streamer.js.map +1 -0
  17. package/dist/models/tastytrade-session.d.ts +1 -0
  18. package/dist/models/tastytrade-session.d.ts.map +1 -0
  19. package/dist/models/tastytrade-session.js +10 -20
  20. package/dist/models/tastytrade-session.js.map +1 -0
  21. package/dist/services/account-status-service.d.ts +2 -1
  22. package/dist/services/account-status-service.d.ts.map +1 -0
  23. package/dist/services/account-status-service.js +11 -60
  24. package/dist/services/account-status-service.js.map +1 -0
  25. package/dist/services/accounts-and-customers-service.d.ts +2 -1
  26. package/dist/services/accounts-and-customers-service.d.ts.map +1 -0
  27. package/dist/services/accounts-and-customers-service.js +29 -112
  28. package/dist/services/accounts-and-customers-service.js.map +1 -0
  29. package/dist/services/balances-and-positions-service.d.ts +2 -1
  30. package/dist/services/balances-and-positions-service.d.ts.map +1 -0
  31. package/dist/services/balances-and-positions-service.js +22 -88
  32. package/dist/services/balances-and-positions-service.js.map +1 -0
  33. package/dist/services/instruments-service.d.ts +2 -1
  34. package/dist/services/instruments-service.d.ts.map +1 -0
  35. package/dist/services/instruments-service.js +130 -365
  36. package/dist/services/instruments-service.js.map +1 -0
  37. package/dist/services/margin-requirements-service.d.ts +2 -1
  38. package/dist/services/margin-requirements-service.d.ts.map +1 -0
  39. package/dist/services/margin-requirements-service.js +16 -73
  40. package/dist/services/margin-requirements-service.js.map +1 -0
  41. package/dist/services/market-metrics-service.d.ts +2 -1
  42. package/dist/services/market-metrics-service.d.ts.map +1 -0
  43. package/dist/services/market-metrics-service.js +21 -88
  44. package/dist/services/market-metrics-service.js.map +1 -0
  45. package/dist/services/net-liquidating-value-history-service.d.ts +2 -1
  46. package/dist/services/net-liquidating-value-history-service.d.ts.map +1 -0
  47. package/dist/services/net-liquidating-value-history-service.js +16 -74
  48. package/dist/services/net-liquidating-value-history-service.js.map +1 -0
  49. package/dist/services/orders-service.d.ts +2 -1
  50. package/dist/services/orders-service.d.ts.map +1 -0
  51. package/dist/services/orders-service.js +76 -231
  52. package/dist/services/orders-service.js.map +1 -0
  53. package/dist/services/risk-parameters-service.d.ts +2 -1
  54. package/dist/services/risk-parameters-service.d.ts.map +1 -0
  55. package/dist/services/risk-parameters-service.js +16 -73
  56. package/dist/services/risk-parameters-service.js.map +1 -0
  57. package/dist/services/session-service.d.ts +2 -1
  58. package/dist/services/session-service.d.ts.map +1 -0
  59. package/dist/services/session-service.js +30 -110
  60. package/dist/services/session-service.js.map +1 -0
  61. package/dist/services/symbol-search-service.d.ts +2 -1
  62. package/dist/services/symbol-search-service.d.ts.map +1 -0
  63. package/dist/services/symbol-search-service.js +11 -60
  64. package/dist/services/symbol-search-service.js.map +1 -0
  65. package/dist/services/tastytrade-http-client.d.ts +5 -3
  66. package/dist/services/tastytrade-http-client.d.ts.map +1 -0
  67. package/dist/services/tastytrade-http-client.js +53 -134
  68. package/dist/services/tastytrade-http-client.js.map +1 -0
  69. package/dist/services/transactions-service.d.ts +2 -1
  70. package/dist/services/transactions-service.d.ts.map +1 -0
  71. package/dist/services/transactions-service.js +22 -87
  72. package/dist/services/transactions-service.js.map +1 -0
  73. package/dist/services/watchlists-service.d.ts +2 -1
  74. package/dist/services/watchlists-service.d.ts.map +1 -0
  75. package/dist/services/watchlists-service.js +51 -165
  76. package/dist/services/watchlists-service.js.map +1 -0
  77. package/dist/tastytrade-api.d.ts +32 -22
  78. package/dist/tastytrade-api.d.ts.map +1 -0
  79. package/dist/tastytrade-api.js +44 -79
  80. package/dist/tastytrade-api.js.map +1 -0
  81. package/dist/utils/constants.d.ts +1 -0
  82. package/dist/utils/constants.d.ts.map +1 -0
  83. package/dist/utils/constants.js +2 -4
  84. package/dist/utils/constants.js.map +1 -0
  85. package/dist/utils/json-util.d.ts +4 -3
  86. package/dist/utils/json-util.d.ts.map +1 -0
  87. package/dist/utils/json-util.js +14 -25
  88. package/dist/utils/json-util.js.map +1 -0
  89. package/dist/utils/response-util.d.ts +1 -0
  90. package/dist/utils/response-util.d.ts.map +1 -0
  91. package/dist/utils/response-util.js +7 -12
  92. package/dist/utils/response-util.js.map +1 -0
  93. package/lib/account-streamer.ts +19 -12
  94. package/lib/logger.ts +48 -0
  95. package/lib/market-data-streamer.ts +5 -1
  96. package/lib/services/account-status-service.ts +2 -2
  97. package/lib/services/accounts-and-customers-service.ts +2 -2
  98. package/lib/services/balances-and-positions-service.ts +2 -2
  99. package/lib/services/instruments-service.ts +2 -2
  100. package/lib/services/margin-requirements-service.ts +2 -2
  101. package/lib/services/market-metrics-service.ts +2 -2
  102. package/lib/services/net-liquidating-value-history-service.ts +2 -2
  103. package/lib/services/orders-service.ts +2 -2
  104. package/lib/services/risk-parameters-service.ts +2 -2
  105. package/lib/services/session-service.ts +2 -2
  106. package/lib/services/symbol-search-service.ts +2 -2
  107. package/lib/services/tastytrade-http-client.ts +21 -16
  108. package/lib/services/transactions-service.ts +2 -2
  109. package/lib/services/watchlists-service.ts +2 -2
  110. package/lib/tastytrade-api.ts +35 -22
  111. package/package.json +14 -9
  112. package/tsconfig.json +12 -11
@@ -1,55 +1,14 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
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
- exports.AccountStreamer = exports.STREAMER_STATE = void 0;
43
- var isomorphic_ws_1 = __importDefault(require("isomorphic-ws"));
44
- var lodash_1 = __importDefault(require("lodash"));
45
- var json_util_1 = require("./utils/json-util");
46
- var constants_1 = require("./utils/constants");
47
- var STREAMER_STATE;
1
+ import WebSocket from 'isomorphic-ws';
2
+ import _ from 'lodash';
3
+ import { JsonBuilder } from './utils/json-util.js';
4
+ import TastytradeSession from './models/tastytrade-session.js';
5
+ import { MinTlsVersion } from './utils/constants.js';
6
+ export var STREAMER_STATE;
48
7
  (function (STREAMER_STATE) {
49
8
  STREAMER_STATE[STREAMER_STATE["Open"] = 0] = "Open";
50
9
  STREAMER_STATE[STREAMER_STATE["Closed"] = 1] = "Closed";
51
10
  STREAMER_STATE[STREAMER_STATE["Error"] = 2] = "Error";
52
- })(STREAMER_STATE = exports.STREAMER_STATE || (exports.STREAMER_STATE = {}));
11
+ })(STREAMER_STATE || (STREAMER_STATE = {}));
53
12
  var MessageAction;
54
13
  (function (MessageAction) {
55
14
  MessageAction["ACCOUNT_SUBSCRIBE"] = "account-subscribe";
@@ -59,23 +18,22 @@ var MessageAction;
59
18
  MessageAction["QUOTE_ALERTS_SUBSCRIBE"] = "quote-alerts-subscribe";
60
19
  MessageAction["USER_MESSAGE_SUBSCRIBE"] = "user-message-subscribe";
61
20
  })(MessageAction || (MessageAction = {}));
62
- var HEARTBEAT_INTERVAL = 20000; // 20 seconds
63
- var SOURCE = 'tastytrade-api-js-sdk';
64
- var REQUEST_ID = 'request-id';
21
+ const HEARTBEAT_INTERVAL = 20000; // 20 seconds
22
+ const SOURCE = 'tastytrade-api-js-sdk';
23
+ const REQUEST_ID = 'request-id';
65
24
  function removeElement(array, element) {
66
- var index = array.indexOf(element);
25
+ const index = array.indexOf(element);
67
26
  if (index < 0) {
68
27
  return;
69
28
  }
70
29
  array.splice(index, 1);
71
30
  }
72
- var AccountStreamer = /** @class */ (function () {
31
+ export class AccountStreamer {
73
32
  /**
74
33
  *
75
34
  * @param url Url of the account streamer service
76
35
  */
77
- function AccountStreamer(url, session) {
78
- var _this = this;
36
+ constructor(url, session, logger) {
79
37
  this.url = url;
80
38
  this.session = session;
81
39
  this.websocket = null;
@@ -91,71 +49,69 @@ var AccountStreamer = /** @class */ (function () {
91
49
  this.streamerMessageObservers = [];
92
50
  this.startPromise = null;
93
51
  this.requestPromises = new Map();
94
- this.logger = console;
95
- this.sendHeartbeat = function () {
96
- _this.clearHeartbeatTimerId();
97
- _this.send(new json_util_1.JsonBuilder({ action: MessageAction.HEARTBEAT }));
52
+ this.sendHeartbeat = () => {
53
+ this.clearHeartbeatTimerId();
54
+ this.send(new JsonBuilder({ action: MessageAction.HEARTBEAT }));
98
55
  };
99
- this.handleOpen = function (event) {
100
- if (_this.startResolve === null) {
56
+ this.handleOpen = (_event) => {
57
+ if (this.startResolve === null) {
101
58
  return;
102
59
  }
103
- _this.logger.info('AccountStreamer opened', event);
104
- _this.startResolve(true);
105
- _this.startResolve = _this.startReject = null;
106
- _this.streamerState = STREAMER_STATE.Open;
107
- _this.sendQueuedMessages();
108
- _this.scheduleHeartbeatTimer();
60
+ this.logger.info('AccountStreamer opened');
61
+ this.startResolve(true);
62
+ this.startResolve = this.startReject = null;
63
+ this.streamerState = STREAMER_STATE.Open;
64
+ this.sendQueuedMessages();
65
+ this.scheduleHeartbeatTimer();
109
66
  };
110
- this.handleClose = function (event) {
111
- _this.logger.info('AccountStreamer closed', event);
112
- if (_this.websocket === null) {
67
+ this.handleClose = (event) => {
68
+ this.logger.info('AccountStreamer closed');
69
+ if (this.websocket === null) {
113
70
  return;
114
71
  }
115
- _this.lastCloseEvent = event;
116
- _this.streamerState = STREAMER_STATE.Closed;
117
- _this.teardown();
72
+ this.lastCloseEvent = event;
73
+ this.streamerState = STREAMER_STATE.Closed;
74
+ this.teardown();
118
75
  };
119
- this.handleError = function (event) {
120
- if (_this.websocket === null) {
76
+ this.handleError = (event) => {
77
+ if (this.websocket === null) {
121
78
  return;
122
79
  }
123
- _this.logger.warn('AccountStreamer error', event);
124
- _this.lastErrorEvent = event;
125
- _this.streamerState = STREAMER_STATE.Error;
126
- if (_this.startReject !== null) {
127
- _this.startReject(new Error('Failed to connect'));
128
- _this.startReject = _this.startResolve = null;
80
+ this.logger.error('AccountStreamer error', event);
81
+ this.lastErrorEvent = event;
82
+ this.streamerState = STREAMER_STATE.Error;
83
+ if (this.startReject !== null) {
84
+ this.startReject(new Error('Failed to connect'));
85
+ this.startReject = this.startResolve = null;
129
86
  }
130
- _this.teardown();
87
+ this.teardown();
131
88
  };
132
- this.handleMessage = function (event) {
133
- var json = JSON.parse(event.data);
89
+ this.handleMessage = (event) => {
90
+ const json = JSON.parse(event.data);
134
91
  if (json.results !== undefined) {
135
- var results = json.results;
136
- for (var _i = 0, results_1 = results; _i < results_1.length; _i++) {
137
- var result = results_1[_i];
138
- _this.handleOneMessage(result);
92
+ const results = json.results;
93
+ for (const result of results) {
94
+ this.handleOneMessage(result);
139
95
  }
140
96
  }
141
97
  else {
142
- _this.handleOneMessage(json);
98
+ this.handleOneMessage(json);
143
99
  }
144
100
  };
145
- this.handleOneMessage = function (json) {
146
- _this.logger.info(json);
147
- var action = json.action;
148
- _this.streamerMessageObservers.forEach(function (observer) { return observer(json); });
101
+ this.handleOneMessage = (json) => {
102
+ this.logger.info('Message received: ', json);
103
+ const action = json.action;
104
+ this.streamerMessageObservers.forEach(observer => observer(json));
149
105
  if (action) {
150
106
  if (action === MessageAction.HEARTBEAT) {
151
107
  // schedule next heartbeat
152
- _this.scheduleHeartbeatTimer();
108
+ this.scheduleHeartbeatTimer();
153
109
  }
154
- var promiseCallbacks = _this.requestPromises.get(json[REQUEST_ID]);
110
+ const promiseCallbacks = this.requestPromises.get(json[REQUEST_ID]);
155
111
  if (promiseCallbacks) {
156
- var resolve = promiseCallbacks[0], reject = promiseCallbacks[1];
157
- var status_1 = json.status;
158
- if (status_1 === 'ok') {
112
+ const [resolve, reject] = promiseCallbacks;
113
+ const status = json.status;
114
+ if (status === 'ok') {
159
115
  resolve(json.action);
160
116
  }
161
117
  else {
@@ -165,97 +121,71 @@ var AccountStreamer = /** @class */ (function () {
165
121
  return;
166
122
  }
167
123
  };
124
+ this.logger = logger;
125
+ }
126
+ get streamerState() {
127
+ return this._streamerState;
128
+ }
129
+ set streamerState(streamerState) {
130
+ this._streamerState = streamerState;
131
+ this.streamerStateObservers.forEach(observer => {
132
+ observer(streamerState);
133
+ });
134
+ }
135
+ get authToken() {
136
+ return this.session.authToken;
168
137
  }
169
- Object.defineProperty(AccountStreamer.prototype, "streamerState", {
170
- get: function () {
171
- return this._streamerState;
172
- },
173
- set: function (streamerState) {
174
- this._streamerState = streamerState;
175
- this.streamerStateObservers.forEach(function (observer) {
176
- observer(streamerState);
177
- });
178
- },
179
- enumerable: false,
180
- configurable: true
181
- });
182
- Object.defineProperty(AccountStreamer.prototype, "authToken", {
183
- get: function () {
184
- return this.session.authToken;
185
- },
186
- enumerable: false,
187
- configurable: true
188
- });
189
138
  /**
190
139
  * Adds a custom callback that fires when the streamer state changes
191
140
  * @param observer
192
141
  * @returns
193
142
  */
194
- AccountStreamer.prototype.addStreamerStateObserver = function (observer) {
195
- var _this = this;
143
+ addStreamerStateObserver(observer) {
196
144
  this.streamerStateObservers.push(observer);
197
- return function () {
198
- removeElement(_this.streamerStateObservers, observer);
145
+ return () => {
146
+ removeElement(this.streamerStateObservers, observer);
199
147
  };
200
- };
201
- Object.defineProperty(AccountStreamer.prototype, "isOpen", {
202
- get: function () {
203
- return this.streamerState === STREAMER_STATE.Open;
204
- },
205
- enumerable: false,
206
- configurable: true
207
- });
208
- Object.defineProperty(AccountStreamer.prototype, "isClosed", {
209
- get: function () {
210
- return this.streamerState === STREAMER_STATE.Closed;
211
- },
212
- enumerable: false,
213
- configurable: true
214
- });
215
- Object.defineProperty(AccountStreamer.prototype, "isError", {
216
- get: function () {
217
- return this.streamerState === STREAMER_STATE.Error;
218
- },
219
- enumerable: false,
220
- configurable: true
221
- });
148
+ }
149
+ get isOpen() {
150
+ return this.streamerState === STREAMER_STATE.Open;
151
+ }
152
+ get isClosed() {
153
+ return this.streamerState === STREAMER_STATE.Closed;
154
+ }
155
+ get isError() {
156
+ return this.streamerState === STREAMER_STATE.Error;
157
+ }
222
158
  /**
223
159
  * Entrypoint for beginning a websocket session
224
160
  * You must have a valid tastytrade authToken before calling this method
225
161
  * @returns Promise that resolves when the "opened" message is received (see handleOpen)
226
162
  */
227
- AccountStreamer.prototype.start = function () {
228
- return __awaiter(this, void 0, void 0, function () {
229
- var websocket;
230
- var _this = this;
231
- return __generator(this, function (_a) {
232
- if (this.startPromise !== null) {
233
- return [2 /*return*/, this.startPromise];
234
- }
235
- this.websocket = new isomorphic_ws_1.default(this.url, [], {
236
- minVersion: constants_1.MinTlsVersion // TLS Config
237
- });
238
- websocket = this.websocket;
239
- this.lastCloseEvent = null;
240
- this.lastErrorEvent = null;
241
- websocket.addEventListener('open', this.handleOpen);
242
- websocket.addEventListener('close', this.handleClose);
243
- websocket.addEventListener('error', this.handleError);
244
- websocket.addEventListener('message', this.handleMessage);
245
- this.logger.info('AccountStreamer - starting');
246
- this.startPromise = new Promise(function (resolve, reject) {
247
- _this.startResolve = resolve;
248
- _this.startReject = reject;
249
- });
250
- return [2 /*return*/, this.startPromise];
251
- });
163
+ async start() {
164
+ if (this.startPromise !== null) {
165
+ return this.startPromise;
166
+ }
167
+ this.websocket = new WebSocket(this.url, [], {
168
+ minVersion: MinTlsVersion // TLS Config
252
169
  });
253
- };
254
- AccountStreamer.prototype.stop = function () {
170
+ const websocket = this.websocket;
171
+ this.lastCloseEvent = null;
172
+ this.lastErrorEvent = null;
173
+ websocket.addEventListener('open', this.handleOpen);
174
+ websocket.addEventListener('close', this.handleClose);
175
+ websocket.addEventListener('error', this.handleError);
176
+ websocket.addEventListener('message', this.handleMessage);
177
+ this.logger.info('AccountStreamer - starting');
178
+ this.startPromise = new Promise((resolve, reject) => {
179
+ this.startResolve = resolve;
180
+ this.startReject = reject;
181
+ });
182
+ return this.startPromise;
183
+ }
184
+ stop() {
255
185
  this.teardown();
256
- };
257
- AccountStreamer.prototype.teardown = function () {
258
- var websocket = this.websocket;
186
+ }
187
+ teardown() {
188
+ const websocket = this.websocket;
259
189
  if (websocket === null) {
260
190
  return;
261
191
  }
@@ -269,24 +199,20 @@ var AccountStreamer = /** @class */ (function () {
269
199
  this.websocket = null;
270
200
  this.logger.info('AccountStreamer - teardown');
271
201
  this.streamerState = STREAMER_STATE.Closed; // Manually update status for convenience
272
- };
273
- AccountStreamer.prototype.scheduleHeartbeatTimer = function () {
202
+ }
203
+ scheduleHeartbeatTimer() {
274
204
  if (this.isHeartbeatScheduled) {
275
205
  // Heartbeat already scheduled
276
206
  return;
277
207
  }
278
208
  this.logger.info('Scheduling heartbeat with interval: ', HEARTBEAT_INTERVAL);
279
- var scheduler = typeof window === 'undefined' ? setTimeout : window.setTimeout;
209
+ const scheduler = typeof window === 'undefined' ? setTimeout : window.setTimeout;
280
210
  this.heartbeatTimerId = scheduler(this.sendHeartbeat, HEARTBEAT_INTERVAL);
281
- };
282
- Object.defineProperty(AccountStreamer.prototype, "isHeartbeatScheduled", {
283
- get: function () {
284
- return !lodash_1.default.isNil(this.heartbeatTimerId);
285
- },
286
- enumerable: false,
287
- configurable: true
288
- });
289
- AccountStreamer.prototype.cancelHeartbeatTimer = function () {
211
+ }
212
+ get isHeartbeatScheduled() {
213
+ return !_.isNil(this.heartbeatTimerId);
214
+ }
215
+ cancelHeartbeatTimer() {
290
216
  if (!this.isHeartbeatScheduled) {
291
217
  return; // Nothing to cancel
292
218
  }
@@ -297,103 +223,95 @@ var AccountStreamer = /** @class */ (function () {
297
223
  clearTimeout(this.heartbeatTimerId);
298
224
  }
299
225
  this.clearHeartbeatTimerId();
300
- };
301
- AccountStreamer.prototype.clearHeartbeatTimerId = function () {
226
+ }
227
+ clearHeartbeatTimerId() {
302
228
  this.heartbeatTimerId = null;
303
- };
229
+ }
304
230
  /**
305
231
  * Send a message via websocket
306
232
  * @param json JsonBuilder
307
233
  * @param includeSessionToken Attaches session token to message if true
308
234
  * @returns
309
235
  */
310
- AccountStreamer.prototype.send = function (json, includeSessionToken) {
311
- if (includeSessionToken === void 0) { includeSessionToken = true; }
236
+ send(json, includeSessionToken = true) {
312
237
  this.requestCounter += 1;
313
238
  json.add(REQUEST_ID, this.requestCounter);
314
239
  json.add('source', SOURCE);
315
240
  if (includeSessionToken) {
316
- var sessionToken = this.authToken;
241
+ const sessionToken = this.authToken;
317
242
  if (!sessionToken) {
318
243
  throw new Error('sessionToken not set');
319
244
  }
320
245
  json.add('auth-token', sessionToken);
321
246
  }
322
- var message = JSON.stringify(json.json);
323
- var websocket = this.websocket;
247
+ const message = JSON.stringify(json.json);
248
+ const websocket = this.websocket;
324
249
  if (websocket === null) {
325
250
  // Queue up and send on open
326
251
  this.queued.push(message);
327
252
  }
328
253
  else {
254
+ this.logger.info('Sending message: ', message);
329
255
  websocket.send(message);
330
256
  }
331
257
  return this.requestCounter;
332
- };
258
+ }
333
259
  /**
334
260
  * Used by other methods to send a specific `action` message
335
261
  * @param action
336
262
  * @param value
337
263
  * @returns
338
264
  */
339
- AccountStreamer.prototype.subscribeTo = function (action, value) {
340
- var json = new json_util_1.JsonBuilder();
265
+ subscribeTo(action, value) {
266
+ const json = new JsonBuilder();
341
267
  json.add('action', action);
342
- if (!lodash_1.default.isUndefined(value)) {
268
+ if (!_.isUndefined(value)) {
343
269
  json.add('value', value);
344
270
  }
345
271
  return this.send(json);
346
- };
272
+ }
347
273
  /**
348
274
  * Subscribes to all user-level messages for given user external id
349
275
  * @param userExternalId "external-id" from login response
350
276
  * @returns Promise that resolves when ack is received
351
277
  */
352
- AccountStreamer.prototype.subscribeToUser = function (userExternalId) {
278
+ subscribeToUser(userExternalId) {
353
279
  if (!userExternalId) {
354
280
  return;
355
281
  }
356
282
  this.subscribeTo(MessageAction.USER_MESSAGE_SUBSCRIBE, userExternalId);
357
- };
283
+ }
358
284
  /**
359
285
  * Subscribes to all account-level messages for given account numbers
360
286
  * @param accountNumbers List of account numbers to subscribe to
361
287
  * @returns Promise that resolves when an ack is received
362
288
  */
363
- AccountStreamer.prototype.subscribeToAccounts = function (accountNumbers) {
364
- return __awaiter(this, void 0, void 0, function () {
365
- var value, requestId;
366
- var _this = this;
367
- return __generator(this, function (_a) {
368
- if (accountNumbers.length === 0) {
369
- return [2 /*return*/, Promise.reject('no account numbers')];
370
- }
371
- value = accountNumbers.length > 1 ? accountNumbers : accountNumbers[0];
372
- requestId = this.subscribeTo(MessageAction.CONNECT, value);
373
- return [2 /*return*/, new Promise(function (resolve, reject) {
374
- _this.requestPromises.set(requestId, [resolve, reject]);
375
- })];
376
- });
289
+ async subscribeToAccounts(accountNumbers) {
290
+ if (accountNumbers.length === 0) {
291
+ return Promise.reject('no account numbers');
292
+ }
293
+ const value = accountNumbers.length > 1 ? accountNumbers : accountNumbers[0];
294
+ const requestId = this.subscribeTo(MessageAction.CONNECT, value);
295
+ return new Promise((resolve, reject) => {
296
+ this.requestPromises.set(requestId, [resolve, reject]);
377
297
  });
378
- };
379
- AccountStreamer.prototype.sendQueuedMessages = function () {
380
- var queued = this.queued;
298
+ }
299
+ sendQueuedMessages() {
300
+ const queued = this.queued;
381
301
  if (queued.length === 0 || this.websocket === null) {
382
302
  return;
383
303
  }
384
- var websocket = this.websocket;
385
- queued.forEach(function (msg) {
304
+ const websocket = this.websocket;
305
+ queued.forEach(msg => {
386
306
  websocket.send(msg);
387
307
  });
388
308
  this.queued = [];
389
- };
390
- AccountStreamer.prototype.addMessageObserver = function (observer) {
391
- var _this = this;
309
+ }
310
+ addMessageObserver(observer) {
392
311
  this.streamerMessageObservers.push(observer);
393
- return function () {
394
- removeElement(_this.streamerMessageObservers, observer);
312
+ return () => {
313
+ removeElement(this.streamerMessageObservers, observer);
395
314
  };
396
- };
397
- return AccountStreamer;
398
- }());
399
- exports.AccountStreamer = AccountStreamer;
315
+ }
316
+ }
317
+ //# sourceMappingURL=account-streamer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-streamer.js","sourceRoot":"","sources":["../lib/account-streamer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export default interface Logger {
2
+ error(...data: any[]): void;
3
+ info(...data: any[]): void;
4
+ warn(...data: any[]): void;
5
+ }
6
+ export declare enum LogLevel {
7
+ INFO = 1,
8
+ WARN = 2,
9
+ ERROR = 3
10
+ }
11
+ export declare class TastytradeLogger implements Logger {
12
+ logLevel: LogLevel;
13
+ private logger;
14
+ constructor(logger?: Logger, logLevel?: LogLevel);
15
+ error(...data: any[]): void;
16
+ info(...data: any[]): void;
17
+ warn(...data: any[]): void;
18
+ private shouldLog;
19
+ }
20
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../lib/logger.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,WAAW,MAAM;IAC7B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;CAC5B;AAED,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED,qBAAa,gBAAiB,YAAW,MAAM;IACtC,QAAQ,EAAE,QAAQ,CAAA;IACzB,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAKhD,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAM3B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAM1B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAM1B,OAAO,CAAC,SAAS;CAMlB"}
package/dist/logger.js ADDED
@@ -0,0 +1,36 @@
1
+ import _ from 'lodash';
2
+ export var LogLevel;
3
+ (function (LogLevel) {
4
+ LogLevel[LogLevel["INFO"] = 1] = "INFO";
5
+ LogLevel[LogLevel["WARN"] = 2] = "WARN";
6
+ LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
7
+ })(LogLevel || (LogLevel = {}));
8
+ export class TastytradeLogger {
9
+ constructor(logger, logLevel) {
10
+ this.logger = null;
11
+ this.logger = logger ?? null;
12
+ this.logLevel = logLevel ?? LogLevel.ERROR;
13
+ }
14
+ error(...data) {
15
+ if (this.shouldLog(LogLevel.ERROR)) {
16
+ this.logger.error(...data);
17
+ }
18
+ }
19
+ info(...data) {
20
+ if (this.shouldLog(LogLevel.INFO)) {
21
+ this.logger.info(...data);
22
+ }
23
+ }
24
+ warn(...data) {
25
+ if (this.shouldLog(LogLevel.WARN)) {
26
+ this.logger.warn(...data);
27
+ }
28
+ }
29
+ shouldLog(level) {
30
+ if (_.isNil(this.logger)) {
31
+ return false;
32
+ }
33
+ return LogLevel[level] >= LogLevel[this.logLevel];
34
+ }
35
+ }
36
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../lib/logger.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AAQtB,MAAM,CAAN,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EAJW,QAAQ,KAAR,QAAQ,QAInB;AAED,MAAM,OAAO,gBAAgB;IAI3B,YAAY,MAAe,EAAE,QAAmB;QAFxC,WAAM,GAAkB,IAAI,CAAA;QAGlC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAA;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG,IAAW;QAClB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,GAAG,IAAW;QACjB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,GAAG,IAAW;QACjB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,KAAe;QAC/B,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACnD,CAAC;CACF"}
@@ -20,15 +20,15 @@ export declare enum CandleType {
20
20
  Volume = "v",
21
21
  Price = "p"
22
22
  }
23
- export declare type MarketDataListener = (data: any) => void;
24
- export declare type ErrorListener = (error: any) => void;
25
- export declare type AuthStateListener = (isAuthorized: boolean) => void;
26
- export declare type CandleSubscriptionOptions = {
23
+ export type MarketDataListener = (data: any) => void;
24
+ export type ErrorListener = (error: any) => void;
25
+ export type AuthStateListener = (isAuthorized: boolean) => void;
26
+ export type CandleSubscriptionOptions = {
27
27
  period: number;
28
28
  type: CandleType;
29
29
  channelId: number;
30
30
  };
31
- declare type Remover = () => void;
31
+ type Remover = () => void;
32
32
  export default class MarketDataStreamer {
33
33
  private webSocket;
34
34
  private token;
@@ -39,6 +39,7 @@ export default class MarketDataStreamer {
39
39
  private authState;
40
40
  private errorListeners;
41
41
  private authStateListeners;
42
+ constructor();
42
43
  addDataListener(dataListener: MarketDataListener, channelId?: number | null): Remover;
43
44
  addErrorListener(errorListener: ErrorListener): Remover;
44
45
  addAuthStateChangeListener(authStateListener: AuthStateListener): Remover;
@@ -93,3 +94,4 @@ export default class MarketDataStreamer {
93
94
  private sendMessage;
94
95
  }
95
96
  export {};
97
+ //# sourceMappingURL=market-data-streamer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market-data-streamer.d.ts","sourceRoot":"","sources":["../lib/market-data-streamer.ts"],"names":[],"mappings":"AAKA,oBAAY,0BAA0B;IACpC,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,UAAU,eAAe;CAC1B;AAED,oBAAY,UAAU;IACpB,IAAI,MAAM;IACV,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,IAAI,MAAM;IACV,GAAG,MAAM;IACT,IAAI,MAAM;IACV,KAAK,OAAO;IACZ,WAAW,MAAM;IACjB,IAAI,MAAM;IACV,MAAM,MAAM;IACZ,KAAK,MAAM;CACZ;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;AACpD,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;AAChD,MAAM,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAA;AAI/D,MAAM,MAAM,yBAAyB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAA;AAC/F,KAAK,OAAO,GAAG,MAAM,IAAI,CAAA;AASzB,MAAM,CAAC,OAAO,OAAO,kBAAkB;IACrC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,mBAAmB,CAAmB;IAC9C,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,YAAY,CAAY;IAChC,OAAO,CAAC,kBAAkB,CAA+C;IACzE,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,kBAAkB,CAAY;;IAMtC,eAAe,CAAC,YAAY,EAAE,kBAAkB,EAAE,SAAS,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO;IAU3F,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO;IAUvD,0BAA0B,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,OAAO;IAUzE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAelC,UAAU;IAoBV,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO;;;KAA2E,GAAG,OAAO;IAiB5H;;;;;;;;OAQG;IACH,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB;IAmBlG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO;;;KAA2E;IAUrH,sBAAsB,CAAC,SAAS,SAAmB;IASnD,eAAe,CAAC,SAAS,EAAE,MAAM;IAmBjC,eAAe,CAAC,SAAS,EAAE,MAAM;IAIjC,IAAI,qBAAqB,YAExB;IAED,IAAI,WAAW,YAEd;IAED,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,uBAAuB;IAa/B;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,MAAM;IAcd,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,cAAc;IAQtB,IAAI,kBAAkB,YAErB;IAED,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,WAAW;CAOpB"}