thetadatadx 7.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,61 @@
1
+ # thetadatadx (Node.js / TypeScript)
2
+
3
+ Node.js SDK for ThetaData market data, powered by the `thetadatadx` Rust crate via napi-rs.
4
+
5
+ Every call goes through compiled Rust -- gRPC, protobuf, zstd, FIT decoding, and TCP streaming all happen at native speed. Node.js is just the interface.
6
+
7
+ ## Prerequisites
8
+
9
+ - Node.js >= 18
10
+ - Rust stable toolchain (for building from source)
11
+ - `protoc` (Protocol Buffers compiler)
12
+
13
+ ## Build from source
14
+
15
+ ```bash
16
+ cd sdks/typescript
17
+ npm install
18
+ npm run build # release build -> thetadatadx.node
19
+ ```
20
+
21
+ ## Usage
22
+
23
+ ```js
24
+ const { ThetaDataDx } = require('thetadatadx');
25
+
26
+ // Connect (requires ThetaData credentials)
27
+ const tdx = await ThetaDataDx.connect('user@example.com', 'password');
28
+ // Or from file: const tdx = await ThetaDataDx.connectFromFile('creds.txt');
29
+
30
+ // Historical: returns columnar object { close: number[], volume: number[], ... }
31
+ const ohlc = tdx.stockHistoryOHLC('AAPL', '20240315', '60000');
32
+ console.log(ohlc.close);
33
+
34
+ // With timeout
35
+ const snap = tdx.stockSnapshotQuote(['AAPL', 'MSFT'], null, null, 5000);
36
+
37
+ // Streaming
38
+ tdx.startStreaming();
39
+ tdx.subscribeQuotes('AAPL');
40
+ const event = tdx.nextEvent(1000); // poll with 1s timeout
41
+ tdx.stopStreaming();
42
+ ```
43
+
44
+ ## TypeScript types
45
+
46
+ Generated interfaces for every tick type live in `src/types.ts`:
47
+
48
+ ```ts
49
+ import type { OhlcTickColumnar, GreeksTickColumnar } from 'thetadatadx/src/types';
50
+ ```
51
+
52
+ Full type declarations for the `ThetaDataDx` class are in `index.d.ts` (auto-generated by napi-rs on build).
53
+
54
+ ## API reference
55
+
56
+ All 61 endpoints from `endpoint_surface.toml` are exposed as camelCase methods on `ThetaDataDx`. See `index.d.ts` after building for the complete method list with JSDoc comments.
57
+
58
+ ## Docs
59
+
60
+ - [Main project README](../../README.md)
61
+ - [API reference](../../docs/api-reference.md)
package/index.js ADDED
@@ -0,0 +1,5 @@
1
+ // Local-build loader for the napi native addon.
2
+ // After `npm run build`, the compiled .node binary lives next to this file.
3
+ const { ThetaDataDx } = require('./thetadatadx.node');
4
+ module.exports = { ThetaDataDx };
5
+ module.exports.ThetaDataDx = ThetaDataDx;
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "thetadatadx",
3
+ "version": "7.3.0",
4
+ "description": "Native ThetaData SDK for Node.js — powered by Rust via napi-rs",
5
+ "license": "GPL-3.0-or-later",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/userFRM/ThetaDataDx"
9
+ },
10
+ "main": "index.js",
11
+ "types": "index.d.ts",
12
+ "napi": {
13
+ "name": "thetadatadx",
14
+ "triples": {}
15
+ },
16
+ "scripts": {
17
+ "build": "napi build --release",
18
+ "build:debug": "napi build",
19
+ "test": "node --test __tests__/basic.test.mjs"
20
+ },
21
+ "devDependencies": {
22
+ "@napi-rs/cli": "^2.18.0"
23
+ },
24
+ "engines": {
25
+ "node": ">= 18"
26
+ },
27
+ "files": [
28
+ "index.js",
29
+ "index.d.ts",
30
+ "src/types.ts"
31
+ ]
32
+ }
package/src/types.ts ADDED
@@ -0,0 +1,209 @@
1
+ // @generated DO NOT EDIT — regenerated by build.rs from tick_schema.toml
2
+ // TypeScript interfaces for columnar tick data returned by the native addon.
3
+ // Each property is an array — one entry per tick row.
4
+
5
+ /** Calendar day. Market open/close schedule. */
6
+ export interface CalendarDayColumnar {
7
+ date: number[];
8
+ is_open: number[];
9
+ open_time: number[];
10
+ close_time: number[];
11
+ status: number[];
12
+ }
13
+
14
+ /** End-of-day tick. Full EOD snapshot with OHLC + quote. */
15
+ export interface EodTickColumnar {
16
+ ms_of_day: number[];
17
+ ms_of_day2: number[];
18
+ open: number[];
19
+ high: number[];
20
+ low: number[];
21
+ close: number[];
22
+ volume: number[];
23
+ count: number[];
24
+ bid_size: number[];
25
+ bid_exchange: number[];
26
+ bid: number[];
27
+ bid_condition: number[];
28
+ ask_size: number[];
29
+ ask_exchange: number[];
30
+ ask: number[];
31
+ ask_condition: number[];
32
+ date: number[];
33
+ expiration: number[];
34
+ strike: number[];
35
+ right: string[];
36
+ }
37
+
38
+ /** Greeks tick. Full set of option greeks. */
39
+ export interface GreeksTickColumnar {
40
+ ms_of_day: number[];
41
+ implied_volatility: number[];
42
+ delta: number[];
43
+ gamma: number[];
44
+ theta: number[];
45
+ vega: number[];
46
+ rho: number[];
47
+ iv_error: number[];
48
+ vanna: number[];
49
+ charm: number[];
50
+ vomma: number[];
51
+ veta: number[];
52
+ speed: number[];
53
+ zomma: number[];
54
+ color: number[];
55
+ ultima: number[];
56
+ d1: number[];
57
+ d2: number[];
58
+ dual_delta: number[];
59
+ dual_gamma: number[];
60
+ epsilon: number[];
61
+ lambda: number[];
62
+ vera: number[];
63
+ date: number[];
64
+ expiration: number[];
65
+ strike: number[];
66
+ right: string[];
67
+ }
68
+
69
+ /** Interest rate tick. End-of-day interest rate. */
70
+ export interface InterestRateTickColumnar {
71
+ ms_of_day: number[];
72
+ rate: number[];
73
+ date: number[];
74
+ }
75
+
76
+ /** Implied volatility tick. */
77
+ export interface IvTickColumnar {
78
+ ms_of_day: number[];
79
+ implied_volatility: number[];
80
+ iv_error: number[];
81
+ date: number[];
82
+ expiration: number[];
83
+ strike: number[];
84
+ right: string[];
85
+ }
86
+
87
+ /** Market value tick -- quoted bid/ask/price for a symbol. */
88
+ export interface MarketValueTickColumnar {
89
+ ms_of_day: number[];
90
+ market_bid: number[];
91
+ market_ask: number[];
92
+ market_price: number[];
93
+ date: number[];
94
+ expiration: number[];
95
+ strike: number[];
96
+ right: string[];
97
+ }
98
+
99
+ /** OHLC tick. Aggregated bar data. */
100
+ export interface OhlcTickColumnar {
101
+ ms_of_day: number[];
102
+ open: number[];
103
+ high: number[];
104
+ low: number[];
105
+ close: number[];
106
+ volume: number[];
107
+ count: number[];
108
+ date: number[];
109
+ expiration: number[];
110
+ strike: number[];
111
+ right: string[];
112
+ }
113
+
114
+ /** Open interest tick. */
115
+ export interface OpenInterestTickColumnar {
116
+ ms_of_day: number[];
117
+ open_interest: number[];
118
+ date: number[];
119
+ expiration: number[];
120
+ strike: number[];
121
+ right: string[];
122
+ }
123
+
124
+ /** Option contract. Contract specification. */
125
+ export interface OptionContractColumnar {
126
+ root: string[];
127
+ expiration: number[];
128
+ strike: number[];
129
+ right: number[];
130
+ }
131
+
132
+ /** Price tick. Generic price data point. */
133
+ export interface PriceTickColumnar {
134
+ ms_of_day: number[];
135
+ price: number[];
136
+ date: number[];
137
+ }
138
+
139
+ /** Quote tick. NBBO quote data. */
140
+ export interface QuoteTickColumnar {
141
+ ms_of_day: number[];
142
+ bid_size: number[];
143
+ bid_exchange: number[];
144
+ bid: number[];
145
+ bid_condition: number[];
146
+ ask_size: number[];
147
+ ask_exchange: number[];
148
+ ask: number[];
149
+ ask_condition: number[];
150
+ date: number[];
151
+ midpoint: number[];
152
+ expiration: number[];
153
+ strike: number[];
154
+ right: string[];
155
+ }
156
+
157
+ /** Combined trade + quote tick. */
158
+ export interface TradeQuoteTickColumnar {
159
+ ms_of_day: number[];
160
+ sequence: number[];
161
+ ext_condition1: number[];
162
+ ext_condition2: number[];
163
+ ext_condition3: number[];
164
+ ext_condition4: number[];
165
+ condition: number[];
166
+ size: number[];
167
+ exchange: number[];
168
+ price: number[];
169
+ condition_flags: number[];
170
+ price_flags: number[];
171
+ volume_type: number[];
172
+ records_back: number[];
173
+ quote_ms_of_day: number[];
174
+ bid_size: number[];
175
+ bid_exchange: number[];
176
+ bid: number[];
177
+ bid_condition: number[];
178
+ ask_size: number[];
179
+ ask_exchange: number[];
180
+ ask: number[];
181
+ ask_condition: number[];
182
+ date: number[];
183
+ expiration: number[];
184
+ strike: number[];
185
+ right: string[];
186
+ }
187
+
188
+ /** Trade tick. Core unit of trade data. */
189
+ export interface TradeTickColumnar {
190
+ ms_of_day: number[];
191
+ sequence: number[];
192
+ ext_condition1: number[];
193
+ ext_condition2: number[];
194
+ ext_condition3: number[];
195
+ ext_condition4: number[];
196
+ condition: number[];
197
+ size: number[];
198
+ exchange: number[];
199
+ price: number[];
200
+ condition_flags: number[];
201
+ price_flags: number[];
202
+ volume_type: number[];
203
+ records_back: number[];
204
+ date: number[];
205
+ expiration: number[];
206
+ strike: number[];
207
+ right: string[];
208
+ }
209
+