@huskly/ibkr-client 1.1.1 → 1.2.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 +41 -11
- package/dist/ibkr/ibkrClient.d.ts +9 -4
- package/dist/ibkr/ibkrClient.d.ts.map +1 -1
- package/dist/ibkr/ibkrClient.js +156 -127
- package/dist/ibkr/ibkrClient.js.map +1 -1
- package/dist/ibkr/requestScheduler.d.ts +19 -2
- package/dist/ibkr/requestScheduler.d.ts.map +1 -1
- package/dist/ibkr/requestScheduler.js +149 -26
- package/dist/ibkr/requestScheduler.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -11,17 +11,21 @@ export type IbkrRequestErrorClassification = {
|
|
|
11
11
|
kind: "OTHER";
|
|
12
12
|
};
|
|
13
13
|
export interface IbkrRequestTelemetry {
|
|
14
|
-
event: "THROTTLED" | "SERVER_RETRY" | "CIRCUIT_OPEN" | "HISTORY_PERIOD_FALLBACK" | "HISTORY_WINDOW_FALLBACK";
|
|
14
|
+
event: "THROTTLED" | "SERVER_RETRY" | "CIRCUIT_OPEN" | "SECDEF_INFO_PACING" | "HISTORY_PERIOD_FALLBACK" | "HISTORY_WINDOW_FALLBACK";
|
|
15
15
|
endpoint: string;
|
|
16
16
|
attempt: number;
|
|
17
17
|
delayMs: number;
|
|
18
|
+
/** Current minimum interval for `secdef/info` starts, when applicable. */
|
|
19
|
+
effectiveMinStartIntervalMs?: number;
|
|
18
20
|
}
|
|
19
21
|
export interface IbkrRequestSchedulerOptions {
|
|
20
22
|
maxConcurrent?: number;
|
|
21
23
|
/** Maximum concurrent session-mutating discovery requests. Defaults to 1. */
|
|
22
24
|
maxDiscoveryConcurrent?: number;
|
|
23
|
-
/** Maximum concurrent read-only `secdef/info` requests. Defaults to
|
|
25
|
+
/** Maximum concurrent read-only `secdef/info` requests. Defaults to 1. */
|
|
24
26
|
maxSecdefInfoConcurrent?: number;
|
|
27
|
+
/** Minimum interval between `secdef/info` request starts. Defaults to 250 ms. */
|
|
28
|
+
secdefInfoMinStartIntervalMs?: number;
|
|
25
29
|
maxRetries?: number;
|
|
26
30
|
retryBaseDelayMs?: number;
|
|
27
31
|
retryMaxDelayMs?: number;
|
|
@@ -40,6 +44,10 @@ interface RequestOptions {
|
|
|
40
44
|
secdefInfo?: boolean;
|
|
41
45
|
retryable?: boolean;
|
|
42
46
|
retryServerErrors?: boolean;
|
|
47
|
+
/** Cancel only the jobs that belong to this caller operation. */
|
|
48
|
+
signal?: AbortSignal;
|
|
49
|
+
/** Notify the owning operation before this job reports a terminal failure. */
|
|
50
|
+
onTerminalFailure?: (error: unknown) => void;
|
|
43
51
|
}
|
|
44
52
|
export declare class IbkrRequestSchedulerError extends Error {
|
|
45
53
|
readonly code: "IBKR_THROTTLED" | "IBKR_TEMPORARILY_BLOCKED";
|
|
@@ -57,6 +65,7 @@ export declare class IbkrRequestScheduler {
|
|
|
57
65
|
private readonly maxConcurrent;
|
|
58
66
|
private readonly maxDiscoveryConcurrent;
|
|
59
67
|
private readonly maxSecdefInfoConcurrent;
|
|
68
|
+
private effectiveSecdefInfoMinStartIntervalMs;
|
|
60
69
|
private readonly maxRetries;
|
|
61
70
|
private readonly retryBaseDelayMs;
|
|
62
71
|
private readonly retryMaxDelayMs;
|
|
@@ -74,16 +83,24 @@ export declare class IbkrRequestScheduler {
|
|
|
74
83
|
private activeSecdefInfo;
|
|
75
84
|
private backoffUntil;
|
|
76
85
|
private backoffPromise;
|
|
86
|
+
private secdefInfoNextStartAt;
|
|
87
|
+
private secdefInfoPacingPromise;
|
|
77
88
|
private circuitOpenUntil;
|
|
78
89
|
constructor(options?: IbkrRequestSchedulerOptions);
|
|
79
90
|
schedule<T>(options: RequestOptions, task: () => Promise<T>): Promise<T>;
|
|
91
|
+
private resolveJob;
|
|
92
|
+
private rejectJob;
|
|
93
|
+
private removeAbortListener;
|
|
80
94
|
private drain;
|
|
81
95
|
private nextJobIndex;
|
|
82
96
|
private run;
|
|
83
97
|
private handleFailure;
|
|
98
|
+
private requeueIfActive;
|
|
99
|
+
private abortReason;
|
|
84
100
|
private retryDelay;
|
|
85
101
|
private emitTelemetry;
|
|
86
102
|
private ensureBackoffWait;
|
|
103
|
+
private ensureSecdefInfoPacingWait;
|
|
87
104
|
private openCircuit;
|
|
88
105
|
private currentCircuitError;
|
|
89
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestScheduler.d.ts","sourceRoot":"","sources":["../../src/ibkr/requestScheduler.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;AAEzE,MAAM,MAAM,8BAA8B,GACtC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtB,MAAM,WAAW,oBAAoB;IACnC,KAAK,EACD,WAAW,GACX,cAAc,GACd,cAAc,GACd,yBAAyB,GACzB,yBAAyB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"requestScheduler.d.ts","sourceRoot":"","sources":["../../src/ibkr/requestScheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ export class IbkrRequestScheduler {
|
|
|
28
28
|
maxConcurrent;
|
|
29
29
|
maxDiscoveryConcurrent;
|
|
30
30
|
maxSecdefInfoConcurrent;
|
|
31
|
+
effectiveSecdefInfoMinStartIntervalMs;
|
|
31
32
|
maxRetries;
|
|
32
33
|
retryBaseDelayMs;
|
|
33
34
|
retryMaxDelayMs;
|
|
@@ -45,12 +46,14 @@ export class IbkrRequestScheduler {
|
|
|
45
46
|
activeSecdefInfo = 0;
|
|
46
47
|
backoffUntil = 0;
|
|
47
48
|
backoffPromise;
|
|
49
|
+
secdefInfoNextStartAt = 0;
|
|
50
|
+
secdefInfoPacingPromise;
|
|
48
51
|
circuitOpenUntil = 0;
|
|
49
52
|
constructor(options = {}) {
|
|
50
53
|
this.maxConcurrent = options.maxConcurrent ?? 10;
|
|
51
54
|
this.maxDiscoveryConcurrent = options.maxDiscoveryConcurrent ?? 1;
|
|
52
|
-
this.maxSecdefInfoConcurrent =
|
|
53
|
-
|
|
55
|
+
this.maxSecdefInfoConcurrent = options.maxSecdefInfoConcurrent ?? 1;
|
|
56
|
+
this.effectiveSecdefInfoMinStartIntervalMs = options.secdefInfoMinStartIntervalMs ?? 250;
|
|
54
57
|
this.maxRetries = options.maxRetries ?? 3;
|
|
55
58
|
this.retryBaseDelayMs = options.retryBaseDelayMs ?? 250;
|
|
56
59
|
this.retryMaxDelayMs = options.retryMaxDelayMs ?? 5_000;
|
|
@@ -71,6 +74,10 @@ export class IbkrRequestScheduler {
|
|
|
71
74
|
this.maxSecdefInfoConcurrent > this.maxConcurrent) {
|
|
72
75
|
throw new Error("Invalid IBKR request concurrency limits");
|
|
73
76
|
}
|
|
77
|
+
if (!Number.isSafeInteger(this.effectiveSecdefInfoMinStartIntervalMs) ||
|
|
78
|
+
this.effectiveSecdefInfoMinStartIntervalMs < 0) {
|
|
79
|
+
throw new Error("Invalid IBKR request pacing limits");
|
|
80
|
+
}
|
|
74
81
|
if (!Number.isSafeInteger(this.maxRetries) ||
|
|
75
82
|
this.maxRetries < 0 ||
|
|
76
83
|
!Number.isSafeInteger(this.retryBaseDelayMs) ||
|
|
@@ -86,11 +93,13 @@ export class IbkrRequestScheduler {
|
|
|
86
93
|
}
|
|
87
94
|
}
|
|
88
95
|
schedule(options, task) {
|
|
96
|
+
if (options.signal?.aborted)
|
|
97
|
+
return Promise.reject(this.abortReason(options.signal));
|
|
89
98
|
const circuitError = this.currentCircuitError(options.endpoint);
|
|
90
99
|
if (circuitError !== undefined)
|
|
91
100
|
return Promise.reject(circuitError);
|
|
92
101
|
return new Promise((resolve, reject) => {
|
|
93
|
-
|
|
102
|
+
const job = {
|
|
94
103
|
sequence: this.sequence++,
|
|
95
104
|
endpoint: options.endpoint,
|
|
96
105
|
priority: options.priority,
|
|
@@ -103,14 +112,59 @@ export class IbkrRequestScheduler {
|
|
|
103
112
|
resolve(value);
|
|
104
113
|
},
|
|
105
114
|
reject,
|
|
106
|
-
|
|
115
|
+
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
116
|
+
...(options.onTerminalFailure === undefined
|
|
117
|
+
? {}
|
|
118
|
+
: { onTerminalFailure: options.onTerminalFailure }),
|
|
119
|
+
aborted: false,
|
|
120
|
+
finished: false,
|
|
121
|
+
};
|
|
122
|
+
if (job.signal !== undefined) {
|
|
123
|
+
const signal = job.signal;
|
|
124
|
+
job.abortListener = () => {
|
|
125
|
+
job.aborted = true;
|
|
126
|
+
const queuedIndex = this.queue.indexOf(job);
|
|
127
|
+
if (queuedIndex >= 0)
|
|
128
|
+
this.queue.splice(queuedIndex, 1);
|
|
129
|
+
this.rejectJob(job, this.abortReason(signal));
|
|
130
|
+
this.drain();
|
|
131
|
+
};
|
|
132
|
+
signal.addEventListener("abort", job.abortListener, { once: true });
|
|
133
|
+
if (signal.aborted) {
|
|
134
|
+
job.abortListener();
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
this.queue.push(job);
|
|
107
139
|
this.drain();
|
|
108
140
|
});
|
|
109
141
|
}
|
|
142
|
+
resolveJob(job, value) {
|
|
143
|
+
if (job.finished)
|
|
144
|
+
return;
|
|
145
|
+
job.finished = true;
|
|
146
|
+
this.removeAbortListener(job);
|
|
147
|
+
job.resolve(value);
|
|
148
|
+
}
|
|
149
|
+
rejectJob(job, error) {
|
|
150
|
+
if (job.finished)
|
|
151
|
+
return;
|
|
152
|
+
job.finished = true;
|
|
153
|
+
this.removeAbortListener(job);
|
|
154
|
+
if (!job.aborted)
|
|
155
|
+
job.onTerminalFailure?.(error);
|
|
156
|
+
job.reject(error);
|
|
157
|
+
}
|
|
158
|
+
removeAbortListener(job) {
|
|
159
|
+
if (job.signal !== undefined && job.abortListener !== undefined) {
|
|
160
|
+
job.signal.removeEventListener("abort", job.abortListener);
|
|
161
|
+
delete job.abortListener;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
110
164
|
drain() {
|
|
111
165
|
if (this.circuitOpenUntil > this.now()) {
|
|
112
166
|
for (const queued of this.queue.splice(0)) {
|
|
113
|
-
|
|
167
|
+
this.rejectJob(queued, this.currentCircuitError(queued.endpoint));
|
|
114
168
|
}
|
|
115
169
|
return;
|
|
116
170
|
}
|
|
@@ -119,21 +173,26 @@ export class IbkrRequestScheduler {
|
|
|
119
173
|
return;
|
|
120
174
|
}
|
|
121
175
|
while (this.active < this.maxConcurrent) {
|
|
122
|
-
const
|
|
123
|
-
|
|
176
|
+
const now = this.now();
|
|
177
|
+
const index = this.nextJobIndex(now);
|
|
178
|
+
if (index < 0) {
|
|
179
|
+
this.ensureSecdefInfoPacingWait(now);
|
|
124
180
|
return;
|
|
181
|
+
}
|
|
125
182
|
const [job] = this.queue.splice(index, 1);
|
|
126
183
|
if (job === undefined)
|
|
127
184
|
return;
|
|
128
185
|
this.run(job);
|
|
129
186
|
}
|
|
187
|
+
this.ensureSecdefInfoPacingWait();
|
|
130
188
|
}
|
|
131
|
-
nextJobIndex() {
|
|
189
|
+
nextJobIndex(now) {
|
|
132
190
|
let selected = -1;
|
|
133
191
|
for (const [index, job] of this.queue.entries()) {
|
|
134
192
|
if (job.priority === "DISCOVERY" &&
|
|
135
193
|
(job.secdefInfo
|
|
136
|
-
? this.activeSecdefInfo >= this.maxSecdefInfoConcurrent
|
|
194
|
+
? this.activeSecdefInfo >= this.maxSecdefInfoConcurrent ||
|
|
195
|
+
this.secdefInfoNextStartAt > now
|
|
137
196
|
: this.activeDiscovery >= this.maxDiscoveryConcurrent)) {
|
|
138
197
|
continue;
|
|
139
198
|
}
|
|
@@ -152,6 +211,9 @@ export class IbkrRequestScheduler {
|
|
|
152
211
|
return selected;
|
|
153
212
|
}
|
|
154
213
|
run(job) {
|
|
214
|
+
if (job.secdefInfo) {
|
|
215
|
+
this.secdefInfoNextStartAt = this.now() + this.effectiveSecdefInfoMinStartIntervalMs;
|
|
216
|
+
}
|
|
155
217
|
this.active += 1;
|
|
156
218
|
if (job.priority === "DISCOVERY") {
|
|
157
219
|
if (job.secdefInfo)
|
|
@@ -164,7 +226,9 @@ export class IbkrRequestScheduler {
|
|
|
164
226
|
this.metrics.maximumSecdefInfoConcurrent = Math.max(this.metrics.maximumSecdefInfoConcurrent, this.activeSecdefInfo);
|
|
165
227
|
void Promise.resolve()
|
|
166
228
|
.then(job.task)
|
|
167
|
-
.then(
|
|
229
|
+
.then((value) => {
|
|
230
|
+
this.resolveJob(job, value);
|
|
231
|
+
})
|
|
168
232
|
.catch((error) => {
|
|
169
233
|
this.handleFailure(job, error);
|
|
170
234
|
})
|
|
@@ -180,6 +244,8 @@ export class IbkrRequestScheduler {
|
|
|
180
244
|
});
|
|
181
245
|
}
|
|
182
246
|
handleFailure(job, error) {
|
|
247
|
+
if (job.aborted)
|
|
248
|
+
return;
|
|
183
249
|
const classification = this.classifyError(error);
|
|
184
250
|
if (classification.kind === "TEMPORARILY_BLOCKED") {
|
|
185
251
|
this.openCircuit(job, error);
|
|
@@ -187,7 +253,7 @@ export class IbkrRequestScheduler {
|
|
|
187
253
|
}
|
|
188
254
|
if (classification.kind === "SERVER_ERROR") {
|
|
189
255
|
if (!job.retryServerErrors || job.attempts >= this.maxRetries) {
|
|
190
|
-
|
|
256
|
+
this.rejectJob(job, error);
|
|
191
257
|
return;
|
|
192
258
|
}
|
|
193
259
|
const delayMs = this.retryDelay(job.attempts, classification.retryAfterMs);
|
|
@@ -199,36 +265,60 @@ export class IbkrRequestScheduler {
|
|
|
199
265
|
delayMs,
|
|
200
266
|
});
|
|
201
267
|
void this.sleep(delayMs).then(() => {
|
|
268
|
+
if (job.aborted)
|
|
269
|
+
return;
|
|
202
270
|
const circuitError = this.currentCircuitError(job.endpoint);
|
|
203
271
|
if (circuitError !== undefined) {
|
|
204
|
-
|
|
272
|
+
this.rejectJob(job, circuitError);
|
|
205
273
|
return;
|
|
206
274
|
}
|
|
207
275
|
this.queue.push(job);
|
|
208
276
|
this.drain();
|
|
209
277
|
}, () => {
|
|
210
|
-
|
|
278
|
+
this.rejectJob(job, error);
|
|
211
279
|
});
|
|
212
280
|
return;
|
|
213
281
|
}
|
|
214
282
|
if (classification.kind !== "THROTTLED") {
|
|
215
|
-
|
|
283
|
+
this.rejectJob(job, error);
|
|
216
284
|
return;
|
|
217
285
|
}
|
|
286
|
+
const delayMs = this.retryDelay(job.attempts, classification.retryAfterMs);
|
|
287
|
+
if (job.secdefInfo) {
|
|
288
|
+
this.effectiveSecdefInfoMinStartIntervalMs = Math.max(this.effectiveSecdefInfoMinStartIntervalMs, delayMs);
|
|
289
|
+
this.secdefInfoNextStartAt = Math.max(this.secdefInfoNextStartAt, this.now() + delayMs);
|
|
290
|
+
this.emitTelemetry({
|
|
291
|
+
event: "THROTTLED",
|
|
292
|
+
endpoint: job.endpoint,
|
|
293
|
+
attempt: job.attempts + 1,
|
|
294
|
+
delayMs,
|
|
295
|
+
effectiveMinStartIntervalMs: this.effectiveSecdefInfoMinStartIntervalMs,
|
|
296
|
+
});
|
|
297
|
+
}
|
|
218
298
|
if (!job.retryable || job.attempts >= this.maxRetries) {
|
|
219
|
-
|
|
299
|
+
this.rejectJob(job, new IbkrRequestSchedulerError(`IBKR throttled ${job.endpoint}`, "IBKR_THROTTLED", job.endpoint, classification.retryAfterMs ?? 0, { cause: error }));
|
|
220
300
|
return;
|
|
221
301
|
}
|
|
222
|
-
const delayMs = this.retryDelay(job.attempts, classification.retryAfterMs);
|
|
223
302
|
job.attempts += 1;
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
303
|
+
if (!job.secdefInfo) {
|
|
304
|
+
this.backoffUntil = Math.max(this.backoffUntil, this.now() + delayMs);
|
|
305
|
+
this.emitTelemetry({
|
|
306
|
+
event: "THROTTLED",
|
|
307
|
+
endpoint: job.endpoint,
|
|
308
|
+
attempt: job.attempts,
|
|
309
|
+
delayMs,
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
this.requeueIfActive(job);
|
|
313
|
+
}
|
|
314
|
+
requeueIfActive(job) {
|
|
315
|
+
if (!job.aborted)
|
|
316
|
+
this.queue.push(job);
|
|
317
|
+
}
|
|
318
|
+
abortReason(signal) {
|
|
319
|
+
return signal.reason instanceof Error
|
|
320
|
+
? signal.reason
|
|
321
|
+
: new Error("IBKR request was aborted", { cause: signal.reason });
|
|
232
322
|
}
|
|
233
323
|
retryDelay(attempt, retryAfterMs) {
|
|
234
324
|
const explicitRetryAfter = retryAfterMs !== undefined && Number.isFinite(retryAfterMs) && retryAfterMs >= 0
|
|
@@ -262,13 +352,46 @@ export class IbkrRequestScheduler {
|
|
|
262
352
|
this.drain();
|
|
263
353
|
});
|
|
264
354
|
}
|
|
355
|
+
ensureSecdefInfoPacingWait(now = this.now()) {
|
|
356
|
+
if (this.secdefInfoPacingPromise !== undefined)
|
|
357
|
+
return;
|
|
358
|
+
if (this.activeSecdefInfo >= this.maxSecdefInfoConcurrent)
|
|
359
|
+
return;
|
|
360
|
+
if (!this.queue.some((job) => job.secdefInfo))
|
|
361
|
+
return;
|
|
362
|
+
const target = this.secdefInfoNextStartAt;
|
|
363
|
+
const delayMs = target - now;
|
|
364
|
+
if (delayMs <= 0)
|
|
365
|
+
return;
|
|
366
|
+
this.emitTelemetry({
|
|
367
|
+
event: "SECDEF_INFO_PACING",
|
|
368
|
+
endpoint: "secdef/info",
|
|
369
|
+
attempt: 0,
|
|
370
|
+
delayMs,
|
|
371
|
+
effectiveMinStartIntervalMs: this.effectiveSecdefInfoMinStartIntervalMs,
|
|
372
|
+
});
|
|
373
|
+
this.secdefInfoPacingPromise = this.sleep(delayMs).then(() => {
|
|
374
|
+
this.secdefInfoPacingPromise = undefined;
|
|
375
|
+
this.drain();
|
|
376
|
+
}, (error) => {
|
|
377
|
+
this.secdefInfoPacingPromise = undefined;
|
|
378
|
+
const queued = this.queue.splice(0);
|
|
379
|
+
for (const job of queued) {
|
|
380
|
+
if (job.secdefInfo)
|
|
381
|
+
this.rejectJob(job, error);
|
|
382
|
+
else
|
|
383
|
+
this.queue.push(job);
|
|
384
|
+
}
|
|
385
|
+
this.drain();
|
|
386
|
+
});
|
|
387
|
+
}
|
|
265
388
|
openCircuit(job, cause) {
|
|
266
389
|
this.circuitOpenUntil = this.now() + this.circuitDurationMs;
|
|
267
390
|
this.backoffUntil = 0;
|
|
268
391
|
const error = new IbkrRequestSchedulerError(`IBKR temporarily blocked ${job.endpoint}`, "IBKR_TEMPORARILY_BLOCKED", job.endpoint, this.circuitDurationMs, { cause });
|
|
269
|
-
|
|
392
|
+
this.rejectJob(job, error);
|
|
270
393
|
for (const queued of this.queue.splice(0))
|
|
271
|
-
|
|
394
|
+
this.rejectJob(queued, error);
|
|
272
395
|
this.emitTelemetry({
|
|
273
396
|
event: "CIRCUIT_OPEN",
|
|
274
397
|
endpoint: job.endpoint,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestScheduler.js","sourceRoot":"","sources":["../../src/ibkr/requestScheduler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"requestScheduler.js","sourceRoot":"","sources":["../../src/ibkr/requestScheduler.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Package entry point — the broker-neutral types and the IBKR client. */
|
|
2
2
|
export { IbkrClient, IbkrBrokerResponseError, IbkrHttpError, IbkrPriceHistoryContractError, IbkrInsufficientHistoryError, } from "./ibkr/ibkrClient.js";
|
|
3
|
-
export type { IbkrClientOptions, IbkrHttpErrorResponse } from "./ibkr/ibkrClient.js";
|
|
3
|
+
export type { IbkrClientOptions, IbkrHttpErrorResponse, OptionDiscoveryOptions, } from "./ibkr/ibkrClient.js";
|
|
4
4
|
export { IbkrRequestSchedulerError } from "./ibkr/requestScheduler.js";
|
|
5
5
|
export type { IbkrRequestPriority, IbkrRequestErrorClassification, IbkrRequestTelemetry, IbkrRequestSchedulerOptions, } from "./ibkr/requestScheduler.js";
|
|
6
6
|
export { buildOauthConfig } from "./ibkr/oauthConfig.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,aAAa,EACb,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,aAAa,EACb,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,YAAY,EACV,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,8BAA8B,EAC9B,qBAAqB,EACrB,wBAAwB,EACxB,gCAAgC,EAChC,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,gCAAgC,EAChC,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,6BAA6B,EAC7B,4BAA4B,EAC5B,+BAA+B,EAC/B,qCAAqC,EACrC,iCAAiC,EACjC,sCAAsC,EACtC,uCAAuC,EACvC,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,EACxB,iCAAiC,EACjC,0BAA0B,EAC1B,kCAAkC,EAClC,wBAAwB,EACxB,6BAA6B,EAC7B,2BAA2B,EAC3B,0BAA0B,EAC1B,uCAAuC,EACvC,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,+BAA+B,EAC/B,uBAAuB,EACvB,oCAAoC,EACpC,6BAA6B,EAC7B,6BAA6B,EAC7B,uBAAuB,EACvB,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,8BAA8B,EAC9B,wBAAwB,EACxB,wBAAwB,EACxB,cAAc,EACd,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,aAAa,EACb,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,aAAa,EACb,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAOvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AA+FzD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAC"}
|