@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.
- package/.env +5 -0
- package/.eslintrc.cjs +18 -0
- package/.vscode/launch.json +24 -0
- package/LICENSE +21 -0
- package/README.md +21 -0
- package/dist/account-streamer.d.ts +92 -0
- package/dist/account-streamer.js +394 -0
- package/dist/models/tastytrade-session.d.ts +5 -0
- package/dist/models/tastytrade-session.js +23 -0
- package/dist/quote-streamer.d.ts +11 -0
- package/dist/quote-streamer.js +63 -0
- package/dist/services/account-status-service.d.ts +6 -0
- package/dist/services/account-status-service.js +64 -0
- package/dist/services/accounts-and-customers-service.d.ts +10 -0
- package/dist/services/accounts-and-customers-service.js +116 -0
- package/dist/services/balances-and-positions-service.d.ts +8 -0
- package/dist/services/balances-and-positions-service.js +93 -0
- package/dist/services/instruments-service.d.ts +28 -0
- package/dist/services/instruments-service.js +370 -0
- package/dist/services/margin-requirements-service.d.ts +7 -0
- package/dist/services/margin-requirements-service.js +76 -0
- package/dist/services/market-metrics-service.d.ts +8 -0
- package/dist/services/market-metrics-service.js +91 -0
- package/dist/services/net-liquidating-value-history-service.d.ts +7 -0
- package/dist/services/net-liquidating-value-history-service.js +77 -0
- package/dist/services/orders-service.d.ts +17 -0
- package/dist/services/orders-service.js +208 -0
- package/dist/services/risk-parameters-service.d.ts +7 -0
- package/dist/services/risk-parameters-service.js +76 -0
- package/dist/services/session-service.d.ts +9 -0
- package/dist/services/session-service.js +113 -0
- package/dist/services/symbol-search-service.d.ts +6 -0
- package/dist/services/symbol-search-service.js +63 -0
- package/dist/services/tastytrade-http-client.d.ts +13 -0
- package/dist/services/tastytrade-http-client.js +137 -0
- package/dist/services/transactions-service.d.ts +8 -0
- package/dist/services/transactions-service.js +91 -0
- package/dist/services/watchlists-service.d.ts +14 -0
- package/dist/services/watchlists-service.js +170 -0
- package/dist/tastytrade-api.d.ts +40 -0
- package/dist/tastytrade-api.js +56 -0
- package/dist/utils/json-util.d.ts +14 -0
- package/dist/utils/json-util.js +43 -0
- package/dist/utils/response-util.d.ts +1 -0
- package/dist/utils/response-util.js +21 -0
- package/lib/account-streamer.ts +394 -0
- package/lib/models/tastytrade-session.ts +13 -0
- package/lib/quote-streamer.ts +40 -0
- package/lib/services/account-status-service.ts +15 -0
- package/lib/services/accounts-and-customers-service.ts +35 -0
- package/lib/services/balances-and-positions-service.ts +29 -0
- package/lib/services/instruments-service.ts +138 -0
- package/lib/services/margin-requirements-service.ts +19 -0
- package/lib/services/market-metrics-service.ts +24 -0
- package/lib/services/net-liquidating-value-history-service.ts +20 -0
- package/lib/services/orders-service.ts +80 -0
- package/lib/services/risk-parameters-service.ts +19 -0
- package/lib/services/session-service.ts +35 -0
- package/lib/services/symbol-search-service.ts +14 -0
- package/lib/services/tastytrade-http-client.ts +65 -0
- package/lib/services/transactions-service.ts +27 -0
- package/lib/services/watchlists-service.ts +58 -0
- package/lib/tastytrade-api.ts +65 -0
- package/lib/utils/json-util.ts +44 -0
- package/lib/utils/response-util.ts +15 -0
- package/package.json +35 -0
- package/tsconfig.json +71 -0
|
@@ -0,0 +1,91 @@
|
|
|
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 TransactionsService = /** @class */ (function () {
|
|
44
|
+
function TransactionsService(httpClient) {
|
|
45
|
+
this.httpClient = httpClient;
|
|
46
|
+
}
|
|
47
|
+
//Accounts: Operations about Accounts
|
|
48
|
+
TransactionsService.prototype.getTransaction = function (accountNumber, id) {
|
|
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("/accounts/".concat(accountNumber, "/transactions/").concat(id), {}, {})];
|
|
54
|
+
case 1:
|
|
55
|
+
symbolData = (_a.sent());
|
|
56
|
+
return [2 /*return*/, (0, response_util_1.default)(symbolData)];
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
TransactionsService.prototype.getTotalFees = function (accountNumber) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
63
|
+
var totalFees;
|
|
64
|
+
return __generator(this, function (_a) {
|
|
65
|
+
switch (_a.label) {
|
|
66
|
+
case 0: return [4 /*yield*/, this.httpClient.getData("/accounts/".concat(accountNumber, "/transactions/total-fees"), {}, {})];
|
|
67
|
+
case 1:
|
|
68
|
+
totalFees = (_a.sent());
|
|
69
|
+
return [2 /*return*/, (0, response_util_1.default)(totalFees)];
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
//Transactions: Operations about transactions
|
|
75
|
+
TransactionsService.prototype.getAccountTransactions = function (accountNumber, queryParams) {
|
|
76
|
+
if (queryParams === void 0) { queryParams = {}; }
|
|
77
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
78
|
+
var accountTransactions;
|
|
79
|
+
return __generator(this, function (_a) {
|
|
80
|
+
switch (_a.label) {
|
|
81
|
+
case 0: return [4 /*yield*/, this.httpClient.getData("/accounts/".concat(accountNumber, "/transactions"), {}, queryParams)];
|
|
82
|
+
case 1:
|
|
83
|
+
accountTransactions = (_a.sent());
|
|
84
|
+
return [2 /*return*/, (0, response_util_1.default)(accountTransactions)];
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
return TransactionsService;
|
|
90
|
+
}());
|
|
91
|
+
exports.default = TransactionsService;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import TastytradeHttpClient from "./tastytrade-http-client";
|
|
2
|
+
export default class WatchlistsService {
|
|
3
|
+
private httpClient;
|
|
4
|
+
constructor(httpClient: TastytradeHttpClient);
|
|
5
|
+
getPairsWatchlists(): Promise<any>;
|
|
6
|
+
getPairsWatchlist(pairsWatchlistName: string): Promise<any>;
|
|
7
|
+
getPublicWatchlists(countsOnly?: boolean): Promise<any>;
|
|
8
|
+
getPublicWatchlist(watchlistName: string): Promise<any>;
|
|
9
|
+
createAccountWatchlist(watchlist: object): Promise<any>;
|
|
10
|
+
getAllWatchlists(): Promise<any>;
|
|
11
|
+
replaceWatchlist(watchlistName: string, replacementWatchlist: object): Promise<any>;
|
|
12
|
+
deleteWatchlist(watchlistName: string): Promise<any>;
|
|
13
|
+
getSingleWatchlist(watchlistName: string): Promise<any>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
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 WatchlistsService = /** @class */ (function () {
|
|
44
|
+
function WatchlistsService(httpClient) {
|
|
45
|
+
this.httpClient = httpClient;
|
|
46
|
+
}
|
|
47
|
+
//Pairs Watchlists: Allows an API client to fetch pairs watchlists.
|
|
48
|
+
WatchlistsService.prototype.getPairsWatchlists = function () {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
50
|
+
var pairsWatchlists;
|
|
51
|
+
return __generator(this, function (_a) {
|
|
52
|
+
switch (_a.label) {
|
|
53
|
+
case 0: return [4 /*yield*/, this.httpClient.getData("/pairs-watchlists", {}, {})];
|
|
54
|
+
case 1:
|
|
55
|
+
pairsWatchlists = _a.sent();
|
|
56
|
+
return [2 /*return*/, (0, response_util_1.default)(pairsWatchlists)];
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
WatchlistsService.prototype.getPairsWatchlist = function (pairsWatchlistName) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
63
|
+
var pairsWatchlist;
|
|
64
|
+
return __generator(this, function (_a) {
|
|
65
|
+
switch (_a.label) {
|
|
66
|
+
case 0: return [4 /*yield*/, this.httpClient.getData("/pairs-watchlists/".concat(pairsWatchlistName), {}, {})];
|
|
67
|
+
case 1:
|
|
68
|
+
pairsWatchlist = _a.sent();
|
|
69
|
+
return [2 /*return*/, (0, response_util_1.default)(pairsWatchlist)];
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
//Public Watchlists: Allows an API client to fetch tastyworks watchlists.
|
|
75
|
+
WatchlistsService.prototype.getPublicWatchlists = function (countsOnly) {
|
|
76
|
+
if (countsOnly === void 0) { countsOnly = false; }
|
|
77
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
78
|
+
var publicWatchlists;
|
|
79
|
+
return __generator(this, function (_a) {
|
|
80
|
+
switch (_a.label) {
|
|
81
|
+
case 0: return [4 /*yield*/, this.httpClient.getData("/public-watchlists", {}, { 'counts-only': countsOnly })];
|
|
82
|
+
case 1:
|
|
83
|
+
publicWatchlists = _a.sent();
|
|
84
|
+
return [2 /*return*/, (0, response_util_1.default)(publicWatchlists)];
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
WatchlistsService.prototype.getPublicWatchlist = function (watchlistName) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
91
|
+
var publicWatchlist;
|
|
92
|
+
return __generator(this, function (_a) {
|
|
93
|
+
switch (_a.label) {
|
|
94
|
+
case 0: return [4 /*yield*/, this.httpClient.getData("/public-watchlists/".concat(watchlistName), {}, {})];
|
|
95
|
+
case 1:
|
|
96
|
+
publicWatchlist = _a.sent();
|
|
97
|
+
return [2 /*return*/, (0, response_util_1.default)(publicWatchlist)];
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
//User Watchlists: Allows an API client to fetch a user's watchlists.
|
|
103
|
+
WatchlistsService.prototype.createAccountWatchlist = function (watchlist) {
|
|
104
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
105
|
+
var accountWatchlist;
|
|
106
|
+
return __generator(this, function (_a) {
|
|
107
|
+
switch (_a.label) {
|
|
108
|
+
case 0: return [4 /*yield*/, this.httpClient.postData("/watchlists", watchlist, {})];
|
|
109
|
+
case 1:
|
|
110
|
+
accountWatchlist = _a.sent();
|
|
111
|
+
return [2 /*return*/, (0, response_util_1.default)(accountWatchlist)];
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
WatchlistsService.prototype.getAllWatchlists = function () {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
118
|
+
var allWatchlists;
|
|
119
|
+
return __generator(this, function (_a) {
|
|
120
|
+
switch (_a.label) {
|
|
121
|
+
case 0: return [4 /*yield*/, this.httpClient.getData("/watchlists", {}, {})];
|
|
122
|
+
case 1:
|
|
123
|
+
allWatchlists = _a.sent();
|
|
124
|
+
return [2 /*return*/, (0, response_util_1.default)(allWatchlists)];
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
};
|
|
129
|
+
WatchlistsService.prototype.replaceWatchlist = function (watchlistName, replacementWatchlist) {
|
|
130
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
131
|
+
var watchlist;
|
|
132
|
+
return __generator(this, function (_a) {
|
|
133
|
+
switch (_a.label) {
|
|
134
|
+
case 0: return [4 /*yield*/, this.httpClient.putData("/watchlists/".concat(watchlistName), replacementWatchlist, {})];
|
|
135
|
+
case 1:
|
|
136
|
+
watchlist = _a.sent();
|
|
137
|
+
return [2 /*return*/, (0, response_util_1.default)(watchlist)];
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
WatchlistsService.prototype.deleteWatchlist = function (watchlistName) {
|
|
143
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
144
|
+
var watchlist;
|
|
145
|
+
return __generator(this, function (_a) {
|
|
146
|
+
switch (_a.label) {
|
|
147
|
+
case 0: return [4 /*yield*/, this.httpClient.deleteData("/watchlists/".concat(watchlistName), {})];
|
|
148
|
+
case 1:
|
|
149
|
+
watchlist = _a.sent();
|
|
150
|
+
return [2 /*return*/, (0, response_util_1.default)(watchlist)];
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
WatchlistsService.prototype.getSingleWatchlist = function (watchlistName) {
|
|
156
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
157
|
+
var singleWatchlist;
|
|
158
|
+
return __generator(this, function (_a) {
|
|
159
|
+
switch (_a.label) {
|
|
160
|
+
case 0: return [4 /*yield*/, this.httpClient.getData("/watchlists/".concat(watchlistName), {}, {})];
|
|
161
|
+
case 1:
|
|
162
|
+
singleWatchlist = _a.sent();
|
|
163
|
+
return [2 /*return*/, (0, response_util_1.default)(singleWatchlist)];
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
};
|
|
168
|
+
return WatchlistsService;
|
|
169
|
+
}());
|
|
170
|
+
exports.default = WatchlistsService;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import TastytradeHttpClient from "./services/tastytrade-http-client";
|
|
2
|
+
import { AccountStreamer, STREAMER_STATE, Disposer, StreamerStateObserver } from './account-streamer';
|
|
3
|
+
import QuoteStreamer from "./quote-streamer";
|
|
4
|
+
import SessionService from "./services/session-service";
|
|
5
|
+
import AccountStatusService from "./services/account-status-service";
|
|
6
|
+
import AccountsAndCustomersService from "./services/accounts-and-customers-service";
|
|
7
|
+
import BalancesAndPositionsService from "./services/balances-and-positions-service";
|
|
8
|
+
import InstrumentsService from "./services/instruments-service";
|
|
9
|
+
import MarginRequirementsService from "./services/margin-requirements-service";
|
|
10
|
+
import MarketMetricsService from "./services/market-metrics-service";
|
|
11
|
+
import NetLiquidatingValueHistoryService from "./services/net-liquidating-value-history-service";
|
|
12
|
+
import OrderService from "./services/orders-service";
|
|
13
|
+
import RiskParametersService from "./services/risk-parameters-service";
|
|
14
|
+
import SymbolSearchService from "./services/symbol-search-service";
|
|
15
|
+
import TransactionsService from "./services/transactions-service";
|
|
16
|
+
import WatchlistsService from "./services/watchlists-service";
|
|
17
|
+
import TastytradeSession from "./models/tastytrade-session";
|
|
18
|
+
export default class TastytradeClient {
|
|
19
|
+
readonly baseUrl: string;
|
|
20
|
+
readonly accountStreamerUrl: string;
|
|
21
|
+
readonly httpClient: TastytradeHttpClient;
|
|
22
|
+
readonly accountStreamer: AccountStreamer;
|
|
23
|
+
readonly sessionService: SessionService;
|
|
24
|
+
readonly accountStatusService: AccountStatusService;
|
|
25
|
+
readonly accountsAndCustomersService: AccountsAndCustomersService;
|
|
26
|
+
readonly balancesAndPositionsService: BalancesAndPositionsService;
|
|
27
|
+
readonly instrumentsService: InstrumentsService;
|
|
28
|
+
readonly marginRequirementsService: MarginRequirementsService;
|
|
29
|
+
readonly marketMetricsService: MarketMetricsService;
|
|
30
|
+
readonly netLiquidatingValueHistoryService: NetLiquidatingValueHistoryService;
|
|
31
|
+
readonly orderService: OrderService;
|
|
32
|
+
readonly riskParametersService: RiskParametersService;
|
|
33
|
+
readonly symbolSearchService: SymbolSearchService;
|
|
34
|
+
readonly transactionsService: TransactionsService;
|
|
35
|
+
readonly watchlistsService: WatchlistsService;
|
|
36
|
+
constructor(baseUrl: string, accountStreamerUrl: string);
|
|
37
|
+
get session(): TastytradeSession;
|
|
38
|
+
}
|
|
39
|
+
export { QuoteStreamer };
|
|
40
|
+
export { AccountStreamer, STREAMER_STATE, Disposer, StreamerStateObserver };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.STREAMER_STATE = exports.AccountStreamer = exports.QuoteStreamer = void 0;
|
|
7
|
+
var tastytrade_http_client_1 = __importDefault(require("./services/tastytrade-http-client"));
|
|
8
|
+
var account_streamer_1 = require("./account-streamer");
|
|
9
|
+
Object.defineProperty(exports, "AccountStreamer", { enumerable: true, get: function () { return account_streamer_1.AccountStreamer; } });
|
|
10
|
+
Object.defineProperty(exports, "STREAMER_STATE", { enumerable: true, get: function () { return account_streamer_1.STREAMER_STATE; } });
|
|
11
|
+
var quote_streamer_1 = __importDefault(require("./quote-streamer"));
|
|
12
|
+
exports.QuoteStreamer = quote_streamer_1.default;
|
|
13
|
+
//Services:
|
|
14
|
+
var session_service_1 = __importDefault(require("./services/session-service"));
|
|
15
|
+
var account_status_service_1 = __importDefault(require("./services/account-status-service"));
|
|
16
|
+
var accounts_and_customers_service_1 = __importDefault(require("./services/accounts-and-customers-service"));
|
|
17
|
+
var balances_and_positions_service_1 = __importDefault(require("./services/balances-and-positions-service"));
|
|
18
|
+
var instruments_service_1 = __importDefault(require("./services/instruments-service"));
|
|
19
|
+
var margin_requirements_service_1 = __importDefault(require("./services/margin-requirements-service"));
|
|
20
|
+
var market_metrics_service_1 = __importDefault(require("./services/market-metrics-service"));
|
|
21
|
+
var net_liquidating_value_history_service_1 = __importDefault(require("./services/net-liquidating-value-history-service"));
|
|
22
|
+
var orders_service_1 = __importDefault(require("./services/orders-service"));
|
|
23
|
+
var risk_parameters_service_1 = __importDefault(require("./services/risk-parameters-service"));
|
|
24
|
+
var symbol_search_service_1 = __importDefault(require("./services/symbol-search-service"));
|
|
25
|
+
var transactions_service_1 = __importDefault(require("./services/transactions-service"));
|
|
26
|
+
var watchlists_service_1 = __importDefault(require("./services/watchlists-service"));
|
|
27
|
+
var TastytradeClient = /** @class */ (function () {
|
|
28
|
+
function TastytradeClient(baseUrl, accountStreamerUrl) {
|
|
29
|
+
this.baseUrl = baseUrl;
|
|
30
|
+
this.accountStreamerUrl = accountStreamerUrl;
|
|
31
|
+
this.httpClient = new tastytrade_http_client_1.default(baseUrl);
|
|
32
|
+
this.accountStreamer = new account_streamer_1.AccountStreamer(accountStreamerUrl, this.session);
|
|
33
|
+
this.sessionService = new session_service_1.default(this.httpClient);
|
|
34
|
+
this.accountStatusService = new account_status_service_1.default(this.httpClient);
|
|
35
|
+
this.accountsAndCustomersService = new accounts_and_customers_service_1.default(this.httpClient);
|
|
36
|
+
this.balancesAndPositionsService = new balances_and_positions_service_1.default(this.httpClient);
|
|
37
|
+
this.instrumentsService = new instruments_service_1.default(this.httpClient);
|
|
38
|
+
this.marginRequirementsService = new margin_requirements_service_1.default(this.httpClient);
|
|
39
|
+
this.marketMetricsService = new market_metrics_service_1.default(this.httpClient);
|
|
40
|
+
this.netLiquidatingValueHistoryService = new net_liquidating_value_history_service_1.default(this.httpClient);
|
|
41
|
+
this.orderService = new orders_service_1.default(this.httpClient);
|
|
42
|
+
this.riskParametersService = new risk_parameters_service_1.default(this.httpClient);
|
|
43
|
+
this.symbolSearchService = new symbol_search_service_1.default(this.httpClient);
|
|
44
|
+
this.transactionsService = new transactions_service_1.default(this.httpClient);
|
|
45
|
+
this.watchlistsService = new watchlists_service_1.default(this.httpClient);
|
|
46
|
+
}
|
|
47
|
+
Object.defineProperty(TastytradeClient.prototype, "session", {
|
|
48
|
+
get: function () {
|
|
49
|
+
return this.httpClient.session;
|
|
50
|
+
},
|
|
51
|
+
enumerable: false,
|
|
52
|
+
configurable: true
|
|
53
|
+
});
|
|
54
|
+
return TastytradeClient;
|
|
55
|
+
}());
|
|
56
|
+
exports.default = TastytradeClient;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
export declare type BasicJsonValue = boolean | number | string | null | undefined;
|
|
3
|
+
export declare type JsonValue = BasicJsonValue | JsonArray | JsonMap;
|
|
4
|
+
export interface JsonMap {
|
|
5
|
+
[key: string]: JsonValue | undefined;
|
|
6
|
+
}
|
|
7
|
+
export declare type JsonArray = JsonValue[];
|
|
8
|
+
export declare class JsonBuilder {
|
|
9
|
+
readonly json: JsonMap;
|
|
10
|
+
constructor(json?: JsonMap);
|
|
11
|
+
add(key: string, value: JsonValue, serializeEmpty?: boolean): this;
|
|
12
|
+
}
|
|
13
|
+
export declare function recursiveDasherizeKeys(body: any): _.Dictionary<any>;
|
|
14
|
+
export declare function dasherize(target: string): string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.dasherize = exports.recursiveDasherizeKeys = exports.JsonBuilder = void 0;
|
|
7
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
var JsonBuilder = /** @class */ (function () {
|
|
9
|
+
function JsonBuilder(json) {
|
|
10
|
+
if (json === void 0) { json = {}; }
|
|
11
|
+
this.json = json;
|
|
12
|
+
}
|
|
13
|
+
JsonBuilder.prototype.add = function (key, value, serializeEmpty) {
|
|
14
|
+
if (serializeEmpty === void 0) { serializeEmpty = false; }
|
|
15
|
+
if ((lodash_1.default.isNil(value) || value === '') && !serializeEmpty) {
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
this.json[key] = value;
|
|
19
|
+
return this;
|
|
20
|
+
};
|
|
21
|
+
return JsonBuilder;
|
|
22
|
+
}());
|
|
23
|
+
exports.JsonBuilder = JsonBuilder;
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
|
+
function recursiveDasherizeKeys(body) {
|
|
26
|
+
var dasherized = lodash_1.default.mapKeys(body, function (_value, key) { return dasherize(key); });
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
|
+
dasherized = lodash_1.default.mapValues(dasherized, function (value) {
|
|
29
|
+
if (lodash_1.default.isPlainObject(value)) {
|
|
30
|
+
return recursiveDasherizeKeys(value);
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
});
|
|
34
|
+
return dasherized;
|
|
35
|
+
}
|
|
36
|
+
exports.recursiveDasherizeKeys = recursiveDasherizeKeys;
|
|
37
|
+
function dasherize(target) {
|
|
38
|
+
// prettier-ignore
|
|
39
|
+
return target
|
|
40
|
+
.replace(/([A-Z])/g, function (_match, p1, _offset, _whole) { return "-".concat(p1.toLowerCase()); })
|
|
41
|
+
.replace(/\s/g, '-');
|
|
42
|
+
}
|
|
43
|
+
exports.dasherize = dasherize;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function extractResponseData(httpResponse: any): any;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var lodash_1 = __importDefault(require("lodash"));
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
|
+
function extractResponseData(httpResponse) {
|
|
9
|
+
if (lodash_1.default.has(httpResponse, 'data.data.items')) {
|
|
10
|
+
return lodash_1.default.get(httpResponse, 'data.data.items');
|
|
11
|
+
}
|
|
12
|
+
else if (lodash_1.default.has(httpResponse, 'data.data')) {
|
|
13
|
+
return lodash_1.default.get(httpResponse, 'data.data');
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
return httpResponse;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.default = extractResponseData;
|
|
20
|
+
// add login parser here
|
|
21
|
+
// create unit tests for login parser, extractreponsedata
|