@tastytrade/api 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/.env +5 -0
  2. package/.eslintrc.cjs +18 -0
  3. package/.vscode/launch.json +24 -0
  4. package/LICENSE +21 -0
  5. package/README.md +21 -0
  6. package/dist/account-streamer.d.ts +92 -0
  7. package/dist/account-streamer.js +394 -0
  8. package/dist/models/tastytrade-session.d.ts +5 -0
  9. package/dist/models/tastytrade-session.js +23 -0
  10. package/dist/quote-streamer.d.ts +11 -0
  11. package/dist/quote-streamer.js +63 -0
  12. package/dist/services/account-status-service.d.ts +6 -0
  13. package/dist/services/account-status-service.js +64 -0
  14. package/dist/services/accounts-and-customers-service.d.ts +10 -0
  15. package/dist/services/accounts-and-customers-service.js +116 -0
  16. package/dist/services/balances-and-positions-service.d.ts +8 -0
  17. package/dist/services/balances-and-positions-service.js +93 -0
  18. package/dist/services/instruments-service.d.ts +28 -0
  19. package/dist/services/instruments-service.js +370 -0
  20. package/dist/services/margin-requirements-service.d.ts +7 -0
  21. package/dist/services/margin-requirements-service.js +76 -0
  22. package/dist/services/market-metrics-service.d.ts +8 -0
  23. package/dist/services/market-metrics-service.js +91 -0
  24. package/dist/services/net-liquidating-value-history-service.d.ts +7 -0
  25. package/dist/services/net-liquidating-value-history-service.js +77 -0
  26. package/dist/services/orders-service.d.ts +17 -0
  27. package/dist/services/orders-service.js +208 -0
  28. package/dist/services/risk-parameters-service.d.ts +7 -0
  29. package/dist/services/risk-parameters-service.js +76 -0
  30. package/dist/services/session-service.d.ts +9 -0
  31. package/dist/services/session-service.js +113 -0
  32. package/dist/services/symbol-search-service.d.ts +6 -0
  33. package/dist/services/symbol-search-service.js +63 -0
  34. package/dist/services/tastytrade-http-client.d.ts +13 -0
  35. package/dist/services/tastytrade-http-client.js +137 -0
  36. package/dist/services/transactions-service.d.ts +8 -0
  37. package/dist/services/transactions-service.js +91 -0
  38. package/dist/services/watchlists-service.d.ts +14 -0
  39. package/dist/services/watchlists-service.js +170 -0
  40. package/dist/tastytrade-api.d.ts +40 -0
  41. package/dist/tastytrade-api.js +56 -0
  42. package/dist/utils/json-util.d.ts +14 -0
  43. package/dist/utils/json-util.js +43 -0
  44. package/dist/utils/response-util.d.ts +1 -0
  45. package/dist/utils/response-util.js +21 -0
  46. package/lib/account-streamer.ts +394 -0
  47. package/lib/models/tastytrade-session.ts +13 -0
  48. package/lib/quote-streamer.ts +40 -0
  49. package/lib/services/account-status-service.ts +15 -0
  50. package/lib/services/accounts-and-customers-service.ts +35 -0
  51. package/lib/services/balances-and-positions-service.ts +29 -0
  52. package/lib/services/instruments-service.ts +138 -0
  53. package/lib/services/margin-requirements-service.ts +19 -0
  54. package/lib/services/market-metrics-service.ts +24 -0
  55. package/lib/services/net-liquidating-value-history-service.ts +20 -0
  56. package/lib/services/orders-service.ts +80 -0
  57. package/lib/services/risk-parameters-service.ts +19 -0
  58. package/lib/services/session-service.ts +35 -0
  59. package/lib/services/symbol-search-service.ts +14 -0
  60. package/lib/services/tastytrade-http-client.ts +65 -0
  61. package/lib/services/transactions-service.ts +27 -0
  62. package/lib/services/watchlists-service.ts +58 -0
  63. package/lib/tastytrade-api.ts +65 -0
  64. package/lib/utils/json-util.ts +44 -0
  65. package/lib/utils/response-util.ts +15 -0
  66. package/package.json +35 -0
  67. package/tsconfig.json +71 -0
@@ -0,0 +1,208 @@
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
+ var response_util_1 = __importDefault(require("../utils/response-util"));
43
+ var OrderService = /** @class */ (function () {
44
+ function OrderService(httpClient) {
45
+ this.httpClient = httpClient;
46
+ }
47
+ //Orders: Allows an API client to view, filter, create, cancel and replace orders.
48
+ OrderService.prototype.postReconfirmOrder = function (accountNumber, orderId) {
49
+ return __awaiter(this, void 0, void 0, function () {
50
+ var reconfirmOrder;
51
+ return __generator(this, function (_a) {
52
+ switch (_a.label) {
53
+ case 0: return [4 /*yield*/, this.httpClient.postData("/accounts/".concat(accountNumber, "/orders/").concat(orderId, "/reconfirm"), {}, {})];
54
+ case 1:
55
+ reconfirmOrder = _a.sent();
56
+ return [2 /*return*/, (0, response_util_1.default)(reconfirmOrder)];
57
+ }
58
+ });
59
+ });
60
+ };
61
+ OrderService.prototype.replacementOrderDryRun = function (accountNumber, orderId, replacementOrder) {
62
+ return __awaiter(this, void 0, void 0, function () {
63
+ var replacementOrderDryRun;
64
+ return __generator(this, function (_a) {
65
+ switch (_a.label) {
66
+ case 0: return [4 /*yield*/, this.httpClient.postData("/accounts/".concat(accountNumber, "/orders/").concat(orderId, "/dry-run"), replacementOrder, {})];
67
+ case 1:
68
+ replacementOrderDryRun = _a.sent();
69
+ return [2 /*return*/, (0, response_util_1.default)(replacementOrderDryRun)];
70
+ }
71
+ });
72
+ });
73
+ };
74
+ OrderService.prototype.getOrder = function (accountNumber, orderId) {
75
+ return __awaiter(this, void 0, void 0, function () {
76
+ var order;
77
+ return __generator(this, function (_a) {
78
+ switch (_a.label) {
79
+ case 0: return [4 /*yield*/, this.httpClient.getData("/accounts/".concat(accountNumber, "/orders/").concat(orderId), {}, {})];
80
+ case 1:
81
+ order = _a.sent();
82
+ return [2 /*return*/, (0, response_util_1.default)(order)];
83
+ }
84
+ });
85
+ });
86
+ };
87
+ OrderService.prototype.cancelOrder = function (accountNumber, orderId) {
88
+ return __awaiter(this, void 0, void 0, function () {
89
+ var order;
90
+ return __generator(this, function (_a) {
91
+ switch (_a.label) {
92
+ case 0: return [4 /*yield*/, this.httpClient.deleteData("/accounts/".concat(accountNumber, "/orders/").concat(orderId), {})];
93
+ case 1:
94
+ order = _a.sent();
95
+ return [2 /*return*/, (0, response_util_1.default)(order)];
96
+ }
97
+ });
98
+ });
99
+ };
100
+ OrderService.prototype.replaceOrder = function (accountNumber, orderId, replacementOrder) {
101
+ return __awaiter(this, void 0, void 0, function () {
102
+ var order;
103
+ return __generator(this, function (_a) {
104
+ switch (_a.label) {
105
+ case 0: return [4 /*yield*/, this.httpClient.putData("/accounts/".concat(accountNumber, "/orders/").concat(orderId), replacementOrder, {})];
106
+ case 1:
107
+ order = _a.sent();
108
+ return [2 /*return*/, (0, response_util_1.default)(order)];
109
+ }
110
+ });
111
+ });
112
+ };
113
+ OrderService.prototype.editOrder = function (accountNumber, orderId, order) {
114
+ return __awaiter(this, void 0, void 0, function () {
115
+ var orderResponse;
116
+ return __generator(this, function (_a) {
117
+ switch (_a.label) {
118
+ case 0: return [4 /*yield*/, this.httpClient.patchData("/accounts/".concat(accountNumber, "/orders/").concat(orderId), order, {})];
119
+ case 1:
120
+ orderResponse = _a.sent();
121
+ return [2 /*return*/, (0, response_util_1.default)(orderResponse)];
122
+ }
123
+ });
124
+ });
125
+ };
126
+ OrderService.prototype.getLiveOrders = function (accountNumber) {
127
+ return __awaiter(this, void 0, void 0, function () {
128
+ var liveOrders;
129
+ return __generator(this, function (_a) {
130
+ switch (_a.label) {
131
+ case 0: return [4 /*yield*/, this.httpClient.getData("/accounts/".concat(accountNumber, "/orders/live"), {}, {})];
132
+ case 1:
133
+ liveOrders = _a.sent();
134
+ return [2 /*return*/, (0, response_util_1.default)(liveOrders)];
135
+ }
136
+ });
137
+ });
138
+ };
139
+ OrderService.prototype.getOrders = function (accountNumber, queryParams) {
140
+ if (queryParams === void 0) { queryParams = {}; }
141
+ return __awaiter(this, void 0, void 0, function () {
142
+ var orders;
143
+ return __generator(this, function (_a) {
144
+ switch (_a.label) {
145
+ case 0: return [4 /*yield*/, this.httpClient.getData("/accounts/".concat(accountNumber, "/orders"), {}, queryParams)];
146
+ case 1:
147
+ orders = _a.sent();
148
+ return [2 /*return*/, (0, response_util_1.default)(orders)];
149
+ }
150
+ });
151
+ });
152
+ };
153
+ OrderService.prototype.createOrder = function (accountNumber, order) {
154
+ return __awaiter(this, void 0, void 0, function () {
155
+ var orderResponse;
156
+ return __generator(this, function (_a) {
157
+ switch (_a.label) {
158
+ case 0: return [4 /*yield*/, this.httpClient.postData("/accounts/".concat(accountNumber, "/orders"), order, {})];
159
+ case 1:
160
+ orderResponse = _a.sent();
161
+ return [2 /*return*/, (0, response_util_1.default)(orderResponse)];
162
+ }
163
+ });
164
+ });
165
+ };
166
+ OrderService.prototype.postOrderDryRun = function (accountNumber, order) {
167
+ return __awaiter(this, void 0, void 0, function () {
168
+ var orderDryRun;
169
+ return __generator(this, function (_a) {
170
+ switch (_a.label) {
171
+ case 0: return [4 /*yield*/, this.httpClient.postData("/accounts/".concat(accountNumber, "/orders/dry-run"), order, {})];
172
+ case 1:
173
+ orderDryRun = _a.sent();
174
+ return [2 /*return*/, (0, response_util_1.default)(orderDryRun)];
175
+ }
176
+ });
177
+ });
178
+ };
179
+ OrderService.prototype.getLiveOrdersForCustomer = function (customerId) {
180
+ return __awaiter(this, void 0, void 0, function () {
181
+ var liveOrders;
182
+ return __generator(this, function (_a) {
183
+ switch (_a.label) {
184
+ case 0: return [4 /*yield*/, this.httpClient.getData("/customers/".concat(customerId, "/orders/live"), {}, {})];
185
+ case 1:
186
+ liveOrders = _a.sent();
187
+ return [2 /*return*/, (0, response_util_1.default)(liveOrders)];
188
+ }
189
+ });
190
+ });
191
+ };
192
+ OrderService.prototype.getCustomerOrders = function (customerId, queryParams) {
193
+ if (queryParams === void 0) { queryParams = {}; }
194
+ return __awaiter(this, void 0, void 0, function () {
195
+ var customerOrders;
196
+ return __generator(this, function (_a) {
197
+ switch (_a.label) {
198
+ case 0: return [4 /*yield*/, this.httpClient.getData("/customers/".concat(customerId, "/orders"), {}, queryParams)];
199
+ case 1:
200
+ customerOrders = _a.sent();
201
+ return [2 /*return*/, (0, response_util_1.default)(customerOrders)];
202
+ }
203
+ });
204
+ });
205
+ };
206
+ return OrderService;
207
+ }());
208
+ exports.default = OrderService;
@@ -0,0 +1,7 @@
1
+ import TastytradeHttpClient from "./tastytrade-http-client";
2
+ export default class RiskParametersService {
3
+ private httpClient;
4
+ constructor(httpClient: TastytradeHttpClient);
5
+ getEffectiveMarginRequirements(accountNumber: string, underlyingSymbol: string): Promise<any>;
6
+ getPositionLimit(accountNumber: string): Promise<any>;
7
+ }
@@ -0,0 +1,76 @@
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
+ var response_util_1 = __importDefault(require("../utils/response-util"));
43
+ var RiskParametersService = /** @class */ (function () {
44
+ function RiskParametersService(httpClient) {
45
+ this.httpClient = httpClient;
46
+ }
47
+ //Accounts: Operations about accounts
48
+ RiskParametersService.prototype.getEffectiveMarginRequirements = function (accountNumber, underlyingSymbol) {
49
+ return __awaiter(this, void 0, void 0, function () {
50
+ var effectiveMarginRequirements;
51
+ return __generator(this, function (_a) {
52
+ switch (_a.label) {
53
+ case 0: return [4 /*yield*/, this.httpClient.getData("/accounts/".concat(accountNumber, "/margin-requirements/").concat(underlyingSymbol, "/effective"), {}, {})];
54
+ case 1:
55
+ effectiveMarginRequirements = (_a.sent());
56
+ return [2 /*return*/, (0, response_util_1.default)(effectiveMarginRequirements)];
57
+ }
58
+ });
59
+ });
60
+ };
61
+ RiskParametersService.prototype.getPositionLimit = function (accountNumber) {
62
+ return __awaiter(this, void 0, void 0, function () {
63
+ var positionLimit;
64
+ return __generator(this, function (_a) {
65
+ switch (_a.label) {
66
+ case 0: return [4 /*yield*/, this.httpClient.getData("/accounts/".concat(accountNumber, "/position-limit"), {}, {})];
67
+ case 1:
68
+ positionLimit = (_a.sent());
69
+ return [2 /*return*/, (0, response_util_1.default)(positionLimit)];
70
+ }
71
+ });
72
+ });
73
+ };
74
+ return RiskParametersService;
75
+ }());
76
+ exports.default = RiskParametersService;
@@ -0,0 +1,9 @@
1
+ import TastytradeHttpClient from "./tastytrade-http-client";
2
+ export default class SessionService {
3
+ httpClient: TastytradeHttpClient;
4
+ constructor(httpClient: TastytradeHttpClient);
5
+ login(usernameOrEmail: string, password: string, rememberMe?: boolean): Promise<any>;
6
+ loginWithRememberToken(usernameOrEmail: string, rememberToken: string, rememberMe?: boolean): Promise<any>;
7
+ validate(): Promise<any>;
8
+ logout(): Promise<any>;
9
+ }
@@ -0,0 +1,113 @@
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
+ var response_util_1 = __importDefault(require("../utils/response-util"));
43
+ var SessionService = /** @class */ (function () {
44
+ function SessionService(httpClient) {
45
+ this.httpClient = httpClient;
46
+ }
47
+ // Sessions: Allows an API client to interact with their session, or create a new one.
48
+ SessionService.prototype.login = function (usernameOrEmail, password, rememberMe) {
49
+ if (rememberMe === void 0) { rememberMe = false; }
50
+ return __awaiter(this, void 0, void 0, function () {
51
+ var params, sessionResponse, sessionData;
52
+ return __generator(this, function (_a) {
53
+ switch (_a.label) {
54
+ case 0:
55
+ params = { login: usernameOrEmail, password: password, rememberMe: rememberMe };
56
+ return [4 /*yield*/, this.httpClient.postData('/sessions', params, {})];
57
+ case 1:
58
+ sessionResponse = _a.sent();
59
+ sessionData = (0, response_util_1.default)(sessionResponse);
60
+ this.httpClient.session.authToken = sessionData["session-token"];
61
+ return [2 /*return*/, sessionData];
62
+ }
63
+ });
64
+ });
65
+ };
66
+ SessionService.prototype.loginWithRememberToken = function (usernameOrEmail, rememberToken, rememberMe) {
67
+ if (rememberMe === void 0) { rememberMe = false; }
68
+ return __awaiter(this, void 0, void 0, function () {
69
+ var params, sessionData, _a;
70
+ return __generator(this, function (_b) {
71
+ switch (_b.label) {
72
+ case 0:
73
+ params = { login: usernameOrEmail, rememberToken: rememberToken, rememberMe: rememberMe };
74
+ _a = response_util_1.default;
75
+ return [4 /*yield*/, this.httpClient.postData('/sessions', params, {})];
76
+ case 1:
77
+ sessionData = _a.apply(void 0, [_b.sent()]);
78
+ this.httpClient.session.authToken = sessionData["session-token"];
79
+ return [2 /*return*/, sessionData];
80
+ }
81
+ });
82
+ });
83
+ };
84
+ SessionService.prototype.validate = function () {
85
+ return __awaiter(this, void 0, void 0, function () {
86
+ var response;
87
+ return __generator(this, function (_a) {
88
+ switch (_a.label) {
89
+ case 0: return [4 /*yield*/, this.httpClient.postData('/sessions/validate', {}, {})];
90
+ case 1:
91
+ response = _a.sent();
92
+ return [2 /*return*/, (0, response_util_1.default)(response)];
93
+ }
94
+ });
95
+ });
96
+ };
97
+ SessionService.prototype.logout = function () {
98
+ return __awaiter(this, void 0, void 0, function () {
99
+ var response;
100
+ return __generator(this, function (_a) {
101
+ switch (_a.label) {
102
+ case 0: return [4 /*yield*/, this.httpClient.deleteData('/sessions', {})];
103
+ case 1:
104
+ response = _a.sent();
105
+ this.httpClient.session.clear();
106
+ return [2 /*return*/, (0, response_util_1.default)(response)];
107
+ }
108
+ });
109
+ });
110
+ };
111
+ return SessionService;
112
+ }());
113
+ exports.default = SessionService;
@@ -0,0 +1,6 @@
1
+ import TastytradeHttpClient from "./tastytrade-http-client";
2
+ export default class SymbolSearchService {
3
+ private httpClient;
4
+ constructor(httpClient: TastytradeHttpClient);
5
+ getSymbolData(symbol: string): Promise<any>;
6
+ }
@@ -0,0 +1,63 @@
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
+ var response_util_1 = __importDefault(require("../utils/response-util"));
43
+ var SymbolSearchService = /** @class */ (function () {
44
+ function SymbolSearchService(httpClient) {
45
+ this.httpClient = httpClient;
46
+ }
47
+ //Default
48
+ SymbolSearchService.prototype.getSymbolData = function (symbol) {
49
+ return __awaiter(this, void 0, void 0, function () {
50
+ var symbolData;
51
+ return __generator(this, function (_a) {
52
+ switch (_a.label) {
53
+ case 0: return [4 /*yield*/, this.httpClient.getData("/symbols/search/".concat(symbol), {}, {})];
54
+ case 1:
55
+ symbolData = (_a.sent());
56
+ return [2 /*return*/, (0, response_util_1.default)(symbolData)];
57
+ }
58
+ });
59
+ });
60
+ };
61
+ return SymbolSearchService;
62
+ }());
63
+ exports.default = SymbolSearchService;
@@ -0,0 +1,13 @@
1
+ import TastytradeSession from "../models/tastytrade-session";
2
+ export default class TastytradeHttpClient {
3
+ private readonly baseUrl;
4
+ readonly session: TastytradeSession;
5
+ constructor(baseUrl: string);
6
+ private getDefaultHeaders;
7
+ private executeRequest;
8
+ getData(url: string, headers?: object, queryParams?: object): Promise<any>;
9
+ postData(url: string, data: object, headers: object): Promise<any>;
10
+ putData(url: string, data: object, headers: object): Promise<any>;
11
+ patchData(url: string, data: object, headers: object): Promise<any>;
12
+ deleteData(url: string, headers: object): Promise<any>;
13
+ }
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (_) try {
29
+ 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;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ var tastytrade_session_1 = __importDefault(require("../models/tastytrade-session"));
54
+ var axios_1 = __importDefault(require("axios"));
55
+ var qs_1 = __importDefault(require("qs"));
56
+ var json_util_1 = require("../utils/json-util");
57
+ var lodash_1 = __importDefault(require("lodash"));
58
+ var ParamsSerializer = {
59
+ serialize: function (queryParams) {
60
+ return qs_1.default.stringify(queryParams, { arrayFormat: 'brackets' });
61
+ }
62
+ };
63
+ var TastytradeHttpClient = /** @class */ (function () {
64
+ function TastytradeHttpClient(baseUrl) {
65
+ this.baseUrl = baseUrl;
66
+ this.session = new tastytrade_session_1.default();
67
+ }
68
+ TastytradeHttpClient.prototype.getDefaultHeaders = function () {
69
+ return {
70
+ "Content-Type": "application/json",
71
+ "Accept": "application/json",
72
+ "Authorization": this.session.authToken,
73
+ };
74
+ };
75
+ TastytradeHttpClient.prototype.executeRequest = function (method, url, data, headers, params) {
76
+ if (data === void 0) { data = {}; }
77
+ if (headers === void 0) { headers = {}; }
78
+ if (params === void 0) { params = {}; }
79
+ return __awaiter(this, void 0, void 0, function () {
80
+ var dasherizedParams, dasherizedData, mergedHeaders, config;
81
+ return __generator(this, function (_a) {
82
+ dasherizedParams = (0, json_util_1.recursiveDasherizeKeys)(params);
83
+ dasherizedData = (0, json_util_1.recursiveDasherizeKeys)(data);
84
+ mergedHeaders = __assign(__assign({}, headers), this.getDefaultHeaders());
85
+ config = lodash_1.default.omitBy({
86
+ method: method,
87
+ url: url,
88
+ baseURL: this.baseUrl,
89
+ data: dasherizedData,
90
+ headers: mergedHeaders,
91
+ params: dasherizedParams,
92
+ paramsSerializer: ParamsSerializer
93
+ }, lodash_1.default.isEmpty);
94
+ return [2 /*return*/, axios_1.default.request(config)];
95
+ });
96
+ });
97
+ };
98
+ TastytradeHttpClient.prototype.getData = function (url, headers, queryParams) {
99
+ if (headers === void 0) { headers = {}; }
100
+ if (queryParams === void 0) { queryParams = {}; }
101
+ return __awaiter(this, void 0, void 0, function () {
102
+ return __generator(this, function (_a) {
103
+ return [2 /*return*/, this.executeRequest('get', url, {}, headers, queryParams)];
104
+ });
105
+ });
106
+ };
107
+ TastytradeHttpClient.prototype.postData = function (url, data, headers) {
108
+ return __awaiter(this, void 0, void 0, function () {
109
+ return __generator(this, function (_a) {
110
+ return [2 /*return*/, this.executeRequest('post', url, data, headers)];
111
+ });
112
+ });
113
+ };
114
+ TastytradeHttpClient.prototype.putData = function (url, data, headers) {
115
+ return __awaiter(this, void 0, void 0, function () {
116
+ return __generator(this, function (_a) {
117
+ return [2 /*return*/, this.executeRequest('put', url, data, headers)];
118
+ });
119
+ });
120
+ };
121
+ TastytradeHttpClient.prototype.patchData = function (url, data, headers) {
122
+ return __awaiter(this, void 0, void 0, function () {
123
+ return __generator(this, function (_a) {
124
+ return [2 /*return*/, this.executeRequest('patch', url, data, headers)];
125
+ });
126
+ });
127
+ };
128
+ TastytradeHttpClient.prototype.deleteData = function (url, headers) {
129
+ return __awaiter(this, void 0, void 0, function () {
130
+ return __generator(this, function (_a) {
131
+ return [2 /*return*/, this.executeRequest('delete', url, headers)];
132
+ });
133
+ });
134
+ };
135
+ return TastytradeHttpClient;
136
+ }());
137
+ exports.default = TastytradeHttpClient;
@@ -0,0 +1,8 @@
1
+ import TastytradeHttpClient from "./tastytrade-http-client";
2
+ export default class TransactionsService {
3
+ private httpClient;
4
+ constructor(httpClient: TastytradeHttpClient);
5
+ getTransaction(accountNumber: string, id: string): Promise<any>;
6
+ getTotalFees(accountNumber: string): Promise<any>;
7
+ getAccountTransactions(accountNumber: string, queryParams?: {}): Promise<any>;
8
+ }