thetadatadx 7.3.0 → 7.3.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/README.md +23 -16
- package/index.d.ts +183 -0
- package/index.js +579 -5
- package/package.json +19 -6
package/README.md
CHANGED
|
@@ -1,31 +1,28 @@
|
|
|
1
1
|
# thetadatadx (Node.js / TypeScript)
|
|
2
2
|
|
|
3
|
-
Node.js SDK for ThetaData market data, powered by
|
|
3
|
+
Node.js SDK for ThetaData market data, powered by compiled Rust via napi-rs. Pre-built native binaries for Linux x64, macOS Apple Silicon, and Windows x64 — no Rust toolchain required.
|
|
4
4
|
|
|
5
|
-
Every call goes through compiled Rust
|
|
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
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
- Node.js >= 18
|
|
10
|
-
- Rust stable toolchain (for building from source)
|
|
11
|
-
- `protoc` (Protocol Buffers compiler)
|
|
12
|
-
|
|
13
|
-
## Build from source
|
|
7
|
+
## Install
|
|
14
8
|
|
|
15
9
|
```bash
|
|
16
|
-
|
|
17
|
-
npm install
|
|
18
|
-
npm run build # release build -> thetadatadx.node
|
|
10
|
+
npm install thetadatadx
|
|
19
11
|
```
|
|
20
12
|
|
|
13
|
+
Pre-built binaries are downloaded automatically for your platform. Supported:
|
|
14
|
+
- Linux x64 (glibc)
|
|
15
|
+
- macOS arm64 (Apple Silicon)
|
|
16
|
+
- Windows x64 (MSVC)
|
|
17
|
+
|
|
21
18
|
## Usage
|
|
22
19
|
|
|
23
20
|
```js
|
|
24
21
|
const { ThetaDataDx } = require('thetadatadx');
|
|
25
22
|
|
|
26
23
|
// Connect (requires ThetaData credentials)
|
|
27
|
-
const tdx =
|
|
28
|
-
// Or
|
|
24
|
+
const tdx = ThetaDataDx.connectFromFile('creds.txt');
|
|
25
|
+
// Or: const tdx = ThetaDataDx.connect('user@example.com', 'password');
|
|
29
26
|
|
|
30
27
|
// Historical: returns columnar object { close: number[], volume: number[], ... }
|
|
31
28
|
const ohlc = tdx.stockHistoryOHLC('AAPL', '20240315', '60000');
|
|
@@ -49,11 +46,21 @@ Generated interfaces for every tick type live in `src/types.ts`:
|
|
|
49
46
|
import type { OhlcTickColumnar, GreeksTickColumnar } from 'thetadatadx/src/types';
|
|
50
47
|
```
|
|
51
48
|
|
|
52
|
-
Full type declarations for the `ThetaDataDx` class are in `index.d.ts` (auto-generated by napi-rs
|
|
49
|
+
Full type declarations for the `ThetaDataDx` class are in `index.d.ts` (auto-generated by napi-rs).
|
|
50
|
+
|
|
51
|
+
## Building from source
|
|
52
|
+
|
|
53
|
+
Only needed if your platform doesn't have a pre-built binary or you want to develop locally:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
cd sdks/typescript
|
|
57
|
+
npm install
|
|
58
|
+
npm run build # requires Rust stable + protoc
|
|
59
|
+
```
|
|
53
60
|
|
|
54
61
|
## API reference
|
|
55
62
|
|
|
56
|
-
All 61 endpoints from `endpoint_surface.toml` are exposed as camelCase methods on `ThetaDataDx`. See `index.d.ts`
|
|
63
|
+
All 61 endpoints from `endpoint_surface.toml` are exposed as camelCase methods on `ThetaDataDx`. See `index.d.ts` for the complete method list with JSDoc comments.
|
|
57
64
|
|
|
58
65
|
## Docs
|
|
59
66
|
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/* auto-generated by NAPI-RS */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
export declare class ThetaDataDx {
|
|
4
|
+
/**
|
|
5
|
+
* Connect to ThetaData. Historical (MDDS/gRPC) only; call startStreaming()
|
|
6
|
+
* to begin FPSS real-time data.
|
|
7
|
+
*/
|
|
8
|
+
static connect(email: string, password: string): ThetaDataDx
|
|
9
|
+
/** Connect with a credentials file (line 1 = email, line 2 = password). */
|
|
10
|
+
static connectFromFile(path: string): ThetaDataDx
|
|
11
|
+
/** List all available stock ticker symbols. */
|
|
12
|
+
stockListSymbols(timeoutMs?: number | undefined | null): Array<string>
|
|
13
|
+
/** List available dates for a stock by request type (EOD, TRADE, QUOTE, etc.). */
|
|
14
|
+
stockListDates(requestType: string, symbol: string, timeoutMs?: number | undefined | null): Array<string>
|
|
15
|
+
/** Get the latest OHLC snapshot for one or more stocks. */
|
|
16
|
+
stockSnapshotOHLC(symbols: Array<string>, venue?: string | undefined | null, minTime?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
17
|
+
/** Get the latest trade snapshot for one or more stocks. */
|
|
18
|
+
stockSnapshotTrade(symbols: Array<string>, venue?: string | undefined | null, minTime?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
19
|
+
/** Get the latest NBBO quote snapshot for one or more stocks. */
|
|
20
|
+
stockSnapshotQuote(symbols: Array<string>, venue?: string | undefined | null, minTime?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
21
|
+
/** Get the latest market value snapshot for one or more stocks. */
|
|
22
|
+
stockSnapshotMarketValue(symbols: Array<string>, venue?: string | undefined | null, minTime?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
23
|
+
/** Fetch end-of-day stock data for a date range. Returns OHLCV + bid/ask per trading day. */
|
|
24
|
+
stockHistoryEOD(symbol: string, startDate: string, endDate: string, timeoutMs?: number | undefined | null): any
|
|
25
|
+
/** Fetch intraday OHLC bars for a stock on a single date. */
|
|
26
|
+
stockHistoryOHLC(symbol: string, date: string, interval: string, startTime?: string | undefined | null, endTime?: string | undefined | null, venue?: string | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
27
|
+
/** Fetch all trades for a stock on a given date. */
|
|
28
|
+
stockHistoryTrade(symbol: string, date: string, startTime?: string | undefined | null, endTime?: string | undefined | null, venue?: string | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
29
|
+
/** Fetch NBBO quotes for a stock on a given date at a given interval. */
|
|
30
|
+
stockHistoryQuote(symbol: string, date: string, interval: string, startTime?: string | undefined | null, endTime?: string | undefined | null, venue?: string | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
31
|
+
/** Fetch combined trade + quote ticks for a stock on a given date. Returns raw DataTable. */
|
|
32
|
+
stockHistoryTradeQuote(symbol: string, date: string, startTime?: string | undefined | null, endTime?: string | undefined | null, exclusive?: boolean | undefined | null, venue?: string | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
33
|
+
/** Fetch the trade at a specific time of day across a date range. */
|
|
34
|
+
stockAtTimeTrade(symbol: string, startDate: string, endDate: string, timeOfDay: string, venue?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
35
|
+
/** Fetch the quote at a specific time of day across a date range. */
|
|
36
|
+
stockAtTimeQuote(symbol: string, startDate: string, endDate: string, timeOfDay: string, venue?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
37
|
+
/** List all available option underlying symbols. */
|
|
38
|
+
optionListSymbols(timeoutMs?: number | undefined | null): Array<string>
|
|
39
|
+
/** List available dates for an option contract by request type. */
|
|
40
|
+
optionListDates(requestType: string, symbol: string, expiration: string, strike: string, right: string, timeoutMs?: number | undefined | null): Array<string>
|
|
41
|
+
/** List available expiration dates for an option underlying. */
|
|
42
|
+
optionListExpirations(symbol: string, timeoutMs?: number | undefined | null): Array<string>
|
|
43
|
+
/** List available strike prices for an option at a given expiration. */
|
|
44
|
+
optionListStrikes(symbol: string, expiration: string, timeoutMs?: number | undefined | null): Array<string>
|
|
45
|
+
/** List all option contracts for a symbol on a given date. */
|
|
46
|
+
optionListContracts(requestType: string, symbol: string, date: string, maxDte?: number | undefined | null, timeoutMs?: number | undefined | null): any
|
|
47
|
+
/** Get the latest OHLC snapshot for an option contract. */
|
|
48
|
+
optionSnapshotOHLC(symbol: string, expiration: string, strike: string, right: string, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, minTime?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
49
|
+
/** Get the latest trade snapshot for an option contract. */
|
|
50
|
+
optionSnapshotTrade(symbol: string, expiration: string, strike: string, right: string, strikeRange?: number | undefined | null, minTime?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
51
|
+
/** Get the latest NBBO quote snapshot for an option contract. */
|
|
52
|
+
optionSnapshotQuote(symbol: string, expiration: string, strike: string, right: string, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, minTime?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
53
|
+
/** Get the latest open interest snapshot for an option contract. */
|
|
54
|
+
optionSnapshotOpenInterest(symbol: string, expiration: string, strike: string, right: string, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, minTime?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
55
|
+
/** Get the latest market value snapshot for an option contract. */
|
|
56
|
+
optionSnapshotMarketValue(symbol: string, expiration: string, strike: string, right: string, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, minTime?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
57
|
+
/** Get implied volatility snapshot for an option contract (from ThetaData server). */
|
|
58
|
+
optionSnapshotGreeksImpliedVolatility(symbol: string, expiration: string, strike: string, right: string, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, stockPrice?: number | undefined | null, version?: string | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, minTime?: string | undefined | null, useMarketValue?: boolean | undefined | null, timeoutMs?: number | undefined | null): any
|
|
59
|
+
/** Get all Greeks snapshot for an option contract (from ThetaData server). */
|
|
60
|
+
optionSnapshotGreeksAll(symbol: string, expiration: string, strike: string, right: string, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, stockPrice?: number | undefined | null, version?: string | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, minTime?: string | undefined | null, useMarketValue?: boolean | undefined | null, timeoutMs?: number | undefined | null): any
|
|
61
|
+
/** Get first-order Greeks snapshot (delta, theta, rho) for an option contract. */
|
|
62
|
+
optionSnapshotGreeksFirstOrder(symbol: string, expiration: string, strike: string, right: string, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, stockPrice?: number | undefined | null, version?: string | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, minTime?: string | undefined | null, useMarketValue?: boolean | undefined | null, timeoutMs?: number | undefined | null): any
|
|
63
|
+
/** Get second-order Greeks snapshot (gamma, vanna, charm) for an option contract. */
|
|
64
|
+
optionSnapshotGreeksSecondOrder(symbol: string, expiration: string, strike: string, right: string, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, stockPrice?: number | undefined | null, version?: string | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, minTime?: string | undefined | null, useMarketValue?: boolean | undefined | null, timeoutMs?: number | undefined | null): any
|
|
65
|
+
/** Get third-order Greeks snapshot (speed, color, ultima) for an option contract. */
|
|
66
|
+
optionSnapshotGreeksThirdOrder(symbol: string, expiration: string, strike: string, right: string, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, stockPrice?: number | undefined | null, version?: string | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, minTime?: string | undefined | null, useMarketValue?: boolean | undefined | null, timeoutMs?: number | undefined | null): any
|
|
67
|
+
/** Fetch end-of-day option data for a contract over a date range. */
|
|
68
|
+
optionHistoryEOD(symbol: string, expiration: string, strike: string, right: string, startDate: string, endDate: string, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, timeoutMs?: number | undefined | null): any
|
|
69
|
+
/** Fetch intraday OHLC bars for an option contract. */
|
|
70
|
+
optionHistoryOHLC(symbol: string, expiration: string, strike: string, right: string, date: string, interval: string, startTime?: string | undefined | null, endTime?: string | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
71
|
+
/** Fetch all trades for an option contract on a given date. */
|
|
72
|
+
optionHistoryTrade(symbol: string, expiration: string, strike: string, right: string, date: string, startTime?: string | undefined | null, endTime?: string | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
73
|
+
/** Fetch NBBO quotes for an option contract on a given date. */
|
|
74
|
+
optionHistoryQuote(symbol: string, expiration: string, strike: string, right: string, date: string, interval: string, startTime?: string | undefined | null, endTime?: string | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
75
|
+
/** Fetch combined trade + quote ticks for an option contract. */
|
|
76
|
+
optionHistoryTradeQuote(symbol: string, expiration: string, strike: string, right: string, date: string, startTime?: string | undefined | null, endTime?: string | undefined | null, exclusive?: boolean | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
77
|
+
/** Fetch open interest history for an option contract. */
|
|
78
|
+
optionHistoryOpenInterest(symbol: string, expiration: string, strike: string, right: string, date: string, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
79
|
+
/** Fetch end-of-day Greeks history for an option contract. */
|
|
80
|
+
optionHistoryGreeksEOD(symbol: string, expiration: string, strike: string, right: string, startDate: string, endDate: string, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, version?: string | undefined | null, underlyerUseNbbo?: boolean | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, timeoutMs?: number | undefined | null): any
|
|
81
|
+
/** Fetch all Greeks history for an option contract (intraday, sampled by interval). */
|
|
82
|
+
optionHistoryGreeksAll(symbol: string, expiration: string, strike: string, right: string, date: string, interval: string, startTime?: string | undefined | null, endTime?: string | undefined | null, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, version?: string | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
83
|
+
/** Fetch all Greeks on each trade for an option contract. */
|
|
84
|
+
optionHistoryTradeGreeksAll(symbol: string, expiration: string, strike: string, right: string, date: string, startTime?: string | undefined | null, endTime?: string | undefined | null, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, version?: string | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
85
|
+
/** Fetch first-order Greeks history (intraday, sampled by interval). */
|
|
86
|
+
optionHistoryGreeksFirstOrder(symbol: string, expiration: string, strike: string, right: string, date: string, interval: string, startTime?: string | undefined | null, endTime?: string | undefined | null, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, version?: string | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
87
|
+
/** Fetch first-order Greeks on each trade for an option contract. */
|
|
88
|
+
optionHistoryTradeGreeksFirstOrder(symbol: string, expiration: string, strike: string, right: string, date: string, startTime?: string | undefined | null, endTime?: string | undefined | null, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, version?: string | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
89
|
+
/** Fetch second-order Greeks history (intraday, sampled by interval). */
|
|
90
|
+
optionHistoryGreeksSecondOrder(symbol: string, expiration: string, strike: string, right: string, date: string, interval: string, startTime?: string | undefined | null, endTime?: string | undefined | null, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, version?: string | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
91
|
+
/** Fetch second-order Greeks on each trade for an option contract. */
|
|
92
|
+
optionHistoryTradeGreeksSecondOrder(symbol: string, expiration: string, strike: string, right: string, date: string, startTime?: string | undefined | null, endTime?: string | undefined | null, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, version?: string | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
93
|
+
/** Fetch third-order Greeks history (intraday, sampled by interval). */
|
|
94
|
+
optionHistoryGreeksThirdOrder(symbol: string, expiration: string, strike: string, right: string, date: string, interval: string, startTime?: string | undefined | null, endTime?: string | undefined | null, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, version?: string | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
95
|
+
/** Fetch third-order Greeks on each trade for an option contract. */
|
|
96
|
+
optionHistoryTradeGreeksThirdOrder(symbol: string, expiration: string, strike: string, right: string, date: string, startTime?: string | undefined | null, endTime?: string | undefined | null, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, version?: string | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
97
|
+
/** Fetch implied volatility history (intraday, sampled by interval). */
|
|
98
|
+
optionHistoryGreeksImpliedVolatility(symbol: string, expiration: string, strike: string, right: string, date: string, interval: string, startTime?: string | undefined | null, endTime?: string | undefined | null, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, version?: string | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
99
|
+
/** Fetch implied volatility on each trade for an option contract. */
|
|
100
|
+
optionHistoryTradeGreeksImpliedVolatility(symbol: string, expiration: string, strike: string, right: string, date: string, startTime?: string | undefined | null, endTime?: string | undefined | null, annualDividend?: number | undefined | null, rateType?: string | undefined | null, rateValue?: number | undefined | null, version?: string | undefined | null, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
101
|
+
/** Fetch the trade at a specific time of day across a date range for an option. */
|
|
102
|
+
optionAtTimeTrade(symbol: string, expiration: string, strike: string, right: string, startDate: string, endDate: string, timeOfDay: string, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, timeoutMs?: number | undefined | null): any
|
|
103
|
+
/** Fetch the quote at a specific time of day across a date range for an option. */
|
|
104
|
+
optionAtTimeQuote(symbol: string, expiration: string, strike: string, right: string, startDate: string, endDate: string, timeOfDay: string, maxDte?: number | undefined | null, strikeRange?: number | undefined | null, timeoutMs?: number | undefined | null): any
|
|
105
|
+
/** List all available index symbols. */
|
|
106
|
+
indexListSymbols(timeoutMs?: number | undefined | null): Array<string>
|
|
107
|
+
/** List available dates for an index symbol. */
|
|
108
|
+
indexListDates(symbol: string, timeoutMs?: number | undefined | null): Array<string>
|
|
109
|
+
/** Get the latest OHLC snapshot for one or more indices. */
|
|
110
|
+
indexSnapshotOHLC(symbols: Array<string>, minTime?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
111
|
+
/** Get the latest price snapshot for one or more indices. */
|
|
112
|
+
indexSnapshotPrice(symbols: Array<string>, minTime?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
113
|
+
/** Get the latest market value snapshot for one or more indices. */
|
|
114
|
+
indexSnapshotMarketValue(symbols: Array<string>, minTime?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
115
|
+
/** Fetch end-of-day index data for a date range. */
|
|
116
|
+
indexHistoryEOD(symbol: string, startDate: string, endDate: string, timeoutMs?: number | undefined | null): any
|
|
117
|
+
/** Fetch intraday OHLC bars for an index. */
|
|
118
|
+
indexHistoryOHLC(symbol: string, startDate: string, endDate: string, interval: string, startTime?: string | undefined | null, endTime?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
119
|
+
/** Fetch intraday price history for an index. */
|
|
120
|
+
indexHistoryPrice(symbol: string, date: string, interval: string, startTime?: string | undefined | null, endTime?: string | undefined | null, startDate?: string | undefined | null, endDate?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
121
|
+
/** Fetch the index price at a specific time of day across a date range. */
|
|
122
|
+
indexAtTimePrice(symbol: string, startDate: string, endDate: string, timeOfDay: string, timeoutMs?: number | undefined | null): any
|
|
123
|
+
/** Check whether the market is open today. */
|
|
124
|
+
calendarOpenToday(timeoutMs?: number | undefined | null): any
|
|
125
|
+
/** Get calendar information for a specific date. */
|
|
126
|
+
calendarOnDate(date: string, timeoutMs?: number | undefined | null): any
|
|
127
|
+
/** Get calendar information for an entire year. */
|
|
128
|
+
calendarYear(year: string, timeoutMs?: number | undefined | null): any
|
|
129
|
+
/** Fetch end-of-day interest rate history. */
|
|
130
|
+
interestRateHistoryEOD(symbol: string, startDate: string, endDate: string, timeoutMs?: number | undefined | null): any
|
|
131
|
+
/** Fetch intraday OHLC bars across a date range. */
|
|
132
|
+
stockHistoryOHLCRange(symbol: string, startDate: string, endDate: string, interval: string, startTime?: string | undefined | null, endTime?: string | undefined | null, venue?: string | undefined | null, timeoutMs?: number | undefined | null): any
|
|
133
|
+
/** Start FPSS streaming. Events are buffered; poll with next_event(). */
|
|
134
|
+
startStreaming(): void
|
|
135
|
+
/** Whether the streaming connection is active. */
|
|
136
|
+
isStreaming(): boolean
|
|
137
|
+
/** Subscribe to real-time quote data for a stock symbol. */
|
|
138
|
+
subscribeQuotes(symbol: string): void
|
|
139
|
+
/** Subscribe to real-time trade data for a stock symbol. */
|
|
140
|
+
subscribeTrades(symbol: string): void
|
|
141
|
+
/** Subscribe to open interest data for a stock symbol. */
|
|
142
|
+
subscribeOpenInterest(symbol: string): void
|
|
143
|
+
/** Subscribe to quote data for an option contract. */
|
|
144
|
+
subscribeOptionQuotes(symbol: string, expiration: string, strike: string, right: string): void
|
|
145
|
+
/** Subscribe to trade data for an option contract. */
|
|
146
|
+
subscribeOptionTrades(symbol: string, expiration: string, strike: string, right: string): void
|
|
147
|
+
/** Subscribe to open interest data for an option contract. */
|
|
148
|
+
subscribeOptionOpenInterest(symbol: string, expiration: string, strike: string, right: string): void
|
|
149
|
+
/** Subscribe to all trades for a security type. */
|
|
150
|
+
subscribeFullTrades(secType: string): void
|
|
151
|
+
/** Subscribe to all open interest for a security type. */
|
|
152
|
+
subscribeFullOpenInterest(secType: string): void
|
|
153
|
+
/** Unsubscribe from quote data for a stock symbol. */
|
|
154
|
+
unsubscribeQuotes(symbol: string): void
|
|
155
|
+
/** Unsubscribe from trade data for a stock symbol. */
|
|
156
|
+
unsubscribeTrades(symbol: string): void
|
|
157
|
+
/** Unsubscribe from open interest data for a stock symbol. */
|
|
158
|
+
unsubscribeOpenInterest(symbol: string): void
|
|
159
|
+
/** Unsubscribe from quote data for an option contract. */
|
|
160
|
+
unsubscribeOptionQuotes(symbol: string, expiration: string, strike: string, right: string): void
|
|
161
|
+
/** Unsubscribe from trade data for an option contract. */
|
|
162
|
+
unsubscribeOptionTrades(symbol: string, expiration: string, strike: string, right: string): void
|
|
163
|
+
/** Unsubscribe from open interest data for an option contract. */
|
|
164
|
+
unsubscribeOptionOpenInterest(symbol: string, expiration: string, strike: string, right: string): void
|
|
165
|
+
/** Unsubscribe from all trades for a security type. */
|
|
166
|
+
unsubscribeFullTrades(secType: string): void
|
|
167
|
+
/** Unsubscribe from all open interest for a security type. */
|
|
168
|
+
unsubscribeFullOpenInterest(secType: string): void
|
|
169
|
+
/** Get the current contract map keyed by server-assigned contract ID. */
|
|
170
|
+
contractMap(): Record<string, string>
|
|
171
|
+
/** Look up a single contract by its server-assigned ID. */
|
|
172
|
+
contractLookup(id: number): string | null
|
|
173
|
+
/** Get a snapshot of currently active subscriptions. */
|
|
174
|
+
activeSubscriptions(): any
|
|
175
|
+
/** Poll for the next FPSS event. */
|
|
176
|
+
nextEvent(timeoutMs: number): any | null
|
|
177
|
+
/** Reconnect streaming and re-subscribe all previous subscriptions. */
|
|
178
|
+
reconnect(): void
|
|
179
|
+
/** Stop streaming while keeping the historical client usable. */
|
|
180
|
+
stopStreaming(): void
|
|
181
|
+
/** Shut down the FPSS streaming connection. */
|
|
182
|
+
shutdown(): void
|
|
183
|
+
}
|
package/index.js
CHANGED
|
@@ -1,5 +1,579 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
// prettier-ignore
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
// @ts-nocheck
|
|
4
|
+
/* auto-generated by NAPI-RS */
|
|
5
|
+
|
|
6
|
+
const { readFileSync } = require('node:fs')
|
|
7
|
+
let nativeBinding = null
|
|
8
|
+
const loadErrors = []
|
|
9
|
+
|
|
10
|
+
const isMusl = () => {
|
|
11
|
+
let musl = false
|
|
12
|
+
if (process.platform === 'linux') {
|
|
13
|
+
musl = isMuslFromFilesystem()
|
|
14
|
+
if (musl === null) {
|
|
15
|
+
musl = isMuslFromReport()
|
|
16
|
+
}
|
|
17
|
+
if (musl === null) {
|
|
18
|
+
musl = isMuslFromChildProcess()
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return musl
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')
|
|
25
|
+
|
|
26
|
+
const isMuslFromFilesystem = () => {
|
|
27
|
+
try {
|
|
28
|
+
return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')
|
|
29
|
+
} catch {
|
|
30
|
+
return null
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const isMuslFromReport = () => {
|
|
35
|
+
let report = null
|
|
36
|
+
if (typeof process.report?.getReport === 'function') {
|
|
37
|
+
process.report.excludeNetwork = true
|
|
38
|
+
report = process.report.getReport()
|
|
39
|
+
}
|
|
40
|
+
if (!report) {
|
|
41
|
+
return null
|
|
42
|
+
}
|
|
43
|
+
if (report.header && report.header.glibcVersionRuntime) {
|
|
44
|
+
return false
|
|
45
|
+
}
|
|
46
|
+
if (Array.isArray(report.sharedObjects)) {
|
|
47
|
+
if (report.sharedObjects.some(isFileMusl)) {
|
|
48
|
+
return true
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return false
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const isMuslFromChildProcess = () => {
|
|
55
|
+
try {
|
|
56
|
+
return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl')
|
|
57
|
+
} catch (e) {
|
|
58
|
+
// If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false
|
|
59
|
+
return false
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function requireNative() {
|
|
64
|
+
if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) {
|
|
65
|
+
try {
|
|
66
|
+
return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH);
|
|
67
|
+
} catch (err) {
|
|
68
|
+
loadErrors.push(err)
|
|
69
|
+
}
|
|
70
|
+
} else if (process.platform === 'android') {
|
|
71
|
+
if (process.arch === 'arm64') {
|
|
72
|
+
try {
|
|
73
|
+
return require('./thetadatadx.android-arm64.node')
|
|
74
|
+
} catch (e) {
|
|
75
|
+
loadErrors.push(e)
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const binding = require('thetadatadx-android-arm64')
|
|
79
|
+
const bindingPackageVersion = require('thetadatadx-android-arm64/package.json').version
|
|
80
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
81
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
82
|
+
}
|
|
83
|
+
return binding
|
|
84
|
+
} catch (e) {
|
|
85
|
+
loadErrors.push(e)
|
|
86
|
+
}
|
|
87
|
+
} else if (process.arch === 'arm') {
|
|
88
|
+
try {
|
|
89
|
+
return require('./thetadatadx.android-arm-eabi.node')
|
|
90
|
+
} catch (e) {
|
|
91
|
+
loadErrors.push(e)
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const binding = require('thetadatadx-android-arm-eabi')
|
|
95
|
+
const bindingPackageVersion = require('thetadatadx-android-arm-eabi/package.json').version
|
|
96
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
97
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
98
|
+
}
|
|
99
|
+
return binding
|
|
100
|
+
} catch (e) {
|
|
101
|
+
loadErrors.push(e)
|
|
102
|
+
}
|
|
103
|
+
} else {
|
|
104
|
+
loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`))
|
|
105
|
+
}
|
|
106
|
+
} else if (process.platform === 'win32') {
|
|
107
|
+
if (process.arch === 'x64') {
|
|
108
|
+
if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') {
|
|
109
|
+
try {
|
|
110
|
+
return require('./thetadatadx.win32-x64-gnu.node')
|
|
111
|
+
} catch (e) {
|
|
112
|
+
loadErrors.push(e)
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const binding = require('thetadatadx-win32-x64-gnu')
|
|
116
|
+
const bindingPackageVersion = require('thetadatadx-win32-x64-gnu/package.json').version
|
|
117
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
118
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
119
|
+
}
|
|
120
|
+
return binding
|
|
121
|
+
} catch (e) {
|
|
122
|
+
loadErrors.push(e)
|
|
123
|
+
}
|
|
124
|
+
} else {
|
|
125
|
+
try {
|
|
126
|
+
return require('./thetadatadx.win32-x64-msvc.node')
|
|
127
|
+
} catch (e) {
|
|
128
|
+
loadErrors.push(e)
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
const binding = require('thetadatadx-win32-x64-msvc')
|
|
132
|
+
const bindingPackageVersion = require('thetadatadx-win32-x64-msvc/package.json').version
|
|
133
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
134
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
135
|
+
}
|
|
136
|
+
return binding
|
|
137
|
+
} catch (e) {
|
|
138
|
+
loadErrors.push(e)
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
} else if (process.arch === 'ia32') {
|
|
142
|
+
try {
|
|
143
|
+
return require('./thetadatadx.win32-ia32-msvc.node')
|
|
144
|
+
} catch (e) {
|
|
145
|
+
loadErrors.push(e)
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
const binding = require('thetadatadx-win32-ia32-msvc')
|
|
149
|
+
const bindingPackageVersion = require('thetadatadx-win32-ia32-msvc/package.json').version
|
|
150
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
151
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
152
|
+
}
|
|
153
|
+
return binding
|
|
154
|
+
} catch (e) {
|
|
155
|
+
loadErrors.push(e)
|
|
156
|
+
}
|
|
157
|
+
} else if (process.arch === 'arm64') {
|
|
158
|
+
try {
|
|
159
|
+
return require('./thetadatadx.win32-arm64-msvc.node')
|
|
160
|
+
} catch (e) {
|
|
161
|
+
loadErrors.push(e)
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const binding = require('thetadatadx-win32-arm64-msvc')
|
|
165
|
+
const bindingPackageVersion = require('thetadatadx-win32-arm64-msvc/package.json').version
|
|
166
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
167
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
168
|
+
}
|
|
169
|
+
return binding
|
|
170
|
+
} catch (e) {
|
|
171
|
+
loadErrors.push(e)
|
|
172
|
+
}
|
|
173
|
+
} else {
|
|
174
|
+
loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`))
|
|
175
|
+
}
|
|
176
|
+
} else if (process.platform === 'darwin') {
|
|
177
|
+
try {
|
|
178
|
+
return require('./thetadatadx.darwin-universal.node')
|
|
179
|
+
} catch (e) {
|
|
180
|
+
loadErrors.push(e)
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
const binding = require('thetadatadx-darwin-universal')
|
|
184
|
+
const bindingPackageVersion = require('thetadatadx-darwin-universal/package.json').version
|
|
185
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
186
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
187
|
+
}
|
|
188
|
+
return binding
|
|
189
|
+
} catch (e) {
|
|
190
|
+
loadErrors.push(e)
|
|
191
|
+
}
|
|
192
|
+
if (process.arch === 'x64') {
|
|
193
|
+
try {
|
|
194
|
+
return require('./thetadatadx.darwin-x64.node')
|
|
195
|
+
} catch (e) {
|
|
196
|
+
loadErrors.push(e)
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
const binding = require('thetadatadx-darwin-x64')
|
|
200
|
+
const bindingPackageVersion = require('thetadatadx-darwin-x64/package.json').version
|
|
201
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
202
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
203
|
+
}
|
|
204
|
+
return binding
|
|
205
|
+
} catch (e) {
|
|
206
|
+
loadErrors.push(e)
|
|
207
|
+
}
|
|
208
|
+
} else if (process.arch === 'arm64') {
|
|
209
|
+
try {
|
|
210
|
+
return require('./thetadatadx.darwin-arm64.node')
|
|
211
|
+
} catch (e) {
|
|
212
|
+
loadErrors.push(e)
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
const binding = require('thetadatadx-darwin-arm64')
|
|
216
|
+
const bindingPackageVersion = require('thetadatadx-darwin-arm64/package.json').version
|
|
217
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
218
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
219
|
+
}
|
|
220
|
+
return binding
|
|
221
|
+
} catch (e) {
|
|
222
|
+
loadErrors.push(e)
|
|
223
|
+
}
|
|
224
|
+
} else {
|
|
225
|
+
loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`))
|
|
226
|
+
}
|
|
227
|
+
} else if (process.platform === 'freebsd') {
|
|
228
|
+
if (process.arch === 'x64') {
|
|
229
|
+
try {
|
|
230
|
+
return require('./thetadatadx.freebsd-x64.node')
|
|
231
|
+
} catch (e) {
|
|
232
|
+
loadErrors.push(e)
|
|
233
|
+
}
|
|
234
|
+
try {
|
|
235
|
+
const binding = require('thetadatadx-freebsd-x64')
|
|
236
|
+
const bindingPackageVersion = require('thetadatadx-freebsd-x64/package.json').version
|
|
237
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
238
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
239
|
+
}
|
|
240
|
+
return binding
|
|
241
|
+
} catch (e) {
|
|
242
|
+
loadErrors.push(e)
|
|
243
|
+
}
|
|
244
|
+
} else if (process.arch === 'arm64') {
|
|
245
|
+
try {
|
|
246
|
+
return require('./thetadatadx.freebsd-arm64.node')
|
|
247
|
+
} catch (e) {
|
|
248
|
+
loadErrors.push(e)
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
const binding = require('thetadatadx-freebsd-arm64')
|
|
252
|
+
const bindingPackageVersion = require('thetadatadx-freebsd-arm64/package.json').version
|
|
253
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
254
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
255
|
+
}
|
|
256
|
+
return binding
|
|
257
|
+
} catch (e) {
|
|
258
|
+
loadErrors.push(e)
|
|
259
|
+
}
|
|
260
|
+
} else {
|
|
261
|
+
loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`))
|
|
262
|
+
}
|
|
263
|
+
} else if (process.platform === 'linux') {
|
|
264
|
+
if (process.arch === 'x64') {
|
|
265
|
+
if (isMusl()) {
|
|
266
|
+
try {
|
|
267
|
+
return require('./thetadatadx.linux-x64-musl.node')
|
|
268
|
+
} catch (e) {
|
|
269
|
+
loadErrors.push(e)
|
|
270
|
+
}
|
|
271
|
+
try {
|
|
272
|
+
const binding = require('thetadatadx-linux-x64-musl')
|
|
273
|
+
const bindingPackageVersion = require('thetadatadx-linux-x64-musl/package.json').version
|
|
274
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
275
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
276
|
+
}
|
|
277
|
+
return binding
|
|
278
|
+
} catch (e) {
|
|
279
|
+
loadErrors.push(e)
|
|
280
|
+
}
|
|
281
|
+
} else {
|
|
282
|
+
try {
|
|
283
|
+
return require('./thetadatadx.linux-x64-gnu.node')
|
|
284
|
+
} catch (e) {
|
|
285
|
+
loadErrors.push(e)
|
|
286
|
+
}
|
|
287
|
+
try {
|
|
288
|
+
const binding = require('thetadatadx-linux-x64-gnu')
|
|
289
|
+
const bindingPackageVersion = require('thetadatadx-linux-x64-gnu/package.json').version
|
|
290
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
291
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
292
|
+
}
|
|
293
|
+
return binding
|
|
294
|
+
} catch (e) {
|
|
295
|
+
loadErrors.push(e)
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
} else if (process.arch === 'arm64') {
|
|
299
|
+
if (isMusl()) {
|
|
300
|
+
try {
|
|
301
|
+
return require('./thetadatadx.linux-arm64-musl.node')
|
|
302
|
+
} catch (e) {
|
|
303
|
+
loadErrors.push(e)
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
const binding = require('thetadatadx-linux-arm64-musl')
|
|
307
|
+
const bindingPackageVersion = require('thetadatadx-linux-arm64-musl/package.json').version
|
|
308
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
309
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
310
|
+
}
|
|
311
|
+
return binding
|
|
312
|
+
} catch (e) {
|
|
313
|
+
loadErrors.push(e)
|
|
314
|
+
}
|
|
315
|
+
} else {
|
|
316
|
+
try {
|
|
317
|
+
return require('./thetadatadx.linux-arm64-gnu.node')
|
|
318
|
+
} catch (e) {
|
|
319
|
+
loadErrors.push(e)
|
|
320
|
+
}
|
|
321
|
+
try {
|
|
322
|
+
const binding = require('thetadatadx-linux-arm64-gnu')
|
|
323
|
+
const bindingPackageVersion = require('thetadatadx-linux-arm64-gnu/package.json').version
|
|
324
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
325
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
326
|
+
}
|
|
327
|
+
return binding
|
|
328
|
+
} catch (e) {
|
|
329
|
+
loadErrors.push(e)
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
} else if (process.arch === 'arm') {
|
|
333
|
+
if (isMusl()) {
|
|
334
|
+
try {
|
|
335
|
+
return require('./thetadatadx.linux-arm-musleabihf.node')
|
|
336
|
+
} catch (e) {
|
|
337
|
+
loadErrors.push(e)
|
|
338
|
+
}
|
|
339
|
+
try {
|
|
340
|
+
const binding = require('thetadatadx-linux-arm-musleabihf')
|
|
341
|
+
const bindingPackageVersion = require('thetadatadx-linux-arm-musleabihf/package.json').version
|
|
342
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
343
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
344
|
+
}
|
|
345
|
+
return binding
|
|
346
|
+
} catch (e) {
|
|
347
|
+
loadErrors.push(e)
|
|
348
|
+
}
|
|
349
|
+
} else {
|
|
350
|
+
try {
|
|
351
|
+
return require('./thetadatadx.linux-arm-gnueabihf.node')
|
|
352
|
+
} catch (e) {
|
|
353
|
+
loadErrors.push(e)
|
|
354
|
+
}
|
|
355
|
+
try {
|
|
356
|
+
const binding = require('thetadatadx-linux-arm-gnueabihf')
|
|
357
|
+
const bindingPackageVersion = require('thetadatadx-linux-arm-gnueabihf/package.json').version
|
|
358
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
359
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
360
|
+
}
|
|
361
|
+
return binding
|
|
362
|
+
} catch (e) {
|
|
363
|
+
loadErrors.push(e)
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
} else if (process.arch === 'loong64') {
|
|
367
|
+
if (isMusl()) {
|
|
368
|
+
try {
|
|
369
|
+
return require('./thetadatadx.linux-loong64-musl.node')
|
|
370
|
+
} catch (e) {
|
|
371
|
+
loadErrors.push(e)
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
const binding = require('thetadatadx-linux-loong64-musl')
|
|
375
|
+
const bindingPackageVersion = require('thetadatadx-linux-loong64-musl/package.json').version
|
|
376
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
377
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
378
|
+
}
|
|
379
|
+
return binding
|
|
380
|
+
} catch (e) {
|
|
381
|
+
loadErrors.push(e)
|
|
382
|
+
}
|
|
383
|
+
} else {
|
|
384
|
+
try {
|
|
385
|
+
return require('./thetadatadx.linux-loong64-gnu.node')
|
|
386
|
+
} catch (e) {
|
|
387
|
+
loadErrors.push(e)
|
|
388
|
+
}
|
|
389
|
+
try {
|
|
390
|
+
const binding = require('thetadatadx-linux-loong64-gnu')
|
|
391
|
+
const bindingPackageVersion = require('thetadatadx-linux-loong64-gnu/package.json').version
|
|
392
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
393
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
394
|
+
}
|
|
395
|
+
return binding
|
|
396
|
+
} catch (e) {
|
|
397
|
+
loadErrors.push(e)
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
} else if (process.arch === 'riscv64') {
|
|
401
|
+
if (isMusl()) {
|
|
402
|
+
try {
|
|
403
|
+
return require('./thetadatadx.linux-riscv64-musl.node')
|
|
404
|
+
} catch (e) {
|
|
405
|
+
loadErrors.push(e)
|
|
406
|
+
}
|
|
407
|
+
try {
|
|
408
|
+
const binding = require('thetadatadx-linux-riscv64-musl')
|
|
409
|
+
const bindingPackageVersion = require('thetadatadx-linux-riscv64-musl/package.json').version
|
|
410
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
411
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
412
|
+
}
|
|
413
|
+
return binding
|
|
414
|
+
} catch (e) {
|
|
415
|
+
loadErrors.push(e)
|
|
416
|
+
}
|
|
417
|
+
} else {
|
|
418
|
+
try {
|
|
419
|
+
return require('./thetadatadx.linux-riscv64-gnu.node')
|
|
420
|
+
} catch (e) {
|
|
421
|
+
loadErrors.push(e)
|
|
422
|
+
}
|
|
423
|
+
try {
|
|
424
|
+
const binding = require('thetadatadx-linux-riscv64-gnu')
|
|
425
|
+
const bindingPackageVersion = require('thetadatadx-linux-riscv64-gnu/package.json').version
|
|
426
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
427
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
428
|
+
}
|
|
429
|
+
return binding
|
|
430
|
+
} catch (e) {
|
|
431
|
+
loadErrors.push(e)
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
} else if (process.arch === 'ppc64') {
|
|
435
|
+
try {
|
|
436
|
+
return require('./thetadatadx.linux-ppc64-gnu.node')
|
|
437
|
+
} catch (e) {
|
|
438
|
+
loadErrors.push(e)
|
|
439
|
+
}
|
|
440
|
+
try {
|
|
441
|
+
const binding = require('thetadatadx-linux-ppc64-gnu')
|
|
442
|
+
const bindingPackageVersion = require('thetadatadx-linux-ppc64-gnu/package.json').version
|
|
443
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
444
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
445
|
+
}
|
|
446
|
+
return binding
|
|
447
|
+
} catch (e) {
|
|
448
|
+
loadErrors.push(e)
|
|
449
|
+
}
|
|
450
|
+
} else if (process.arch === 's390x') {
|
|
451
|
+
try {
|
|
452
|
+
return require('./thetadatadx.linux-s390x-gnu.node')
|
|
453
|
+
} catch (e) {
|
|
454
|
+
loadErrors.push(e)
|
|
455
|
+
}
|
|
456
|
+
try {
|
|
457
|
+
const binding = require('thetadatadx-linux-s390x-gnu')
|
|
458
|
+
const bindingPackageVersion = require('thetadatadx-linux-s390x-gnu/package.json').version
|
|
459
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
460
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
461
|
+
}
|
|
462
|
+
return binding
|
|
463
|
+
} catch (e) {
|
|
464
|
+
loadErrors.push(e)
|
|
465
|
+
}
|
|
466
|
+
} else {
|
|
467
|
+
loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`))
|
|
468
|
+
}
|
|
469
|
+
} else if (process.platform === 'openharmony') {
|
|
470
|
+
if (process.arch === 'arm64') {
|
|
471
|
+
try {
|
|
472
|
+
return require('./thetadatadx.openharmony-arm64.node')
|
|
473
|
+
} catch (e) {
|
|
474
|
+
loadErrors.push(e)
|
|
475
|
+
}
|
|
476
|
+
try {
|
|
477
|
+
const binding = require('thetadatadx-openharmony-arm64')
|
|
478
|
+
const bindingPackageVersion = require('thetadatadx-openharmony-arm64/package.json').version
|
|
479
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
480
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
481
|
+
}
|
|
482
|
+
return binding
|
|
483
|
+
} catch (e) {
|
|
484
|
+
loadErrors.push(e)
|
|
485
|
+
}
|
|
486
|
+
} else if (process.arch === 'x64') {
|
|
487
|
+
try {
|
|
488
|
+
return require('./thetadatadx.openharmony-x64.node')
|
|
489
|
+
} catch (e) {
|
|
490
|
+
loadErrors.push(e)
|
|
491
|
+
}
|
|
492
|
+
try {
|
|
493
|
+
const binding = require('thetadatadx-openharmony-x64')
|
|
494
|
+
const bindingPackageVersion = require('thetadatadx-openharmony-x64/package.json').version
|
|
495
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
496
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
497
|
+
}
|
|
498
|
+
return binding
|
|
499
|
+
} catch (e) {
|
|
500
|
+
loadErrors.push(e)
|
|
501
|
+
}
|
|
502
|
+
} else if (process.arch === 'arm') {
|
|
503
|
+
try {
|
|
504
|
+
return require('./thetadatadx.openharmony-arm.node')
|
|
505
|
+
} catch (e) {
|
|
506
|
+
loadErrors.push(e)
|
|
507
|
+
}
|
|
508
|
+
try {
|
|
509
|
+
const binding = require('thetadatadx-openharmony-arm')
|
|
510
|
+
const bindingPackageVersion = require('thetadatadx-openharmony-arm/package.json').version
|
|
511
|
+
if (bindingPackageVersion !== '7.3.1' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {
|
|
512
|
+
throw new Error(`Native binding package version mismatch, expected 7.3.1 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)
|
|
513
|
+
}
|
|
514
|
+
return binding
|
|
515
|
+
} catch (e) {
|
|
516
|
+
loadErrors.push(e)
|
|
517
|
+
}
|
|
518
|
+
} else {
|
|
519
|
+
loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`))
|
|
520
|
+
}
|
|
521
|
+
} else {
|
|
522
|
+
loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`))
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
nativeBinding = requireNative()
|
|
527
|
+
|
|
528
|
+
if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
|
|
529
|
+
let wasiBinding = null
|
|
530
|
+
let wasiBindingError = null
|
|
531
|
+
try {
|
|
532
|
+
wasiBinding = require('./thetadatadx.wasi.cjs')
|
|
533
|
+
nativeBinding = wasiBinding
|
|
534
|
+
} catch (err) {
|
|
535
|
+
if (process.env.NAPI_RS_FORCE_WASI) {
|
|
536
|
+
wasiBindingError = err
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
|
|
540
|
+
try {
|
|
541
|
+
wasiBinding = require('thetadatadx-wasm32-wasi')
|
|
542
|
+
nativeBinding = wasiBinding
|
|
543
|
+
} catch (err) {
|
|
544
|
+
if (process.env.NAPI_RS_FORCE_WASI) {
|
|
545
|
+
if (!wasiBindingError) {
|
|
546
|
+
wasiBindingError = err
|
|
547
|
+
} else {
|
|
548
|
+
wasiBindingError.cause = err
|
|
549
|
+
}
|
|
550
|
+
loadErrors.push(err)
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) {
|
|
555
|
+
const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error')
|
|
556
|
+
error.cause = wasiBindingError
|
|
557
|
+
throw error
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
if (!nativeBinding) {
|
|
562
|
+
if (loadErrors.length > 0) {
|
|
563
|
+
throw new Error(
|
|
564
|
+
`Cannot find native binding. ` +
|
|
565
|
+
`npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` +
|
|
566
|
+
'Please try `npm i` again after removing both package-lock.json and node_modules directory.',
|
|
567
|
+
{
|
|
568
|
+
cause: loadErrors.reduce((err, cur) => {
|
|
569
|
+
cur.cause = err
|
|
570
|
+
return cur
|
|
571
|
+
}),
|
|
572
|
+
},
|
|
573
|
+
)
|
|
574
|
+
}
|
|
575
|
+
throw new Error(`Failed to load native binding`)
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
module.exports = nativeBinding
|
|
579
|
+
module.exports.ThetaDataDx = nativeBinding.ThetaDataDx
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thetadatadx",
|
|
3
|
-
"version": "7.3.
|
|
3
|
+
"version": "7.3.1",
|
|
4
4
|
"description": "Native ThetaData SDK for Node.js — powered by Rust via napi-rs",
|
|
5
5
|
"license": "GPL-3.0-or-later",
|
|
6
6
|
"repository": {
|
|
@@ -11,15 +11,28 @@
|
|
|
11
11
|
"types": "index.d.ts",
|
|
12
12
|
"napi": {
|
|
13
13
|
"name": "thetadatadx",
|
|
14
|
-
"triples": {
|
|
14
|
+
"triples": {
|
|
15
|
+
"defaults": false,
|
|
16
|
+
"additional": [
|
|
17
|
+
"x86_64-unknown-linux-gnu",
|
|
18
|
+
"aarch64-apple-darwin",
|
|
19
|
+
"x86_64-pc-windows-msvc"
|
|
20
|
+
]
|
|
21
|
+
}
|
|
15
22
|
},
|
|
16
23
|
"scripts": {
|
|
17
|
-
"build": "napi build --release",
|
|
18
|
-
"build:debug": "napi build",
|
|
19
|
-
"test": "node --test __tests__/basic.test.mjs"
|
|
24
|
+
"build": "napi build --platform --release",
|
|
25
|
+
"build:debug": "napi build --platform",
|
|
26
|
+
"test": "node --test __tests__/basic.test.mjs",
|
|
27
|
+
"version": "napi version"
|
|
20
28
|
},
|
|
21
29
|
"devDependencies": {
|
|
22
|
-
"@napi-rs/cli": "^
|
|
30
|
+
"@napi-rs/cli": "^3.6.2"
|
|
31
|
+
},
|
|
32
|
+
"optionalDependencies": {
|
|
33
|
+
"thetadatadx-linux-x64-gnu": "7.3.1",
|
|
34
|
+
"thetadatadx-darwin-arm64": "7.3.1",
|
|
35
|
+
"thetadatadx-win32-x64-msvc": "7.3.1"
|
|
23
36
|
},
|
|
24
37
|
"engines": {
|
|
25
38
|
"node": ">= 18"
|