@tastytrade/api 5.0.0 → 6.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 (81) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +87 -43
  3. package/dist/account-streamer.d.ts +6 -3
  4. package/dist/account-streamer.d.ts.map +1 -1
  5. package/dist/account-streamer.js +21 -15
  6. package/dist/account-streamer.js.map +1 -1
  7. package/dist/logger.d.ts +5 -1
  8. package/dist/logger.d.ts.map +1 -1
  9. package/dist/logger.js +4 -0
  10. package/dist/logger.js.map +1 -1
  11. package/dist/market-data-streamer.d.ts.map +1 -1
  12. package/dist/market-data-streamer.js +1 -0
  13. package/dist/market-data-streamer.js.map +1 -1
  14. package/dist/models/access-token.d.ts +12 -0
  15. package/dist/models/access-token.d.ts.map +1 -0
  16. package/dist/models/access-token.js +35 -0
  17. package/dist/models/access-token.js.map +1 -0
  18. package/dist/models/tastytrade-session.d.ts.map +1 -1
  19. package/dist/models/tastytrade-session.js.map +1 -1
  20. package/dist/quote-streamer.d.ts +58 -0
  21. package/dist/quote-streamer.d.ts.map +1 -0
  22. package/dist/quote-streamer.js +132 -0
  23. package/dist/quote-streamer.js.map +1 -0
  24. package/dist/services/account-status-service.js +0 -1
  25. package/dist/services/account-status-service.js.map +1 -1
  26. package/dist/services/accounts-and-customers-service.js +0 -1
  27. package/dist/services/accounts-and-customers-service.js.map +1 -1
  28. package/dist/services/balances-and-positions-service.js +0 -1
  29. package/dist/services/balances-and-positions-service.js.map +1 -1
  30. package/dist/services/instruments-service.js +1 -2
  31. package/dist/services/instruments-service.js.map +1 -1
  32. package/dist/services/margin-requirements-service.js +0 -1
  33. package/dist/services/margin-requirements-service.js.map +1 -1
  34. package/dist/services/market-metrics-service.js +0 -1
  35. package/dist/services/market-metrics-service.js.map +1 -1
  36. package/dist/services/net-liquidating-value-history-service.js +0 -1
  37. package/dist/services/net-liquidating-value-history-service.js.map +1 -1
  38. package/dist/services/orders-service.js +0 -1
  39. package/dist/services/orders-service.js.map +1 -1
  40. package/dist/services/risk-parameters-service.js +0 -1
  41. package/dist/services/risk-parameters-service.js.map +1 -1
  42. package/dist/services/session-service.d.ts +6 -1
  43. package/dist/services/session-service.d.ts.map +1 -1
  44. package/dist/services/session-service.js +10 -2
  45. package/dist/services/session-service.js.map +1 -1
  46. package/dist/services/symbol-search-service.js +0 -1
  47. package/dist/services/symbol-search-service.js.map +1 -1
  48. package/dist/services/tastytrade-http-client.d.ts +16 -2
  49. package/dist/services/tastytrade-http-client.d.ts.map +1 -1
  50. package/dist/services/tastytrade-http-client.js +71 -14
  51. package/dist/services/tastytrade-http-client.js.map +1 -1
  52. package/dist/services/transactions-service.js +0 -1
  53. package/dist/services/transactions-service.js.map +1 -1
  54. package/dist/services/watchlists-service.js +0 -1
  55. package/dist/services/watchlists-service.js.map +1 -1
  56. package/dist/tastytrade-api.d.ts +12 -2
  57. package/dist/tastytrade-api.d.ts.map +1 -1
  58. package/dist/tastytrade-api.js +22 -6
  59. package/dist/tastytrade-api.js.map +1 -1
  60. package/dist/utils/json-util.d.ts.map +1 -1
  61. package/dist/utils/json-util.js +0 -2
  62. package/dist/utils/json-util.js.map +1 -1
  63. package/dist/utils/response-util.d.ts.map +1 -1
  64. package/dist/utils/response-util.js +0 -1
  65. package/dist/utils/response-util.js.map +1 -1
  66. package/eslint.config.cjs +46 -0
  67. package/lib/account-streamer.ts +31 -23
  68. package/lib/logger.ts +6 -1
  69. package/lib/models/access-token.ts +40 -0
  70. package/lib/models/tastytrade-session.ts +1 -1
  71. package/lib/quote-streamer.ts +151 -0
  72. package/lib/services/instruments-service.ts +1 -1
  73. package/lib/services/session-service.ts +13 -1
  74. package/lib/services/tastytrade-http-client.ts +93 -15
  75. package/lib/tastytrade-api.ts +31 -4
  76. package/lib/utils/json-util.ts +0 -2
  77. package/lib/utils/response-util.ts +3 -4
  78. package/package.json +26 -18
  79. package/tsconfig.json +2 -2
  80. package/.eslintrc.cjs +0 -18
  81. package/lib/market-data-streamer.ts +0 -376
@@ -1 +1 @@
1
- {"version":3,"file":"tastytrade-http-client.js","sourceRoot":"","sources":["../../lib/services/tastytrade-http-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tastytrade-http-client.js","sourceRoot":"","sources":["../../lib/services/tastytrade-http-client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import extractResponseData from "../utils/response-util.js";
2
- import TastytradeHttpClient from "./tastytrade-http-client.js";
3
2
  export default class TransactionsService {
4
3
  constructor(httpClient) {
5
4
  this.httpClient = httpClient;
@@ -1 +1 @@
1
- {"version":3,"file":"transactions-service.js","sourceRoot":"","sources":["../../lib/services/transactions-service.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAC5D,OAAO,oBAAoB,MAAM,6BAA6B,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACpC,YAAoB,UAAgC;QAAhC,eAAU,GAAV,UAAU,CAAsB;IACpD,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,cAAc,CAAC,aAAqB,EAAE,EAAU;QAClD,iDAAiD;QACjD,MAAM,UAAU,GAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,aAAa,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QAC5G,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAA;IAC1C,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,aAAqB;QACpC,sDAAsD;QACtD,MAAM,SAAS,GAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,aAAa,0BAA0B,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QAChH,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,sBAAsB,CAAC,aAAqB,EAAE,WAAW,GAAG,EAAE;QAChE,8GAA8G;QAC9G,gFAAgF;QAChF,MAAM,mBAAmB,GAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,aAAa,eAAe,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC,CAAA;QACxH,OAAO,mBAAmB,CAAC,mBAAmB,CAAC,CAAA;IACnD,CAAC;CACJ"}
1
+ {"version":3,"file":"transactions-service.js","sourceRoot":"","sources":["../../lib/services/transactions-service.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAG5D,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACpC,YAAoB,UAAgC;QAAhC,eAAU,GAAV,UAAU,CAAsB;IACpD,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,cAAc,CAAC,aAAqB,EAAE,EAAU;QAClD,iDAAiD;QACjD,MAAM,UAAU,GAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,aAAa,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QAC5G,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAA;IAC1C,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,aAAqB;QACpC,sDAAsD;QACtD,MAAM,SAAS,GAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,aAAa,0BAA0B,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QAChH,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,sBAAsB,CAAC,aAAqB,EAAE,WAAW,GAAG,EAAE;QAChE,8GAA8G;QAC9G,gFAAgF;QAChF,MAAM,mBAAmB,GAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,aAAa,eAAe,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC,CAAA;QACxH,OAAO,mBAAmB,CAAC,mBAAmB,CAAC,CAAA;IACnD,CAAC;CACJ"}
@@ -1,5 +1,4 @@
1
1
  import extractResponseData from "../utils/response-util.js";
2
- import TastytradeHttpClient from "./tastytrade-http-client.js";
3
2
  export default class WatchlistsService {
4
3
  constructor(httpClient) {
5
4
  this.httpClient = httpClient;
@@ -1 +1 @@
1
- {"version":3,"file":"watchlists-service.js","sourceRoot":"","sources":["../../lib/services/watchlists-service.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAC5D,OAAO,oBAAoB,MAAM,6BAA6B,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAClC,YAAoB,UAAgC;QAAhC,eAAU,GAAV,UAAU,CAAsB;IACpD,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,kBAAkB;QACpB,mDAAmD;QACnD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAClF,OAAO,mBAAmB,CAAC,eAAe,CAAC,CAAA;IAC/C,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,kBAA0B;QAC9C,gDAAgD;QAChD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,qBAAqB,kBAAkB,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACvG,OAAO,mBAAmB,CAAC,cAAc,CAAC,CAAA;IAC9C,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,mBAAmB,CAAC,UAAU,GAAI,KAAK;QACzC,6CAA6C;QAC7C,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,EAAE,EAAC,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;QAC9G,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;IAChD,CAAC;IACD,KAAK,CAAC,kBAAkB,CAAC,aAAqB;QAC1C,0CAA0C;QAC1C,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,sBAAsB,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACpG,OAAO,mBAAmB,CAAC,eAAe,CAAC,CAAA;IAC/C,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,sBAAsB,CAAC,SAAiB;QAC1C,6BAA6B;QAC7B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;QACrF,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;IAChD,CAAC;IACD,KAAK,CAAC,gBAAgB;QAClB,wDAAwD;QACxD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAC1E,OAAO,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAC7C,CAAC;IACD,KAAK,CAAC,gBAAgB,CAAC,aAAqB,EAAE,oBAA4B;QACtE,gDAAgD;QAChD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,aAAa,EAAE,EAAE,oBAAoB,EAAG,EAAE,CAAC,CAAA;QAC1G,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,aAAqB;QACvC,0CAA0C;QAC1C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,aAAa,EAAE,EAAE,EAAE,CAAC,CAAA;QACtF,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC;IACD,KAAK,CAAC,kBAAkB,CAAC,aAAqB;QAC1C,uCAAuC;QACvC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAC7F,OAAO,mBAAmB,CAAC,eAAe,CAAC,CAAA;IAC/C,CAAC;CACJ"}
1
+ {"version":3,"file":"watchlists-service.js","sourceRoot":"","sources":["../../lib/services/watchlists-service.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAG5D,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAClC,YAAoB,UAAgC;QAAhC,eAAU,GAAV,UAAU,CAAsB;IACpD,CAAC;IAED,mEAAmE;IACnE,KAAK,CAAC,kBAAkB;QACpB,mDAAmD;QACnD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAClF,OAAO,mBAAmB,CAAC,eAAe,CAAC,CAAA;IAC/C,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,kBAA0B;QAC9C,gDAAgD;QAChD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,qBAAqB,kBAAkB,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACvG,OAAO,mBAAmB,CAAC,cAAc,CAAC,CAAA;IAC9C,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,mBAAmB,CAAC,UAAU,GAAI,KAAK;QACzC,6CAA6C;QAC7C,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,EAAE,EAAC,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;QAC9G,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;IAChD,CAAC;IACD,KAAK,CAAC,kBAAkB,CAAC,aAAqB;QAC1C,0CAA0C;QAC1C,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,sBAAsB,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QACpG,OAAO,mBAAmB,CAAC,eAAe,CAAC,CAAA;IAC/C,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,sBAAsB,CAAC,SAAiB;QAC1C,6BAA6B;QAC7B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;QACrF,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;IAChD,CAAC;IACD,KAAK,CAAC,gBAAgB;QAClB,wDAAwD;QACxD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAC1E,OAAO,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAC7C,CAAC;IACD,KAAK,CAAC,gBAAgB,CAAC,aAAqB,EAAE,oBAA4B;QACtE,gDAAgD;QAChD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,aAAa,EAAE,EAAE,oBAAoB,EAAG,EAAE,CAAC,CAAA;QAC1G,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,aAAqB;QACvC,0CAA0C;QAC1C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,aAAa,EAAE,EAAE,EAAE,CAAC,CAAA;QACtF,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC;IACD,KAAK,CAAC,kBAAkB,CAAC,aAAqB;QAC1C,uCAAuC;QACvC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAC7F,OAAO,mBAAmB,CAAC,eAAe,CAAC,CAAA;IAC/C,CAAC;CACJ"}
@@ -1,6 +1,5 @@
1
1
  import TastytradeHttpClient from "./services/tastytrade-http-client.js";
2
2
  import { AccountStreamer, STREAMER_STATE, type Disposer, type StreamerStateObserver } from './account-streamer.js';
3
- import MarketDataStreamer, { type CandleSubscriptionOptions, CandleType, MarketDataSubscriptionType, type MarketDataListener } from "./market-data-streamer.js";
4
3
  import SessionService from "./services/session-service.js";
5
4
  import AccountStatusService from "./services/account-status-service.js";
6
5
  import AccountsAndCustomersService from "./services/accounts-and-customers-service.js";
@@ -17,16 +16,25 @@ import WatchlistsService from "./services/watchlists-service.js";
17
16
  import TastytradeSession from "./models/tastytrade-session.js";
18
17
  import type Logger from "./logger.js";
19
18
  import { TastytradeLogger, LogLevel } from "./logger.js";
19
+ import QuoteStreamer, { MarketDataSubscriptionType, CandleType } from "./quote-streamer.js";
20
+ import type AccessToken from "./models/access-token.js";
20
21
  export type ClientConfig = {
21
22
  baseUrl: string;
22
23
  accountStreamerUrl: string;
24
+ clientSecret?: string;
25
+ refreshToken?: string;
26
+ oauthScopes?: string[];
23
27
  logger?: Logger;
24
28
  logLevel?: LogLevel;
29
+ targetApiVersion?: string;
25
30
  };
26
31
  export default class TastytradeClient {
32
+ static readonly ProdConfig: ClientConfig;
33
+ static readonly SandboxConfig: ClientConfig;
27
34
  readonly logger: TastytradeLogger;
28
35
  readonly httpClient: TastytradeHttpClient;
29
36
  readonly accountStreamer: AccountStreamer;
37
+ readonly quoteStreamer: QuoteStreamer;
30
38
  readonly sessionService: SessionService;
31
39
  readonly accountStatusService: AccountStatusService;
32
40
  readonly accountsAndCustomersService: AccountsAndCustomersService;
@@ -41,9 +49,11 @@ export default class TastytradeClient {
41
49
  readonly transactionsService: TransactionsService;
42
50
  readonly watchlistsService: WatchlistsService;
43
51
  constructor(config: ClientConfig);
52
+ updateConfig(config: Partial<ClientConfig>): void;
44
53
  get session(): TastytradeSession;
54
+ get accessToken(): AccessToken;
45
55
  }
46
- export { MarketDataStreamer, MarketDataSubscriptionType, type MarketDataListener, type CandleSubscriptionOptions, CandleType };
56
+ export { MarketDataSubscriptionType, CandleType };
47
57
  export { AccountStreamer, STREAMER_STATE, type Disposer, type StreamerStateObserver };
48
58
  export { TastytradeLogger, LogLevel };
49
59
  export type { Logger };
@@ -1 +1 @@
1
- {"version":3,"file":"tastytrade-api.d.ts","sourceRoot":"","sources":["../lib/tastytrade-api.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,sCAAsC,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAClH,OAAO,kBAAkB,EAAE,EAAE,KAAK,yBAAyB,EAAE,UAAU,EAAE,0BAA0B,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAG/J,OAAO,cAAc,MAAM,+BAA+B,CAAA;AAC1D,OAAO,oBAAoB,MAAM,sCAAsC,CAAA;AACvE,OAAO,2BAA2B,MAAM,8CAA8C,CAAA;AACtF,OAAO,2BAA2B,MAAM,8CAA8C,CAAA;AACtF,OAAO,kBAAkB,MAAM,mCAAmC,CAAA;AAClE,OAAO,yBAAyB,MAAM,2CAA2C,CAAA;AACjF,OAAO,oBAAoB,MAAM,sCAAsC,CAAA;AACvE,OAAO,iCAAiC,MAAM,qDAAqD,CAAA;AACnG,OAAO,YAAY,MAAM,8BAA8B,CAAA;AACvD,OAAO,qBAAqB,MAAM,uCAAuC,CAAA;AACzE,OAAO,mBAAmB,MAAM,qCAAqC,CAAA;AACrE,OAAO,mBAAmB,MAAM,oCAAoC,CAAA;AACpE,OAAO,iBAAiB,MAAM,kCAAkC,CAAA;AAChE,OAAO,iBAAiB,MAAM,gCAAgC,CAAA;AAC9D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,SAAgB,MAAM,EAAE,gBAAgB,CAAA;IACxC,SAAgB,UAAU,EAAE,oBAAoB,CAAA;IAEhD,SAAgB,eAAe,EAAE,eAAe,CAAA;IAEhD,SAAgB,cAAc,EAAE,cAAc,CAAA;IAC9C,SAAgB,oBAAoB,EAAE,oBAAoB,CAAA;IAC1D,SAAgB,2BAA2B,EAAE,2BAA2B,CAAA;IACxE,SAAgB,2BAA2B,EAAE,2BAA2B,CAAA;IACxE,SAAgB,kBAAkB,EAAE,kBAAkB,CAAA;IACtD,SAAgB,yBAAyB,EAAE,yBAAyB,CAAA;IACpE,SAAgB,oBAAoB,EAAE,oBAAoB,CAAA;IAC1D,SAAgB,iCAAiC,EAAE,iCAAiC,CAAA;IACpF,SAAgB,YAAY,EAAE,YAAY,CAAA;IAC1C,SAAgB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5D,SAAgB,mBAAmB,EAAE,mBAAmB,CAAA;IACxD,SAAgB,mBAAmB,EAAE,mBAAmB,CAAA;IACxD,SAAgB,iBAAiB,EAAE,iBAAiB,CAAA;gBAExC,MAAM,EAAE,YAAY;IAoBhC,IAAI,OAAO,IAAI,iBAAiB,CAE/B;CACF;AAED,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,KAAK,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,UAAU,EAAE,CAAA;AAC9H,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,KAAK,qBAAqB,EAAE,CAAA;AACrF,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAA;AACrC,YAAY,EAAE,MAAM,EAAE,CAAA"}
1
+ {"version":3,"file":"tastytrade-api.d.ts","sourceRoot":"","sources":["../lib/tastytrade-api.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import TastytradeHttpClient from "./services/tastytrade-http-client.js";
2
2
  import { AccountStreamer, STREAMER_STATE } from './account-streamer.js';
3
- import MarketDataStreamer, { CandleType, MarketDataSubscriptionType } from "./market-data-streamer.js";
4
3
  //Services:
5
4
  import SessionService from "./services/session-service.js";
6
5
  import AccountStatusService from "./services/account-status-service.js";
@@ -15,13 +14,12 @@ import RiskParametersService from "./services/risk-parameters-service.js";
15
14
  import SymbolSearchService from "./services/symbol-search-service.js";
16
15
  import TransactionsService from "./services/transactions-service.js";
17
16
  import WatchlistsService from "./services/watchlists-service.js";
18
- import TastytradeSession from "./models/tastytrade-session.js";
19
17
  import { TastytradeLogger, LogLevel } from "./logger.js";
20
- export default class TastytradeClient {
18
+ import QuoteStreamer, { MarketDataSubscriptionType, CandleType } from "./quote-streamer.js";
19
+ class TastytradeClient {
21
20
  constructor(config) {
22
21
  this.logger = new TastytradeLogger(config.logger, config.logLevel);
23
- this.httpClient = new TastytradeHttpClient(config.baseUrl, this.logger);
24
- this.accountStreamer = new AccountStreamer(config.accountStreamerUrl, this.session, this.logger);
22
+ this.httpClient = new TastytradeHttpClient(config, this.logger);
25
23
  this.sessionService = new SessionService(this.httpClient);
26
24
  this.accountStatusService = new AccountStatusService(this.httpClient);
27
25
  this.accountsAndCustomersService = new AccountsAndCustomersService(this.httpClient);
@@ -35,12 +33,30 @@ export default class TastytradeClient {
35
33
  this.symbolSearchService = new SymbolSearchService(this.httpClient);
36
34
  this.transactionsService = new TransactionsService(this.httpClient);
37
35
  this.watchlistsService = new WatchlistsService(this.httpClient);
36
+ this.accountStreamer = new AccountStreamer(config.accountStreamerUrl, this.session, this.accessToken, this.logger);
37
+ this.quoteStreamer = new QuoteStreamer(this.accountsAndCustomersService, this.logger);
38
+ }
39
+ updateConfig(config) {
40
+ this.httpClient.updateConfig(config);
41
+ this.logger.updateConfig(config);
38
42
  }
39
43
  get session() {
40
44
  return this.httpClient.session;
41
45
  }
46
+ get accessToken() {
47
+ return this.httpClient.accessToken;
48
+ }
42
49
  }
43
- export { MarketDataStreamer, MarketDataSubscriptionType, CandleType };
50
+ TastytradeClient.ProdConfig = {
51
+ baseUrl: 'https://api.tastyworks.com',
52
+ accountStreamerUrl: 'wss://streamer.tastyworks.com',
53
+ };
54
+ TastytradeClient.SandboxConfig = {
55
+ baseUrl: 'https://api.cert.tastyworks.com',
56
+ accountStreamerUrl: 'wss://streamer.cert.tastyworks.com',
57
+ };
58
+ export default TastytradeClient;
59
+ export { MarketDataSubscriptionType, CandleType };
44
60
  export { AccountStreamer, STREAMER_STATE };
45
61
  export { TastytradeLogger, LogLevel };
46
62
  //# sourceMappingURL=tastytrade-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tastytrade-api.js","sourceRoot":"","sources":["../lib/tastytrade-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tastytrade-api.js","sourceRoot":"","sources":["../lib/tastytrade-api.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"json-util.d.ts","sourceRoot":"","sources":["../../lib/utils/json-util.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AAEtB,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AACzE,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,SAAS,GAAG,OAAO,CAAA;AAC5D,MAAM,WAAW,OAAO;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;CACrC;AACD,MAAM,MAAM,SAAS,GAAG,SAAS,EAAE,CAAA;AAEnC,qBAAa,WAAW;aACa,IAAI,EAAE,OAAO;gBAAb,IAAI,GAAE,OAAY;IAE9C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,UAAQ,GAAG,IAAI;CAQxE;AAGD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,qBAa/C;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKhD"}
1
+ {"version":3,"file":"json-util.d.ts","sourceRoot":"","sources":["../../lib/utils/json-util.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AAEtB,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;AACzE,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,SAAS,GAAG,OAAO,CAAA;AAC5D,MAAM,WAAW,OAAO;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;CACrC;AACD,MAAM,MAAM,SAAS,GAAG,SAAS,EAAE,CAAA;AAEnC,qBAAa,WAAW;aACa,IAAI,EAAE,OAAO;gBAAb,IAAI,GAAE,OAAY;IAE9C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,UAAQ,GAAG,IAAI;CAQxE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,qBAY/C;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKhD"}
@@ -11,10 +11,8 @@ export class JsonBuilder {
11
11
  return this;
12
12
  }
13
13
  }
14
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
14
  export function recursiveDasherizeKeys(body) {
16
15
  let dasherized = _.mapKeys(body, (_value, key) => dasherize(key));
17
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
16
  dasherized = _.mapValues(dasherized, (value) => {
19
17
  if (_.isPlainObject(value)) {
20
18
  return recursiveDasherizeKeys(value);
@@ -1 +1 @@
1
- {"version":3,"file":"json-util.js","sourceRoot":"","sources":["../../lib/utils/json-util.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AAStB,MAAM,OAAO,WAAW;IACtB,YAAmC,OAAgB,EAAE;QAAlB,SAAI,GAAJ,IAAI,CAAc;IAAG,CAAC;IAElD,GAAG,CAAC,GAAW,EAAE,KAAgB,EAAE,cAAc,GAAG,KAAK;QAC9D,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACxD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED,8DAA8D;AAC9D,MAAM,UAAU,sBAAsB,CAAC,IAAS;IAC9C,IAAI,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IAEjE,8DAA8D;IAC9D,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,KAAU,EAAE,EAAE;QAClD,IAAI,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,kBAAkB;IAClB,OAAO,MAAM;SACV,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAU,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;SACpF,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACxB,CAAC"}
1
+ {"version":3,"file":"json-util.js","sourceRoot":"","sources":["../../lib/utils/json-util.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AAStB,MAAM,OAAO,WAAW;IACtB,YAAmC,OAAgB,EAAE;QAAlB,SAAI,GAAJ,IAAI,CAAc;IAAG,CAAC;IAElD,GAAG,CAAC,GAAW,EAAE,KAAgB,EAAE,cAAc,GAAG,KAAK;QAC9D,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACxD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAS;IAC9C,IAAI,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IAEjE,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,KAAU,EAAE,EAAE;QAClD,IAAI,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,kBAAkB;IAClB,OAAO,MAAM;SACV,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAU,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;SACpF,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"response-util.d.ts","sourceRoot":"","sources":["../../lib/utils/response-util.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,YAAY,EAAE,GAAG,OAQ5D"}
1
+ {"version":3,"file":"response-util.d.ts","sourceRoot":"","sources":["../../lib/utils/response-util.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,YAAY,EAAE,GAAG,OAQ5D"}
@@ -1,5 +1,4 @@
1
1
  import _ from 'lodash';
2
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
3
2
  export default function extractResponseData(httpResponse) {
4
3
  if (_.has(httpResponse, 'data.data.items')) {
5
4
  return _.get(httpResponse, 'data.data.items');
@@ -1 +1 @@
1
- {"version":3,"file":"response-util.js","sourceRoot":"","sources":["../../lib/utils/response-util.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AAEtB,8DAA8D;AAC9D,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,YAAiB;IAC3D,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAA;IAC/C,CAAC;SAAM,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,EAAC,CAAC;QAC3C,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IACzC,CAAC;SAAI,CAAC;QACJ,OAAO,YAAY,CAAA;IACrB,CAAC;AACH,CAAC;AAED,wBAAwB;AACxB,yDAAyD"}
1
+ {"version":3,"file":"response-util.js","sourceRoot":"","sources":["../../lib/utils/response-util.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AAEtB,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,YAAiB;IAC3D,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAA;IAC/C,CAAC;SAAM,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IACzC,CAAC;SAAM,CAAC;QACN,OAAO,YAAY,CAAA;IACrB,CAAC;AACH,CAAC;AAED,wBAAwB;AACxB,yDAAyD"}
@@ -0,0 +1,46 @@
1
+ const { defineConfig } = require('eslint/config')
2
+
3
+ const tsParser = require('@typescript-eslint/parser')
4
+ const typescriptEslint = require('@typescript-eslint/eslint-plugin')
5
+ const js = require('@eslint/js')
6
+
7
+ const { FlatCompat } = require('@eslint/eslintrc')
8
+
9
+ const compat = new FlatCompat({
10
+ baseDirectory: __dirname,
11
+ recommendedConfig: js.configs.recommended,
12
+ allConfig: js.configs.all
13
+ })
14
+
15
+ module.exports = defineConfig([
16
+ {
17
+ extends: compat.extends(
18
+ 'eslint:recommended',
19
+ 'plugin:@typescript-eslint/recommended'
20
+ ),
21
+
22
+ languageOptions: {
23
+ parser: tsParser
24
+ },
25
+
26
+ plugins: {
27
+ '@typescript-eslint': typescriptEslint
28
+ },
29
+
30
+ rules: {
31
+ '@typescript-eslint/no-inferrable-types': 'warn',
32
+
33
+ '@typescript-eslint/no-unused-vars': [
34
+ 'error',
35
+ {
36
+ argsIgnorePattern: '^_',
37
+ varsIgnorePattern: '^_',
38
+ caughtErrorsIgnorePattern: '^_'
39
+ }
40
+ ],
41
+
42
+ '@typescript-eslint/no-non-null-assertion': 'off',
43
+ '@typescript-eslint/no-explicit-any': 'off'
44
+ }
45
+ }
46
+ ])
@@ -5,6 +5,7 @@ import { JsonBuilder } from './utils/json-util.js'
5
5
  import TastytradeSession from './models/tastytrade-session.js'
6
6
  import { MinTlsVersion } from './utils/constants.js'
7
7
  import type Logger from './logger.js'
8
+ import type AccessToken from './models/access-token.js'
8
9
 
9
10
  export enum STREAMER_STATE {
10
11
  Open = 0,
@@ -21,7 +22,7 @@ enum MessageAction {
21
22
  USER_MESSAGE_SUBSCRIBE = 'user-message-subscribe'
22
23
  }
23
24
 
24
- const HEARTBEAT_INTERVAL = 20000 // 20 seconds
25
+ const DEFAULT_HEARTBEAT_INTERVAL = 2000 // 20 seconds
25
26
 
26
27
  const SOURCE = 'tastytrade-api-js-sdk'
27
28
 
@@ -47,7 +48,7 @@ export class AccountStreamer {
47
48
  private websocket: WebSocket | null = null
48
49
  private startResolve: ((result: boolean) => void) | null = null
49
50
  private startReject: ((reason?: any) => void) | null = null
50
- private requestCounter: number = 0
51
+ private requestCounter = 0
51
52
  private queued: string[] = []
52
53
 
53
54
  private heartbeatTimerId: number | NodeJS.Timeout | null = null
@@ -68,16 +69,18 @@ export class AccountStreamer {
68
69
  > = new Map()
69
70
 
70
71
  /**
71
- *
72
+ *
72
73
  * @param url Url of the account streamer service
73
74
  */
74
75
  constructor(
75
76
  private readonly url: string,
76
77
  private readonly session: TastytradeSession,
77
- logger: Logger
78
+ private readonly accessToken: AccessToken,
79
+ logger: Logger,
80
+ private readonly heartbeatInterval: number = DEFAULT_HEARTBEAT_INTERVAL
78
81
  ) {
79
82
  this.logger = logger
80
- }
83
+ }
81
84
 
82
85
  get streamerState(): STREAMER_STATE {
83
86
  return this._streamerState
@@ -86,19 +89,25 @@ export class AccountStreamer {
86
89
  set streamerState(streamerState: STREAMER_STATE) {
87
90
  this._streamerState = streamerState
88
91
 
89
- this.streamerStateObservers.forEach(observer => {
92
+ this.streamerStateObservers.forEach((observer) => {
90
93
  observer(streamerState)
91
94
  })
92
95
  }
93
96
 
94
- private get authToken() {
95
- return this.session.authToken
97
+ private get authHeader() {
98
+ if (this.session.isValid) {
99
+ return this.session.authToken
100
+ }
101
+ if (this.accessToken.isValid) {
102
+ return this.accessToken.authorizationHeader
103
+ }
104
+ return null
96
105
  }
97
106
 
98
107
  /**
99
108
  * Adds a custom callback that fires when the streamer state changes
100
- * @param observer
101
- * @returns
109
+ * @param observer
110
+ * @returns
102
111
  */
103
112
  addStreamerStateObserver(observer: StreamerStateObserver): Disposer {
104
113
  this.streamerStateObservers.push(observer)
@@ -122,7 +131,7 @@ export class AccountStreamer {
122
131
 
123
132
  /**
124
133
  * Entrypoint for beginning a websocket session
125
- * You must have a valid tastytrade authToken before calling this method
134
+ * You must have a valid tastytrade session or access token before calling this method
126
135
  * @returns Promise that resolves when the "opened" message is received (see handleOpen)
127
136
  */
128
137
  async start(): Promise<boolean> {
@@ -187,11 +196,11 @@ export class AccountStreamer {
187
196
  return
188
197
  }
189
198
 
190
- this.logger.info('Scheduling heartbeat with interval: ', HEARTBEAT_INTERVAL)
199
+ this.logger.info('Scheduling heartbeat with interval: ', this.heartbeatInterval)
191
200
  const scheduler = typeof window === 'undefined' ? setTimeout : window.setTimeout
192
201
  this.heartbeatTimerId = scheduler(
193
202
  this.sendHeartbeat,
194
- HEARTBEAT_INTERVAL
203
+ this.heartbeatInterval
195
204
  )
196
205
  }
197
206
 
@@ -221,7 +230,7 @@ export class AccountStreamer {
221
230
  * Send a message via websocket
222
231
  * @param json JsonBuilder
223
232
  * @param includeSessionToken Attaches session token to message if true
224
- * @returns
233
+ * @returns
225
234
  */
226
235
  send(json: JsonBuilder, includeSessionToken = true): number {
227
236
  this.requestCounter += 1
@@ -229,12 +238,11 @@ export class AccountStreamer {
229
238
  json.add('source', SOURCE)
230
239
 
231
240
  if (includeSessionToken) {
232
- const sessionToken = this.authToken
233
- if (!sessionToken) {
234
- throw new Error('sessionToken not set')
241
+ if (!this.authHeader) {
242
+ throw new Error('session or access token not set')
235
243
  }
236
244
 
237
- json.add('auth-token', sessionToken)
245
+ json.add('auth-token', this.authHeader)
238
246
  }
239
247
 
240
248
  const message = JSON.stringify(json.json)
@@ -252,9 +260,9 @@ export class AccountStreamer {
252
260
 
253
261
  /**
254
262
  * Used by other methods to send a specific `action` message
255
- * @param action
256
- * @param value
257
- * @returns
263
+ * @param action
264
+ * @param value
265
+ * @returns
258
266
  */
259
267
  public subscribeTo(action: string, value?: JsonValue): number {
260
268
  const json = new JsonBuilder()
@@ -304,7 +312,7 @@ export class AccountStreamer {
304
312
  }
305
313
 
306
314
  const websocket = this.websocket
307
- queued.forEach(msg => {
315
+ queued.forEach((msg) => {
308
316
  websocket.send(msg)
309
317
  })
310
318
 
@@ -380,7 +388,7 @@ export class AccountStreamer {
380
388
  this.logger.info('Message received: ', json)
381
389
 
382
390
  const action = json.action as string
383
- this.streamerMessageObservers.forEach(observer => observer(json))
391
+ this.streamerMessageObservers.forEach((observer) => observer(json))
384
392
  if (action) {
385
393
  if (action === MessageAction.HEARTBEAT) {
386
394
  // schedule next heartbeat
package/lib/logger.ts CHANGED
@@ -14,13 +14,18 @@ export enum LogLevel {
14
14
 
15
15
  export class TastytradeLogger implements Logger {
16
16
  public logLevel: LogLevel
17
- private logger: Logger | null = null
17
+ public logger: Logger | null = null
18
18
 
19
19
  constructor(logger?: Logger, logLevel?: LogLevel) {
20
20
  this.logger = logger ?? null
21
21
  this.logLevel = logLevel ?? LogLevel.ERROR
22
22
  }
23
23
 
24
+ public updateConfig(config: Partial<{logger: Logger, logLevel: LogLevel}>) {
25
+ const loggerConfig = _.pick(config, ['logger', 'logLevel'])
26
+ Object.assign(this, loggerConfig)
27
+ }
28
+
24
29
  error(...data: any[]): void {
25
30
  if (this.shouldLog(LogLevel.ERROR)) {
26
31
  this.logger!.error(...data)
@@ -0,0 +1,40 @@
1
+ import _ from 'lodash'
2
+
3
+ export default class AccessToken {
4
+ public token = ''
5
+ public expiresIn = 0
6
+
7
+ get isExpired(): boolean {
8
+ return this.isEmpty || Date.now() >= this.expiration.getTime();
9
+ }
10
+
11
+ get isValid(): boolean {
12
+ return !_.isNil(this.token) && !this.isExpired;
13
+ }
14
+
15
+ get isEmpty(): boolean {
16
+ return _.isNil(this.token) || this.token.length === 0;
17
+ }
18
+
19
+ get expiration() {
20
+ // Set expiration a bit earlier to account for clock skew
21
+ return new Date(Date.now() + ((this.expiresIn - 30) * 1000));
22
+ }
23
+
24
+ public updateFromTokenResponse(tokenResponse: any): void {
25
+ this.token = _.get(tokenResponse, "data.access_token");
26
+ this.expiresIn = _.get(tokenResponse, "data.expires_in");
27
+ }
28
+
29
+ get authorizationHeader(): string | null {
30
+ if (this.isValid) {
31
+ return `Bearer ${this.token}`;
32
+ }
33
+ return null;
34
+ }
35
+
36
+ clear() {
37
+ this.token = ''
38
+ this.expiresIn = 0
39
+ }
40
+ }
@@ -1,7 +1,7 @@
1
1
  import _ from 'lodash'
2
2
 
3
3
  export default class TastytradeSession {
4
- authToken: string | null = null
4
+ public authToken: string | null = null
5
5
 
6
6
  get isValid() {
7
7
  return !_.isNil(this.authToken)