@xbbg/core 1.1.3 → 1.2.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # @xbbg/core
2
2
 
3
- Node.js Bloomberg API bindings backed by the Rust `xbbg` engine and a native N-API addon.
3
+ Independent Node.js bindings for Bloomberg-connected environments, backed by the Rust `xbbg` engine and a native N-API addon.
4
4
 
5
5
  ## Status
6
6
 
@@ -28,6 +28,8 @@ If no packaged addon is available for your platform, build from source locally i
28
28
 
29
29
  Using the API requires Bloomberg Terminal, B-PIPE, or ZFP access and Bloomberg SDK runtime libraries available on the target system. Configure Bloomberg connectivity and credentials according to your Bloomberg deployment before making requests.
30
30
 
31
+ `@xbbg/core` is not affiliated with, endorsed by, sponsored by, or approved by Bloomberg Finance L.P. or its affiliates. It does not provide Bloomberg access, credentials, entitlements, data rights, or SDK licenses; users must supply and use those under their own Bloomberg agreements and policies.
32
+
31
33
  ## Release integrity
32
34
 
33
35
  Packages are intended to be published from GitHub Actions using npm trusted publishing with provenance, backed by GitHub OIDC at publish time. No npm token or local `.npmrc` credential is required in this repository.
@@ -120,7 +122,7 @@ const bpipeEngine = await xbbg.connect({
120
122
  },
121
123
  });
122
124
 
123
- // ZFP over leased lines: Bloomberg supplies endpoints via zfpRemote
125
+ // Authorized ZFP over leased lines: use Bloomberg-provisioned endpoints via zfpRemote
124
126
  const zfpEngine = await xbbg.connect({
125
127
  zfpRemote: '8194',
126
128
  tls: {
@@ -143,6 +145,16 @@ for await (const tick of sub) {
143
145
  console.log(tick);
144
146
  }
145
147
 
148
+ // Conflated market data: quote updates are conflated by Bloomberg; trades still stream as received.
149
+ const conflated = await xbbg.blp.asubscribe(
150
+ ['ES1 Index'],
151
+ ['BID', 'ASK', 'LAST_PRICE', 'MKTDATA_EVENT_TYPE', 'MKTDATA_EVENT_SUBTYPE'],
152
+ { conflate: true },
153
+ );
154
+ for await (const tick of conflated) {
155
+ console.log(tick);
156
+ }
157
+
146
158
  // CDX analytics
147
159
  const cdxInfo = await xbbg.ext.cdx.acdx_info('CDX IG CDSI GEN 5Y Corp');
148
160
  const cdxPricing = await xbbg.ext.cdx.acdx_pricing('CDX IG CDSI GEN 5Y Corp');
@@ -193,12 +205,12 @@ const px = await engine.currencyConversion('700 HK Equity', 'USD', '20240101', '
193
205
 
194
206
  `connect()` and `configure()` accept a structured `EngineConfig` object. The most important connection controls are:
195
207
 
196
- - `host` / `port` for a single Bloomberg Terminal or direct B-PIPE endpoint
197
- - `servers` for ordered failover across multiple direct Bloomberg hosts
208
+ - `host` / `port` for a local Terminal session or an already-provisioned direct endpoint
209
+ - `servers` for ordered failover across already-provisioned direct hosts
198
210
  - `auth` for Bloomberg session identity auth: `user`, `app`, `userapp`, `dir`, `manual`, or `token`
199
211
  - `tls` for encrypted B-PIPE/direct sessions and as a required input for ZFP
200
- - `zfpRemote` (`'8194'` or `'8196'`) for Bloomberg ZFP over leased lines; do not combine it with `host`/`port`/`servers`/`socks5` because Bloomberg supplies the endpoints
201
- - `socks5` for proxied direct Bloomberg connectivity
212
+ - `zfpRemote` (`'8194'` or `'8196'`) for Bloomberg-assigned ZFP endpoints in an entitled environment; do not combine it with `host`/`port`/`servers`/`socks5`
213
+ - `socks5` for proxied access to already-provisioned direct Bloomberg endpoints
202
214
  - `retryPolicy`, `numStartAttempts`, and recovery settings for reconnect behavior
203
215
 
204
216
  The JS binding forwards these fields directly to the Rust engine, so Node can configure the same auth and transport features already available in the core runtime. Invalid transport combinations such as `zfpRemote` plus direct hosts fail during configuration instead of silently connecting to `localhost:8194`.
package/dist/index.d.ts CHANGED
@@ -282,6 +282,7 @@ interface RequestOptions {
282
282
  }
283
283
  interface StreamOptions {
284
284
  options?: readonly string[];
285
+ conflate?: boolean;
285
286
  flushThreshold?: number;
286
287
  overflowPolicy?: string;
287
288
  streamCapacity?: number;
package/dist/index.js CHANGED
@@ -48,6 +48,9 @@ var BlpTimeoutError = class extends BlpError {
48
48
  var BlpInternalError = class extends BlpError {
49
49
  };
50
50
  function wrapError(napiError) {
51
+ if (napiError instanceof BlpError) {
52
+ return napiError;
53
+ }
51
54
  const msg = napiError instanceof Error ? napiError.message : typeof napiError === "string" ? napiError : "";
52
55
  if (msg.includes("Session start failed") || msg.includes("session start failed") || msg.includes("Failed to start session") || msg.includes("Failed to open service") || msg.includes("failed to spawn worker") || msg.includes("connect event failed")) {
53
56
  return new BlpSessionError(msg);
@@ -785,6 +788,7 @@ var TA_DEFAULTS = Object.freeze({
785
788
  priceSourceClose: "PX_LAST"
786
789
  })
787
790
  });
791
+ var MKTDATA_SERVICE = "//blp/mktdata";
788
792
  function toArrowTableFromNative(batch) {
789
793
  return tableFromNativeArrowBatch(batch);
790
794
  }
@@ -839,6 +843,42 @@ function toStringArray(value) {
839
843
  }
840
844
  return [toRequestString(value)];
841
845
  }
846
+ function subscriptionOptionKey(option) {
847
+ return normalizeSubscriptionOption(option).split("=")[0]?.trim().toLowerCase() ?? "";
848
+ }
849
+ function normalizeSubscriptionOption(option) {
850
+ let clean = option.trim();
851
+ while (clean.startsWith("&")) {
852
+ clean = clean.slice(1).trim();
853
+ }
854
+ return clean;
855
+ }
856
+ function buildStreamSubscriptionOptions(service, options) {
857
+ const rawOptions = options.options;
858
+ const conflate = options.conflate;
859
+ if (rawOptions === void 0 && conflate !== true) {
860
+ return void 0;
861
+ }
862
+ const subscriptionOptions = (rawOptions ?? []).map((option) => normalizeSubscriptionOption(option)).filter((option) => option.length > 0);
863
+ if (conflate === true) {
864
+ if (service !== MKTDATA_SERVICE) {
865
+ throw new BlpValidationError(
866
+ "conflate=true is only supported for //blp/mktdata subscriptions",
867
+ { element: "conflate" }
868
+ );
869
+ }
870
+ if (subscriptionOptions.some((option) => subscriptionOptionKey(option) === "interval")) {
871
+ throw new BlpValidationError(
872
+ "conflate=true cannot be combined with interval options; intervalization overrides conflation",
873
+ { element: "conflate" }
874
+ );
875
+ }
876
+ if (!subscriptionOptions.some((option) => subscriptionOptionKey(option) === "conflate")) {
877
+ subscriptionOptions.push("conflate");
878
+ }
879
+ }
880
+ return subscriptionOptions.length > 0 || rawOptions !== void 0 ? subscriptionOptions : void 0;
881
+ }
842
882
  function normalizeConfigureArgs(configOrHost, port) {
843
883
  if (configOrHost === void 0) {
844
884
  return void 0;
@@ -1494,12 +1534,13 @@ var Engine = class _Engine {
1494
1534
  }
1495
1535
  async subscribe(tickers, fields, options = {}) {
1496
1536
  try {
1497
- const useOptions = options.options !== void 0 || options.flushThreshold !== void 0 || options.overflowPolicy !== void 0 || options.streamCapacity !== void 0;
1537
+ const subscriptionOptions = buildStreamSubscriptionOptions(MKTDATA_SERVICE, options);
1538
+ const useOptions = subscriptionOptions !== void 0 || options.flushThreshold !== void 0 || options.overflowPolicy !== void 0 || options.streamCapacity !== void 0;
1498
1539
  const stream = useOptions ? await this._inner.subscribeWithOptions(
1499
- "//blp/mktdata",
1540
+ MKTDATA_SERVICE,
1500
1541
  tickers,
1501
1542
  fields,
1502
- options.options,
1543
+ subscriptionOptions,
1503
1544
  options.flushThreshold,
1504
1545
  options.overflowPolicy,
1505
1546
  options.streamCapacity,
@@ -1535,10 +1576,10 @@ var Engine = class _Engine {
1535
1576
  }
1536
1577
  async stream(tickers, fields, options = {}) {
1537
1578
  return await this.subscribeWithOptions(
1538
- "//blp/mktdata",
1579
+ MKTDATA_SERVICE,
1539
1580
  tickers,
1540
1581
  fields,
1541
- options.options,
1582
+ buildStreamSubscriptionOptions(MKTDATA_SERVICE, options),
1542
1583
  options.flushThreshold,
1543
1584
  options.overflowPolicy,
1544
1585
  options.streamCapacity,
@@ -1550,7 +1591,7 @@ var Engine = class _Engine {
1550
1591
  "//blp/mktvwap",
1551
1592
  tickers,
1552
1593
  fields,
1553
- options.options,
1594
+ buildStreamSubscriptionOptions("//blp/mktvwap", options),
1554
1595
  options.flushThreshold,
1555
1596
  options.overflowPolicy,
1556
1597
  options.streamCapacity,
@@ -1562,7 +1603,7 @@ var Engine = class _Engine {
1562
1603
  "//blp/mktbar",
1563
1604
  [ticker],
1564
1605
  options.fields ?? [],
1565
- options.options,
1606
+ buildStreamSubscriptionOptions("//blp/mktbar", options),
1566
1607
  options.flushThreshold,
1567
1608
  options.overflowPolicy,
1568
1609
  options.streamCapacity,
@@ -1574,7 +1615,7 @@ var Engine = class _Engine {
1574
1615
  "//blp/mktdepthdata",
1575
1616
  [ticker],
1576
1617
  options.fields ?? [],
1577
- options.options,
1618
+ buildStreamSubscriptionOptions("//blp/mktdepthdata", options),
1578
1619
  options.flushThreshold,
1579
1620
  options.overflowPolicy,
1580
1621
  options.streamCapacity,
@@ -1586,7 +1627,7 @@ var Engine = class _Engine {
1586
1627
  "//blp/mktlist",
1587
1628
  [ticker],
1588
1629
  options.fields ?? [],
1589
- options.options,
1630
+ buildStreamSubscriptionOptions("//blp/mktlist", options),
1590
1631
  options.flushThreshold,
1591
1632
  options.overflowPolicy,
1592
1633
  options.streamCapacity,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/arrow-zero-copy.ts","../src/dates.ts","../src/native/platform-map.ts","../src/native/resolve-native.ts","../src/index.ts"],"names":["Field","Schema","makeData","Struct","Table","RecordBatch","Bool","Binary","DateDay","DateMillisecond","Float32","Float64","Int8","Int16","Int32","Int64","LargeBinary","LargeUtf8","Null","TimeMillisecond","TimeSecond","TimeMicrosecond","TimeNanosecond","TimestampMillisecond","TimestampNanosecond","TimestampSecond","TimestampMicrosecond","Uint8","Uint16","Uint32","Uint64","Utf8","dt","createRequire","fs","path","nodeRequire","tableFromIPC","json"],"mappings":"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","file":"index.js","sourcesContent":["export interface BlpRequestErrorOptions {\n readonly service?: string;\n readonly operation?: string;\n readonly request_id?: string;\n readonly code?: string | number;\n}\n\nexport interface BlpValidationErrorOptions {\n readonly element?: string;\n readonly suggestion?: string;\n}\n\nexport class BlpError extends Error {\n public constructor(message: string) {\n super(message);\n this.name = new.target.name;\n }\n}\n\nexport class BlpSessionError extends BlpError {}\n\nexport class BlpRequestError extends BlpError {\n public readonly service?: string;\n public readonly operation?: string;\n public readonly request_id?: string;\n public readonly code?: string | number;\n\n public constructor(message: string, options: BlpRequestErrorOptions = {}) {\n super(message);\n this.service = options.service;\n this.operation = options.operation;\n this.request_id = options.request_id;\n this.code = options.code;\n }\n}\n\nexport class BlpValidationError extends BlpError {\n public readonly element?: string;\n public readonly suggestion?: string;\n\n public constructor(message: string, options: BlpValidationErrorOptions = {}) {\n super(message);\n this.element = options.element;\n this.suggestion = options.suggestion;\n }\n}\n\nexport class BlpTimeoutError extends BlpError {}\n\nexport class BlpInternalError extends BlpError {}\n\nexport function wrapError(napiError: unknown): BlpError {\n const msg =\n napiError instanceof Error\n ? napiError.message\n : typeof napiError === 'string'\n ? napiError\n : '';\n\n // Session errors\n if (\n msg.includes('Session start failed') ||\n msg.includes('session start failed') ||\n msg.includes('Failed to start session') ||\n msg.includes('Failed to open service') ||\n msg.includes('failed to spawn worker') ||\n msg.includes('connect event failed')\n ) {\n return new BlpSessionError(msg);\n }\n\n // Request errors\n if (msg.includes('Request failed') || msg.includes('Subscription failed')) {\n const options: BlpRequestErrorOptions = parseRequestOptions(msg);\n return new BlpRequestError(msg, options);\n }\n\n // Validation errors\n if (\n msg.includes('Invalid argument') ||\n msg.includes('Configuration error') ||\n msg.includes('Operation not found') ||\n msg.includes('Schema element not found') ||\n msg.includes('Schema type mismatch') ||\n msg.includes('Unsupported schema') ||\n msg.includes('invalid extractor') ||\n msg.includes('(did you mean')\n ) {\n const options: BlpValidationErrorOptions = parseValidationOptions(msg);\n return new BlpValidationError(msg, options);\n }\n\n // Timeout errors\n if (msg.includes('Request timed out')) {\n return new BlpTimeoutError(msg);\n }\n\n // Internal errors\n if (\n msg.includes('Internal error') ||\n msg.includes('Channel closed') ||\n msg.includes('Stream buffer full') ||\n msg.includes('Request was cancelled')\n ) {\n return new BlpInternalError(msg);\n }\n\n return new BlpError(msg);\n}\n\nfunction parseRequestOptions(msg: string): BlpRequestErrorOptions {\n const options: {\n service?: string;\n operation?: string;\n request_id?: string;\n code?: string | number;\n } = {};\n const serviceOpMatch = /on ([^:]+)::([^ (]+)/.exec(msg);\n if (serviceOpMatch !== null) {\n options.service = serviceOpMatch[1];\n options.operation = serviceOpMatch[2];\n }\n const requestIdMatch = /\\[request_id=([^\\]]+)\\]/.exec(msg);\n if (requestIdMatch !== null) {\n options.request_id = requestIdMatch[1];\n }\n return options;\n}\n\nfunction parseValidationOptions(msg: string): BlpValidationErrorOptions {\n const options: { element?: string; suggestion?: string } = {};\n const suggestionMatch = /\\(did you mean '([^']+)'\\?\\)/.exec(msg);\n if (suggestionMatch !== null) {\n options.suggestion = suggestionMatch[1];\n }\n return options;\n}\n","import {\n Binary,\n Bool,\n DateDay,\n DateMillisecond,\n Field,\n Float32,\n Float64,\n Int8,\n Int16,\n Int32,\n Int64,\n LargeBinary,\n LargeUtf8,\n Null,\n RecordBatch,\n Schema,\n Struct,\n Table,\n TimeMillisecond,\n TimeMicrosecond,\n TimeNanosecond,\n TimeSecond,\n TimestampMillisecond,\n TimestampMicrosecond,\n TimestampNanosecond,\n TimestampSecond,\n Uint8,\n Uint16,\n Uint32,\n Uint64,\n Utf8,\n makeData,\n type Data,\n type DataType,\n} from 'apache-arrow';\n\nimport type { NativeArrowColumn, NativeArrowZeroCopyBatch } from './napi';\n\nconst NATIVE_ARROW_BUFFERS = Symbol('@xbbg/nativeArrowBuffers');\n\ntype TypedArrayConstructor<T extends ArrayBufferView> = new (\n buffer: ArrayBufferLike,\n byteOffset: number,\n length: number,\n) => T;\n\nexport function tableFromNativeArrowBatch(batch: NativeArrowZeroCopyBatch): Table {\n const retainedBuffers: Buffer[] = [];\n const fields = batch.columns.map((column) => {\n const type = arrowType(column);\n return new Field(column.name, type, column.nullable);\n });\n const children = batch.columns.map((column) => dataFromColumn(column, retainedBuffers));\n\n const schema = new Schema(fields);\n const structData = makeData({\n type: new Struct(fields),\n length: batch.numRows,\n children,\n });\n const table = new Table(schema, new RecordBatch(schema, structData));\n\n // Keep the original Node Buffer views alive. Numeric Arrow vectors retain typed\n // views over the same backing ArrayBuffers, but keeping these Buffer objects on\n // the Table makes the NAPI external-buffer lifetime explicit.\n Object.defineProperty(table, NATIVE_ARROW_BUFFERS, {\n value: retainedBuffers,\n enumerable: false,\n });\n\n return table;\n}\n\nfunction dataFromColumn(\n column: NativeArrowColumn,\n retainedBuffers: Buffer[],\n): Data {\n const nullBitmap = optionalUint8View(column.nullBitmap, retainedBuffers);\n switch (column.type) {\n case 'bool':\n return makeData({\n type: new Bool(),\n length: column.length,\n nullCount: column.nullCount,\n nullBitmap,\n data: requiredUint8View(column, retainedBuffers, Math.ceil(column.length / 8)),\n });\n case 'binary':\n return makeData({\n type: new Binary(),\n length: column.length,\n nullCount: column.nullCount,\n nullBitmap,\n valueOffsets: requiredOffsets(column, retainedBuffers),\n data: requiredUint8View(column, retainedBuffers),\n });\n case 'date32':\n return scalarData(column, retainedBuffers, nullBitmap, new DateDay(), Int32Array);\n case 'date64':\n return scalarData(column, retainedBuffers, nullBitmap, new DateMillisecond(), BigInt64Array);\n case 'float32':\n return scalarData(column, retainedBuffers, nullBitmap, new Float32(), Float32Array);\n case 'float64':\n return scalarData(column, retainedBuffers, nullBitmap, new Float64(), Float64Array);\n case 'int8':\n return scalarData(column, retainedBuffers, nullBitmap, new Int8(), Int8Array);\n case 'int16':\n return scalarData(column, retainedBuffers, nullBitmap, new Int16(), Int16Array);\n case 'int32':\n return scalarData(column, retainedBuffers, nullBitmap, new Int32(), Int32Array);\n case 'int64':\n return scalarData(column, retainedBuffers, nullBitmap, new Int64(), BigInt64Array);\n case 'large_binary':\n return makeData({\n type: new LargeBinary(),\n length: column.length,\n nullCount: column.nullCount,\n nullBitmap,\n valueOffsets: requiredLargeOffsets(column, retainedBuffers),\n data: requiredUint8View(column, retainedBuffers),\n });\n case 'large_utf8':\n return makeData({\n type: new LargeUtf8(),\n length: column.length,\n nullCount: column.nullCount,\n nullBitmap,\n valueOffsets: requiredLargeOffsets(column, retainedBuffers),\n data: requiredUint8View(column, retainedBuffers),\n });\n case 'null':\n return makeData({\n type: new Null(),\n length: column.length,\n });\n case 'time32_ms':\n return scalarData(column, retainedBuffers, nullBitmap, new TimeMillisecond(), Int32Array);\n case 'time32_s':\n return scalarData(column, retainedBuffers, nullBitmap, new TimeSecond(), Int32Array);\n case 'time64_us':\n return scalarData(column, retainedBuffers, nullBitmap, new TimeMicrosecond(), BigInt64Array);\n case 'time64_ns':\n return scalarData(column, retainedBuffers, nullBitmap, new TimeNanosecond(), BigInt64Array);\n case 'timestamp_ms':\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampMillisecond(column.timezone),\n BigInt64Array,\n );\n case 'timestamp_ns':\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampNanosecond(column.timezone),\n BigInt64Array,\n );\n case 'timestamp_s':\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampSecond(column.timezone),\n BigInt64Array,\n );\n case 'timestamp_us':\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampMicrosecond(column.timezone),\n BigInt64Array,\n );\n case 'uint8':\n return scalarData(column, retainedBuffers, nullBitmap, new Uint8(), Uint8Array);\n case 'uint16':\n return scalarData(column, retainedBuffers, nullBitmap, new Uint16(), Uint16Array);\n case 'uint32':\n return scalarData(column, retainedBuffers, nullBitmap, new Uint32(), Uint32Array);\n case 'uint64':\n return scalarData(column, retainedBuffers, nullBitmap, new Uint64(), BigUint64Array);\n case 'utf8':\n return makeData({\n type: new Utf8(),\n length: column.length,\n nullCount: column.nullCount,\n nullBitmap,\n valueOffsets: requiredOffsets(column, retainedBuffers),\n data: requiredUint8View(column, retainedBuffers),\n });\n }\n}\n\nfunction arrowType(column: NativeArrowColumn): DataType {\n switch (column.type) {\n case 'bool':\n return new Bool();\n case 'binary':\n return new Binary();\n case 'date32':\n return new DateDay();\n case 'date64':\n return new DateMillisecond();\n case 'float32':\n return new Float32();\n case 'float64':\n return new Float64();\n case 'int8':\n return new Int8();\n case 'int16':\n return new Int16();\n case 'int32':\n return new Int32();\n case 'int64':\n return new Int64();\n case 'large_binary':\n return new LargeBinary();\n case 'large_utf8':\n return new LargeUtf8();\n case 'null':\n return new Null();\n case 'time32_ms':\n return new TimeMillisecond();\n case 'time32_s':\n return new TimeSecond();\n case 'time64_us':\n return new TimeMicrosecond();\n case 'time64_ns':\n return new TimeNanosecond();\n case 'timestamp_ms':\n return new TimestampMillisecond(column.timezone);\n case 'timestamp_ns':\n return new TimestampNanosecond(column.timezone);\n case 'timestamp_s':\n return new TimestampSecond(column.timezone);\n case 'timestamp_us':\n return new TimestampMicrosecond(column.timezone);\n case 'uint8':\n return new Uint8();\n case 'uint16':\n return new Uint16();\n case 'uint32':\n return new Uint32();\n case 'uint64':\n return new Uint64();\n case 'utf8':\n return new Utf8();\n }\n}\n\nfunction scalarData<T extends DataType & { TArray: ArrayBufferView }>(\n column: NativeArrowColumn,\n retainedBuffers: Buffer[],\n nullBitmap: Uint8Array | undefined,\n type: T,\n ctor: TypedArrayConstructor<T['TArray']>,\n): Data<T> {\n return makeData({\n type,\n length: column.length,\n nullCount: column.nullCount,\n nullBitmap,\n data: requiredTypedView(column, ctor, retainedBuffers),\n } as never) as Data<T>;\n}\n\nfunction requiredTypedView<T extends ArrayBufferView>(\n column: NativeArrowColumn,\n ctor: TypedArrayConstructor<T>,\n retainedBuffers: Buffer[],\n): T {\n const buffer = requireBuffer(column, 'data');\n retainedBuffers.push(buffer);\n return new ctor(buffer.buffer, buffer.byteOffset, column.length);\n}\n\nfunction requiredOffsets(\n column: NativeArrowColumn,\n retainedBuffers: Buffer[],\n): Int32Array {\n const buffer = requireBuffer(column, 'offsets');\n retainedBuffers.push(buffer);\n return new Int32Array(buffer.buffer, buffer.byteOffset, column.length + 1);\n}\n\nfunction requiredLargeOffsets(\n column: NativeArrowColumn,\n retainedBuffers: Buffer[],\n): BigInt64Array {\n const buffer = requireBuffer(column, 'offsets');\n retainedBuffers.push(buffer);\n return new BigInt64Array(buffer.buffer, buffer.byteOffset, column.length + 1);\n}\n\nfunction requiredUint8View(\n column: NativeArrowColumn,\n retainedBuffers: Buffer[],\n byteLength?: number,\n): Uint8Array {\n const buffer = requireBuffer(column, 'data');\n retainedBuffers.push(buffer);\n return new Uint8Array(buffer.buffer, buffer.byteOffset, byteLength ?? buffer.byteLength);\n}\n\nfunction optionalUint8View(\n buffer: Buffer | undefined,\n retainedBuffers: Buffer[],\n): Uint8Array | undefined {\n if (buffer === undefined) {\n return undefined;\n }\n retainedBuffers.push(buffer);\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n}\n\nfunction requireBuffer(\n column: NativeArrowColumn,\n property: 'data' | 'offsets',\n): Buffer {\n const buffer = column[property];\n if (buffer === undefined) {\n throw new Error(`native Arrow column ${column.name} is missing ${property} buffer`);\n }\n return buffer;\n}\n","/**\n * Date / datetime normalization helpers (issue #317).\n *\n * These helpers convert user-supplied date-like values into the wire formats\n * the Bloomberg engine expects:\n *\n * - {@link formatDate} -> Bloomberg-native ``YYYYMMDD`` (used by historical\n * requests, override fields, recipe inputs).\n * - {@link formatDateTime} -> RFC 3339 / ISO 8601 with optional offset (used\n * by intraday requests).\n *\n * They live in a dedicated module so the public surface in ``index.ts`` can\n * be tested without dragging in the native NAPI addon.\n */\n\nimport type { DateLike, DateTimeLike } from './types';\n\nconst ISO_DATE_RE = /^\\d{4}[-/]\\d{2}[-/]\\d{2}$/;\nconst BBG_DATE_RE = /^\\d{8}$/;\n// Whole-string ambiguous (e.g. \"01/17/2023\") OR ambiguous prefix in a\n// datetime string (e.g. \"01/17/2023 10:30\" / \"01/17/2023T10:30\"). Year-leading\n// ISO is not flagged because ISO_DATE_RE matches it explicitly.\nconst AMBIGUOUS_DATE_RE = /^\\d{1,2}[-/]\\d{1,2}[-/]\\d{2,4}([T \\D]|$)/;\n\nexport function hasToJSDate(value: unknown): value is { toJSDate: () => Date } {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'toJSDate' in value &&\n typeof (value as { toJSDate?: unknown }).toJSDate === 'function'\n );\n}\n\nfunction rejectAmbiguousString(value: string): void {\n if (AMBIGUOUS_DATE_RE.test(value) && !ISO_DATE_RE.test(value.trim())) {\n throw new TypeError(\n `Ambiguous date format ${JSON.stringify(value)}: month/day order cannot be inferred. ` +\n `Use ISO 8601 (YYYY-MM-DD), Bloomberg-native (YYYYMMDD), or pass a Date / Luxon DateTime.`,\n );\n }\n}\n\nfunction dateLikeToJSDate(value: DateLike): Date {\n if (value instanceof Date) {\n return value;\n }\n if (typeof value === 'number') {\n return new Date(value);\n }\n if (hasToJSDate(value)) {\n return value.toJSDate();\n }\n if (typeof value === 'string') {\n const text = value.trim();\n rejectAmbiguousString(text);\n if (BBG_DATE_RE.test(text)) {\n const year = Number(text.slice(0, 4));\n const month = Number(text.slice(4, 6)) - 1;\n const day = Number(text.slice(6, 8));\n const dt = new Date(Date.UTC(year, month, day));\n if (Number.isNaN(dt.getTime())) {\n throw new TypeError(`Invalid Bloomberg-native date ${JSON.stringify(value)}`);\n }\n return dt;\n }\n // Replace the first separating space with 'T' so \"2023-01-17 10:30\" parses.\n const normalized = text.replace(' ', 'T');\n const dt = new Date(normalized);\n if (Number.isNaN(dt.getTime())) {\n throw new TypeError(\n `Cannot parse ${JSON.stringify(value)} as a date. Expected ISO 8601, ` +\n `Bloomberg-native YYYYMMDD, Date, epoch ms, or Luxon DateTime.`,\n );\n }\n return dt;\n }\n throw new TypeError(\n `Cannot convert ${typeof value} value ${String(value)} to a Date.`,\n );\n}\n\n/**\n * Format a date-like value to ``YYYYMMDD`` (Bloomberg-native).\n *\n * Accepts ``Date``, ISO 8601 / Bloomberg-native strings, epoch ms, and any\n * duck-typed Luxon-style ``{ toJSDate(): Date }``. Strict on ambiguous formats.\n */\nexport function formatDate(value: DateLike | undefined | null): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value === 'string') {\n const text = value.trim();\n if (text.length === 0) {\n return undefined;\n }\n if (BBG_DATE_RE.test(text)) {\n return text;\n }\n rejectAmbiguousString(text);\n if (ISO_DATE_RE.test(text)) {\n return text.replace(/[-/]/g, '');\n }\n }\n const date = dateLikeToJSDate(value);\n const y = String(date.getUTCFullYear()).padStart(4, '0');\n const m = String(date.getUTCMonth() + 1).padStart(2, '0');\n const d = String(date.getUTCDate()).padStart(2, '0');\n return `${y}${m}${d}`;\n}\n\n/**\n * Format a datetime-like value to RFC 3339 (ISO 8601 with optional offset).\n *\n * Naive ISO strings without a tz suffix are returned as-is so the Rust engine\n * can apply the caller's ``request_tz``. Anything else (Date, epoch ms, Luxon\n * DateTime, or ISO with explicit tz) is converted to a tz-bearing ISO string.\n */\nexport function formatDateTime(\n value: DateTimeLike | undefined | null,\n): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value === 'string') {\n const text = value.trim();\n if (text.length === 0) {\n return undefined;\n }\n rejectAmbiguousString(text);\n if (BBG_DATE_RE.test(text)) {\n return `${text.slice(0, 4)}-${text.slice(4, 6)}-${text.slice(6, 8)}T00:00:00`;\n }\n // Preserve user-supplied naive strings; the Rust engine interprets them\n // according to ``request_tz``.\n return text.replace(' ', 'T');\n }\n const date = dateLikeToJSDate(value);\n return date.toISOString();\n}\n","export const platformPackages = Object.freeze({\n 'darwin-arm64': '@xbbg/core-darwin-arm64',\n 'linux-x64': '@xbbg/core-linux-x64',\n 'win32-x64': '@xbbg/core-win32-x64',\n} as const);\n\nexport type PlatformKey = keyof typeof platformPackages;\n\nexport function platformKey(\n platform: NodeJS.Platform = process.platform,\n arch: string = process.arch,\n): string {\n return `${platform}-${arch}`;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { createRequire } from 'node:module';\n\nimport { platformKey, platformPackages } from './platform-map';\n\nconst nodeRequire = createRequire(__filename);\n\ninterface NativePackageResolution {\n readonly binaryPath: string;\n}\n\nexport interface NativeAddonResolution {\n readonly key: string;\n readonly packageName: string | null;\n readonly binaryPath: string | null;\n}\n\nexport interface NativeResolverOptions {\n readonly key: string;\n readonly packageName: string | null;\n readonly repoRoot: string;\n readonly requirePackage: (id: string) => unknown;\n readonly exists: (target: string) => boolean;\n}\n\nfunction exists(target: string): boolean {\n try {\n fs.accessSync(target);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction isResolutionObject(value: unknown): value is NativePackageResolution {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction validateNativePackage(packageName: string, resolved: unknown): NativePackageResolution {\n if (!isResolutionObject(resolved)) {\n throw new Error(`Invalid native package ${packageName}: expected an object with binaryPath`);\n }\n if (!('binaryPath' in resolved)) {\n throw new Error(`Invalid native package ${packageName}: missing binaryPath`);\n }\n if (typeof resolved.binaryPath !== 'string') {\n throw new Error(`Invalid native package ${packageName}: binaryPath must be a string`);\n }\n return resolved;\n}\n\nfunction localPackageIndex(repoRoot: string, packageName: string): string {\n const dirName = packageName.replace('@xbbg/', 'xbbg-');\n return path.join(repoRoot, 'packages', dirName, 'index.js');\n}\n\nfunction isOptionalPackageMissing(err: unknown, packageName: string): boolean {\n if (!(err instanceof Error)) {\n return false;\n }\n const code = 'code' in err ? (err as { readonly code?: unknown }).code : undefined;\n if (code !== 'MODULE_NOT_FOUND') {\n return false;\n }\n return (\n err.message.includes(`Cannot find module '${packageName}'`) ||\n err.message.includes(`Cannot find module \"${packageName}\"`) ||\n err.message.includes(`Cannot find package '${packageName}'`) ||\n err.message.includes(`Cannot find package \"${packageName}\"`)\n );\n}\n\nfunction resolveInstalledPackage(\n packageName: string,\n requirePackage: (id: string) => unknown,\n existsFile: (target: string) => boolean,\n): NativePackageResolution | null {\n try {\n const resolved = validateNativePackage(packageName, requirePackage(packageName));\n if (!existsFile(resolved.binaryPath)) {\n throw new Error(\n `Invalid native package ${packageName}: binaryPath does not exist: ${resolved.binaryPath}`,\n );\n }\n return resolved;\n } catch (err) {\n if (isOptionalPackageMissing(err, packageName)) {\n return null;\n }\n throw err;\n }\n}\n\nfunction resolveLocalPackage(\n repoRoot: string,\n packageName: string,\n requirePackage: (id: string) => unknown,\n existsFile: (target: string) => boolean,\n): NativePackageResolution | null {\n const localIndex = localPackageIndex(repoRoot, packageName);\n if (!existsFile(localIndex)) {\n return null;\n }\n\n const resolved = validateNativePackage(packageName, requirePackage(localIndex));\n if (!existsFile(resolved.binaryPath)) {\n throw new Error(\n `Invalid native package ${packageName}: binaryPath does not exist: ${resolved.binaryPath}`,\n );\n }\n return resolved;\n}\n\nexport function resolveNativeAddonCore(options: NativeResolverOptions): NativeAddonResolution {\n const { key, packageName, repoRoot, requirePackage, exists: existsFile } = options;\n if (packageName === null) {\n return { key, packageName: null, binaryPath: null };\n }\n\n const installed = resolveInstalledPackage(packageName, requirePackage, existsFile);\n if (installed !== null) {\n return { key, packageName, binaryPath: installed.binaryPath };\n }\n\n const local = resolveLocalPackage(repoRoot, packageName, requirePackage, existsFile);\n if (local !== null) {\n return { key, packageName, binaryPath: local.binaryPath };\n }\n\n return { key, packageName, binaryPath: null };\n}\n\nexport function resolveNativeAddon(repoRoot: string): NativeAddonResolution {\n const key = platformKey();\n const packageName = (platformPackages as Readonly<Record<string, string>>)[key] ?? null;\n return resolveNativeAddonCore({\n key,\n packageName,\n repoRoot,\n requirePackage: (id: string): unknown => nodeRequire(id) as unknown,\n exists,\n });\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { createRequire } from 'node:module';\nimport { tableFromIPC, type Table } from 'apache-arrow';\n\nimport {\n BlpError,\n BlpInternalError,\n BlpRequestError,\n BlpSessionError,\n BlpTimeoutError,\n BlpValidationError,\n wrapError,\n} from './errors';\nimport { tableFromNativeArrowBatch } from './arrow-zero-copy';\n// Date / datetime helpers (#317): isolated module so they can be tested\n// without loading the native NAPI addon. Re-exported as public API below.\nimport { formatDate, formatDateTime, hasToJSDate } from './dates';\nimport { resolveNativeAddon } from './native/resolve-native';\nimport type {\n ActiveCdxOptions,\n AuthConfig,\n BackendKind,\n BdhOptions,\n BdibOptions,\n BdpOptions,\n BdtickOptions,\n BeqsOptions,\n BfldsOptions,\n BlkpOptions,\n BqlOptions,\n BqrOptions,\n BsrchOptions,\n BtaOptions,\n CdxOptions,\n CdxTickerInfo,\n CorporateBondsOptions,\n DateLike,\n DateTimeLike,\n DividendOptions,\n EngineConfig,\n EtfHoldingsOptions,\n ExchangeInfoResult,\n ExchangeOverrideInput,\n FieldInfo,\n FormatKind,\n FuturesCandidate,\n FuturesResolveOptions,\n FxPairInfo,\n MarketRule,\n OverridesMap,\n PreferredsOptions,\n PrimitiveValue,\n RecipeBackendOptions,\n RequestInput,\n RequestOptions,\n ServerAddress,\n SessionWindowsInfo,\n Socks5Config,\n StreamOptions,\n StringPair,\n SubscriptionStats,\n TickerParts,\n TimeRange,\n TlsConfig,\n TurnoverOptions,\n YasOptions,\n} from './types';\nimport type {\n NativeAddon,\n NativeArrowZeroCopyBatch,\n NativeEngine,\n NativeSubscription,\n NativeSubscriptionUpdate,\n} from './napi';\n\nconst nodeRequire = createRequire(__filename);\n\ninterface PackageJsonShape {\n readonly version: string;\n}\n\ninterface PolarsModule {\n readIPC(buffer: Buffer): unknown;\n}\n\nconst packageJson = nodeRequire('../package.json') as PackageJsonShape;\n\nfunction containsBlpapiRuntime(dir: string): boolean {\n if (dir.length === 0 || !fs.existsSync(dir)) {\n return false;\n }\n return [\n 'blpapi3_64.dll',\n 'blpapi3_32.dll',\n 'libblpapi3.dylib',\n 'libblpapi3_64.so',\n 'libblpapi3.so',\n ].some((name) => fs.existsSync(path.join(dir, name)));\n}\n\nfunction parseVersionParts(name: string): number[] | null {\n const parts = name.split('.').map((part) => Number(part));\n return parts.every((part) => Number.isInteger(part) && part >= 0) ? parts : null;\n}\n\nfunction compareSdkRoots(left: string, right: string): number {\n const leftParts = parseVersionParts(path.basename(left));\n const rightParts = parseVersionParts(path.basename(right));\n if (leftParts !== null && rightParts !== null) {\n const length = Math.max(leftParts.length, rightParts.length);\n for (let index = 0; index < length; index += 1) {\n const leftPart = leftParts[index] ?? 0;\n const rightPart = rightParts[index] ?? 0;\n if (leftPart !== rightPart) {\n return rightPart - leftPart;\n }\n }\n }\n if (leftParts !== null) return -1;\n if (rightParts !== null) return 1;\n return right.localeCompare(left);\n}\n\nfunction pushSdkRuntimeCandidates(candidates: string[], sdkRoot: string): void {\n const resolved = path.resolve(sdkRoot);\n candidates.push(resolved, path.join(resolved, 'bin'), path.join(resolved, 'lib'));\n}\n\nfunction resolveVendorSdkRoot(repoRoot: string): string | null {\n const vendorDir = path.join(repoRoot, 'vendor', 'blpapi-sdk');\n if (!fs.existsSync(vendorDir)) {\n return null;\n }\n const candidates = [vendorDir];\n for (const entry of fs.readdirSync(vendorDir, { withFileTypes: true })) {\n if (entry.isDirectory()) {\n candidates.push(path.join(vendorDir, entry.name));\n }\n }\n candidates.sort(compareSdkRoots);\n return candidates.find((candidate) => {\n const dirs = [candidate, path.join(candidate, 'bin'), path.join(candidate, 'lib')];\n return dirs.some(containsBlpapiRuntime);\n }) ?? null;\n}\n\nfunction configureRuntimeSearchPath(): void {\n if (process.platform !== 'win32') {\n return;\n }\n\n const candidates: string[] = [];\n const libDir = process.env.BLPAPI_LIB_DIR;\n if (libDir !== undefined && libDir.length > 0) {\n candidates.push(path.resolve(libDir));\n }\n const root = process.env.BLPAPI_ROOT;\n if (root !== undefined && root.length > 0) {\n pushSdkRuntimeCandidates(candidates, root);\n }\n const repoRoot = path.resolve(__dirname, '..', '..');\n const devRoot = process.env.XBBG_DEV_SDK_ROOT;\n if (devRoot !== undefined && devRoot.length > 0) {\n pushSdkRuntimeCandidates(\n candidates,\n path.isAbsolute(devRoot) ? devRoot : path.resolve(repoRoot, devRoot),\n );\n }\n const vendorRoot = resolveVendorSdkRoot(repoRoot);\n if (vendorRoot !== null) {\n pushSdkRuntimeCandidates(candidates, vendorRoot);\n }\n\n for (const candidate of candidates) {\n if (!containsBlpapiRuntime(candidate)) {\n continue;\n }\n const currentPath = process.env.PATH ?? '';\n const parts = currentPath.split(';').filter((part) => part.length > 0);\n if (!parts.includes(candidate)) {\n process.env.PATH =\n currentPath.length > 0 ? `${candidate};${currentPath}` : candidate;\n }\n break;\n }\n}\n\nconfigureRuntimeSearchPath();\n\nfunction loadNative(): NativeAddon {\n const root = path.resolve(__dirname, '..', '..');\n\n const candidates = [\n path.join(__dirname, 'napi_xbbg.node'),\n path.join(__dirname, '..', 'napi_xbbg.node'),\n path.join(__dirname, 'napi-xbbg.node'),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n return nodeRequire(candidate) as NativeAddon;\n }\n }\n\n const { key, packageName, binaryPath } = resolveNativeAddon(root);\n if (binaryPath !== null) {\n return nodeRequire(binaryPath) as NativeAddon;\n }\n if (packageName === null) {\n throw new Error(\n `No packaged @xbbg/core native addon is available for ${key}. Build it locally with \"npm run build\" from js-xbbg.`,\n );\n }\n\n throw new Error(\n `Unable to load native napi-xbbg module for ${key}. Install ${packageName} via Bun/npm, or build it locally with \"npm run build\" from js-xbbg.`,\n );\n}\n\nconst native = loadNative();\n\n// ── Constants ───────────────────────────────────────────────────────────\n\nexport const Backend = Object.freeze({\n ARROW: 'arrow',\n JSON: 'json',\n POLARS: 'polars',\n}) satisfies Readonly<Record<string, BackendKind>>;\n\nexport const Format = Object.freeze({\n LONG: 'long',\n LONG_TYPED: 'long_typed',\n LONG_WITH_METADATA: 'long_with_metadata',\n SEMI_LONG: 'semi_long',\n}) satisfies Readonly<Record<string, FormatKind>>;\n\nconst CDX_INFO_FIELDS = Object.freeze([\n 'ROLLING_SERIES',\n 'VERSION',\n 'ON_THE_RUN_CURRENT_BD_INDICATOR',\n 'CDS_FIRST_ACCRUAL_START_DATE',\n 'NAME',\n 'NUM_CURRENT_COMPANIES_CCY_TKR',\n 'NUM_ORIG_COMPANIES_CRNCY_TKR',\n 'PX_LAST',\n]);\n\nconst CDX_PRICING_FIELDS = Object.freeze([\n 'PX_LAST',\n 'PX_BID',\n 'PX_ASK',\n 'UPFRONT_LAST',\n 'UPFRONT_BID',\n 'UPFRONT_ASK',\n 'CDS_FLAT_SPREAD',\n 'UPFRONT_FEE',\n 'PV_CDS_PREMIUM_LEG',\n 'PV_CDS_DEFAULT_LEG',\n]);\n\nconst CDX_RISK_FIELDS = Object.freeze([\n 'SW_CNV_BPV',\n 'SW_EQV_BPV',\n 'CDS_SPREAD_MID_MODIFIED_DURATION',\n 'CDS_SPREAD_MID_CONVEXITY',\n 'RECOVERY_RATE_SEN',\n 'CDS_RECOVERY_RT',\n]);\n\nconst TA_STUDIES: Readonly<Record<string, string>> = Object.freeze({\n smavg: 'smavgStudyAttributes',\n sma: 'smavgStudyAttributes',\n emavg: 'emavgStudyAttributes',\n ema: 'emavgStudyAttributes',\n wmavg: 'wmavgStudyAttributes',\n wma: 'wmavgStudyAttributes',\n vmavg: 'vmavgStudyAttributes',\n vma: 'vmavgStudyAttributes',\n tmavg: 'tmavgStudyAttributes',\n tma: 'tmavgStudyAttributes',\n ipmavg: 'ipmavgStudyAttributes',\n rsi: 'rsiStudyAttributes',\n macd: 'macdStudyAttributes',\n mao: 'maoStudyAttributes',\n momentum: 'momentumStudyAttributes',\n mom: 'momentumStudyAttributes',\n roc: 'rocStudyAttributes',\n boll: 'bollStudyAttributes',\n bb: 'bollStudyAttributes',\n kltn: 'kltnStudyAttributes',\n keltner: 'kltnStudyAttributes',\n mae: 'maeStudyAttributes',\n te: 'teStudyAttributes',\n al: 'alStudyAttributes',\n dmi: 'dmiStudyAttributes',\n adx: 'dmiStudyAttributes',\n tas: 'tasStudyAttributes',\n stoch: 'tasStudyAttributes',\n trender: 'trenderStudyAttributes',\n ptps: 'ptpsStudyAttributes',\n parabolic: 'ptpsStudyAttributes',\n sar: 'ptpsStudyAttributes',\n chko: 'chkoStudyAttributes',\n ado: 'adoStudyAttributes',\n vat: 'vatStudyAttributes',\n tvat: 'tvatStudyAttributes',\n atr: 'atrStudyAttributes',\n hurst: 'hurstStudyAttributes',\n fg: 'fgStudyAttributes',\n fear_greed: 'fgStudyAttributes',\n goc: 'gocStudyAttributes',\n ichimoku: 'gocStudyAttributes',\n cmci: 'cmciStudyAttributes',\n wlpr: 'wlprStudyAttributes',\n williams: 'wlprStudyAttributes',\n maxmin: 'maxminStudyAttributes',\n rex: 'rexStudyAttributes',\n etd: 'etdStudyAttributes',\n pd: 'pdStudyAttributes',\n rv: 'rvStudyAttributes',\n pivot: 'pivotStudyAttributes',\n or: 'orStudyAttributes',\n pcr: 'pcrStudyAttributes',\n bs: 'bsStudyAttributes',\n});\n\ntype StudyParams = Record<string, PrimitiveValue | undefined>;\n\nconst TA_DEFAULTS: Readonly<Record<string, Readonly<StudyParams>>> = Object.freeze({\n smavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n emavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n wmavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n vmavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n tmavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n rsiStudyAttributes: Object.freeze({ period: 14, priceSourceClose: 'PX_LAST' }),\n macdStudyAttributes: Object.freeze({\n maPeriod1: 12,\n maPeriod2: 26,\n sigPeriod: 9,\n priceSourceClose: 'PX_LAST',\n }),\n bollStudyAttributes: Object.freeze({\n period: 20,\n upperBand: 2.0,\n lowerBand: 2.0,\n priceSourceClose: 'PX_LAST',\n }),\n dmiStudyAttributes: Object.freeze({\n period: 14,\n priceSourceHigh: 'PX_HIGH',\n priceSourceLow: 'PX_LOW',\n priceSourceClose: 'PX_LAST',\n }),\n atrStudyAttributes: Object.freeze({\n maType: 'Simple',\n period: 14,\n priceSourceHigh: 'PX_HIGH',\n priceSourceLow: 'PX_LOW',\n priceSourceClose: 'PX_LAST',\n }),\n tasStudyAttributes: Object.freeze({\n periodK: 14,\n periodD: 3,\n periodDS: 3,\n periodDSS: 3,\n priceSourceHigh: 'PX_HIGH',\n priceSourceLow: 'PX_LOW',\n priceSourceClose: 'PX_LAST',\n }),\n});\n\n// ── Helpers ─────────────────────────────────────────────────────────────\n\nfunction toArrowTableFromNative(batch: NativeArrowZeroCopyBatch): Table {\n return tableFromNativeArrowBatch(batch);\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction toRequestString(value: unknown): string {\n return String(value);\n}\n\nfunction mapObjectToPairs(\n obj: OverridesMap | undefined,\n): StringPair[] | undefined {\n if (obj === undefined) {\n return undefined;\n }\n return Object.entries(obj).map(([key, value]) => ({\n key: toRequestString(key),\n value: toRequestString(value),\n }));\n}\n\ntype BdtickBooleanOption =\n | 'includeConditionCodes'\n | 'includeExchangeCodes'\n | 'includeBrokerCodes'\n | 'includeRpsCodes'\n | 'includeBicMicCodes'\n | 'includeNonPlottableEvents'\n | 'includeBloombergStandardConditionCodes';\n\nconst BDTICK_BOOLEAN_KWARGS: readonly [BdtickBooleanOption, string][] = Object.freeze([\n ['includeConditionCodes', 'includeConditionCodes'],\n ['includeExchangeCodes', 'includeExchangeCodes'],\n ['includeBrokerCodes', 'includeBrokerCodes'],\n ['includeRpsCodes', 'includeRpsCodes'],\n ['includeBicMicCodes', 'includeBicMicCodes'],\n ['includeNonPlottableEvents', 'includeNonPlottableEvents'],\n ['includeBloombergStandardConditionCodes', 'includeBloombergStandardConditionCodes'],\n]);\n\nfunction upsertStringPair(pairs: StringPair[], key: string, value: string): void {\n const existing = pairs.find((pair) => pair.key === key);\n if (existing === undefined) {\n pairs.push({ key, value });\n return;\n }\n existing.value = value;\n}\n\nfunction buildBdtickKwargs(options: BdtickOptions): StringPair[] | undefined {\n const pairs = mapObjectToPairs(options.kwargs) ?? [];\n for (const [optionName, requestName] of BDTICK_BOOLEAN_KWARGS) {\n const typedValue = options[optionName];\n if (typedValue !== undefined) {\n upsertStringPair(pairs, requestName, typedValue ? 'true' : 'false');\n }\n }\n return pairs.length > 0 ? pairs : undefined;\n}\n\nfunction toStringArray(value: string | readonly string[] | null | undefined): string[] {\n if (Array.isArray(value)) {\n return value.map((item) => toRequestString(item));\n }\n if (value === null || value === undefined) {\n return [];\n }\n return [toRequestString(value)];\n}\n\nfunction normalizeConfigureArgs(\n configOrHost?: EngineConfig | string,\n port?: number,\n): EngineConfig | undefined {\n if (configOrHost === undefined) {\n return undefined;\n }\n if (typeof configOrHost === 'string' || port !== undefined) {\n const config: EngineConfig = {};\n if (typeof configOrHost === 'string') {\n config.host = configOrHost;\n }\n if (port !== undefined) {\n config.port = port;\n }\n return config;\n }\n if (isPlainObject(configOrHost)) {\n return { ...(configOrHost as EngineConfig) };\n }\n throw new TypeError(\n 'configure expects either a config object or host/port arguments',\n );\n}\n\nfunction normalizeRecoveryOptions(options: CdxOptions = {}): BdpOptions {\n const normalized: CdxOptions = { ...options };\n const recoveryRate = normalized.recoveryRate ?? normalized.recovery_rate;\n delete normalized.recoveryRate;\n delete normalized.recovery_rate;\n if (recoveryRate !== undefined) {\n normalized.overrides = {\n ...(normalized.overrides ?? {}),\n CDS_RR: toRequestString(recoveryRate),\n };\n }\n return normalized;\n}\n\nfunction fullDayRange(dt: DateTimeLike): TimeRange {\n const formatted = formatDate(dt);\n if (formatted === undefined) {\n throw new TypeError('dt must be a non-empty date-like value');\n }\n const day = `${formatted.slice(0, 4)}-${formatted.slice(4, 6)}-${formatted.slice(6, 8)}`;\n return {\n start: `${day}T00:00:00`,\n end: `${day}T23:59:59`,\n };\n}\n\nfunction normalizeDate(value: DateLike | undefined): string | undefined {\n return formatDate(value);\n}\n\nfunction getStudyAttrName(study: string): string {\n const normalized = study.toLowerCase().replace(/-/g, '_').replace(/ /g, '_');\n const mapped = TA_STUDIES[normalized];\n if (mapped !== undefined) {\n return mapped;\n }\n if (normalized.endsWith('studyattributes')) {\n return normalized;\n }\n return `${normalized}StudyAttributes`;\n}\n\ninterface RawStudy {\n studyType?: string;\n study?: string;\n calcInterval?: string;\n interval?: number | string;\n length?: number;\n period?: number;\n [key: string]: PrimitiveValue | undefined;\n}\n\nfunction buildTaRequest(\n ticker: string,\n study: string | RawStudy,\n options: BtaOptions = {},\n): StringPair[] {\n const rawStudy: RawStudy =\n typeof study === 'string' ? { studyType: study } : { ...study };\n const studyType = rawStudy.studyType ?? rawStudy.study ?? (typeof study === 'string' ? study : '');\n const attrName = getStudyAttrName(toRequestString(studyType));\n\n const kwargs: Record<string, PrimitiveValue> = { ...(options.kwargs ?? {}) };\n const startDate = normalizeDate(\n stringOrUndef(kwargs.startDate) ??\n stringOrUndef(kwargs.start_date) ??\n options.startDate ??\n options.start_date,\n );\n const endDate = normalizeDate(\n stringOrUndef(kwargs.endDate) ??\n stringOrUndef(kwargs.end_date) ??\n options.endDate ??\n options.end_date,\n );\n const periodicity = toRequestString(stringOrUndef(kwargs.periodicitySelection) ??\n stringOrUndef(kwargs.periodicity) ??\n rawStudy.calcInterval ??\n options.periodicity ??\n 'DAILY').toUpperCase();\n const interval =\n kwargs.interval ?? rawStudy.interval ?? options.interval;\n\n delete kwargs.startDate;\n delete kwargs.start_date;\n delete kwargs.endDate;\n delete kwargs.end_date;\n delete kwargs.periodicitySelection;\n delete kwargs.periodicity;\n delete rawStudy.studyType;\n delete rawStudy.study;\n delete rawStudy.calcInterval;\n\n if (rawStudy.length !== undefined && rawStudy.period === undefined) {\n rawStudy.period = rawStudy.length;\n }\n delete rawStudy.length;\n\n const params: StudyParams = {\n ...(TA_DEFAULTS[attrName] ?? {}),\n ...(options.studyParams ?? {}),\n ...(rawStudy as StudyParams),\n };\n\n if (params.length !== undefined && params.period === undefined) {\n params.period = params.length;\n }\n delete params.length;\n delete params.calcInterval;\n\n const elements: StringPair[] = [\n { key: 'priceSource.securityName', value: toRequestString(ticker) },\n ];\n\n if (periodicity === 'INTRADAY') {\n const prefix = 'priceSource.dataRange.intraday';\n if (startDate !== undefined) {\n elements.push({ key: `${prefix}.startDate`, value: startDate });\n }\n if (endDate !== undefined) {\n elements.push({ key: `${prefix}.endDate`, value: endDate });\n }\n elements.push({ key: `${prefix}.eventType`, value: 'TRADE' });\n if (interval !== undefined) {\n elements.push({ key: `${prefix}.interval`, value: toRequestString(interval) });\n }\n } else {\n const prefix = 'priceSource.dataRange.historical';\n if (startDate !== undefined) {\n elements.push({ key: `${prefix}.startDate`, value: startDate });\n }\n if (endDate !== undefined) {\n elements.push({ key: `${prefix}.endDate`, value: endDate });\n }\n elements.push({ key: `${prefix}.periodicitySelection`, value: periodicity });\n }\n\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) {\n continue;\n }\n elements.push({\n key: `studyAttributes.${attrName}.${key}`,\n value: toRequestString(value),\n });\n }\n\n for (const [key, value] of Object.entries(kwargs)) {\n elements.push({ key: toRequestString(key), value: toRequestString(value) });\n }\n\n return elements;\n}\n\nfunction stringOrUndef(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined;\n}\n\nlet polarsModule: PolarsModule | undefined;\nlet polarsLoadError: Error | undefined;\n\nfunction cachePolarsLoadError(err: unknown): Error {\n const error = new Error(\n 'nodejs-polars is required for Polars backend. Install: npm install nodejs-polars',\n );\n Object.defineProperty(error, 'cause', { value: err, configurable: true });\n polarsLoadError = error;\n return error;\n}\n\nfunction loadPolars(): PolarsModule {\n if (polarsModule !== undefined) {\n return polarsModule;\n }\n if (polarsLoadError !== undefined) {\n throw polarsLoadError;\n }\n try {\n polarsModule = nodeRequire('nodejs-polars') as PolarsModule;\n return polarsModule;\n } catch (err) {\n throw cachePolarsLoadError(err);\n }\n}\n\nfunction normalizeBackend(backend: BackendKind | undefined): BackendKind {\n const selected: unknown = backend ?? Backend.ARROW;\n if (selected === Backend.ARROW || selected === Backend.JSON || selected === Backend.POLARS) {\n return selected;\n }\n throw new TypeError(\n `Unsupported @xbbg/core backend \"${toRequestString(selected)}\". Expected one of: ${Object.values(\n Backend,\n ).join(', ')}`,\n );\n}\n\nfunction ipcToBackend(buffer: Buffer, backend: BackendKind | undefined): unknown {\n const selected = normalizeBackend(backend);\n if (selected === Backend.JSON) {\n return Array.from(tableFromIPC(buffer));\n }\n if (selected === Backend.POLARS) {\n return loadPolars().readIPC(buffer);\n }\n return tableFromIPC(buffer);\n}\n\n// ── Configured engine state ─────────────────────────────────────────────\n\nlet configuredEngineConfig: EngineConfig | undefined;\nlet configuredEnginePromise: Promise<Engine> | undefined;\n\nfunction clearConfiguredEngine(): void {\n const existing = configuredEnginePromise;\n configuredEnginePromise = undefined;\n if (existing !== undefined) {\n existing\n .then((engine) => {\n engine.signalShutdown();\n })\n .catch(() => {\n /* ignore shutdown errors */\n });\n }\n}\n\nasync function getConfiguredEngine(): Promise<Engine> {\n if (configuredEnginePromise === undefined) {\n const pending = connect(configuredEngineConfig);\n pending.catch(() => {\n if (configuredEnginePromise === pending) {\n configuredEnginePromise = undefined;\n }\n });\n configuredEnginePromise = pending;\n }\n return await configuredEnginePromise;\n}\n\n// ── Subscription class ──────────────────────────────────────────────────\n\nexport type TickValue = null | boolean | number | bigint | string | Date;\n\nexport class FieldHandle {\n public constructor(public readonly name: string) {}\n}\n\nexport class Tick {\n private readonly _positions: Map<string, number>;\n\n public constructor(private readonly _update: NativeSubscriptionUpdate) {\n this._positions = new Map(_update.fields.map((field, index) => [field, index]));\n }\n\n public get topic(): string {\n return this._update.topic;\n }\n\n public get timestampUs(): number {\n return this._update.timestampUs;\n }\n\n public get layoutVersion(): number {\n return this._update.layoutVersion;\n }\n\n public get(field: string | FieldHandle): TickValue {\n const name = typeof field === 'string' ? field : field.name;\n const index = this._positions.get(name);\n if (index === undefined) return null;\n const value = this._update.values[index] ?? null;\n const kind = this._update.valueKinds[index] ?? 'unknown';\n if (value === null) return null;\n if (kind === 'i64' || kind === 'time64_us' || kind === 'timestamp_us') {\n try {\n return BigInt(String(value));\n } catch {\n return null;\n }\n }\n if (kind === 'date32' && typeof value === 'number') {\n return new Date(Date.UTC(1970, 0, 1 + value));\n }\n return value;\n }\n\n public f64(field: string | FieldHandle): number | null {\n const value = this.get(field);\n if (value === null) return null;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n }\n\n public i64(field: string | FieldHandle): bigint | null {\n const value = this.get(field);\n if (value === null) return null;\n try {\n return BigInt(String(value));\n } catch {\n return null;\n }\n }\n\n public str(field: string | FieldHandle): string | null {\n const value = this.get(field);\n return value === null ? null : String(value);\n }\n\n public toObject(): Record<string, unknown> {\n const out: Record<string, unknown> = { topic: this.topic, timestampUs: this.timestampUs };\n for (const field of this._update.fields) {\n out[field] = this.get(field);\n }\n return out;\n }\n}\n\nexport class ArrowSubscription implements AsyncIterator<Table>, AsyncIterable<Table> {\n public constructor(private readonly _inner: NativeSubscription) {}\n\n public async next(): Promise<IteratorResult<Table>> {\n try {\n const batch = await this._inner.nextArrow();\n if (batch === null) {\n return { done: true, value: undefined };\n }\n return { done: false, value: toArrowTableFromNative(batch) };\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async unsubscribe(drain = false): Promise<Table[]> {\n try {\n const drained = await this._inner.unsubscribeArrow(drain);\n return drained?.map(toArrowTableFromNative) ?? [];\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public [Symbol.asyncIterator](): this {\n return this;\n }\n}\n\nexport class Subscription implements AsyncIterator<Tick>, AsyncIterable<Tick> {\n private readonly _inner: NativeSubscription;\n\n public constructor(inner: NativeSubscription) {\n this._inner = inner;\n }\n\n public async next(): Promise<IteratorResult<Tick>> {\n try {\n const update = await this._inner.nextUpdate();\n if (update === null) {\n return { done: true, value: undefined };\n }\n return { done: false, value: new Tick(update) };\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async add(tickers: readonly string[]): Promise<void> {\n try {\n await this._inner.add(tickers);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async remove(tickers: readonly string[]): Promise<void> {\n try {\n await this._inner.remove(tickers);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async unsubscribe(drain = false): Promise<Tick[]> {\n try {\n const drained = await this._inner.unsubscribe(drain);\n if (drained === null) {\n return [];\n }\n return drained.map((update) => new Tick(update));\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public field(name: string): FieldHandle {\n return new FieldHandle(name);\n }\n\n public arrow(): ArrowSubscription {\n return new ArrowSubscription(this._inner);\n }\n\n public get tickers(): string[] {\n return this._inner.tickers;\n }\n\n public get fields(): string[] {\n return this._inner.fields;\n }\n\n public get isActive(): boolean {\n return this._inner.isActive;\n }\n\n public get stats(): SubscriptionStats {\n return this._inner.stats;\n }\n\n public [Symbol.asyncIterator](): this {\n return this;\n }\n}\n\n// ── Engine class ────────────────────────────────────────────────────────\n\nexport class Engine {\n // Set via constructor or via `withConfig` (which instantiates via Object.create).\n private _inner!: NativeEngine;\n\n public constructor(host = 'localhost', port = 8194) {\n try {\n this._inner = new native.JsEngine(host, port);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public static withConfig(config: EngineConfig = {}): Engine {\n const engine: Engine = Object.create(Engine.prototype) as Engine;\n try {\n engine._inner = native.JsEngine.withConfig(config);\n } catch (err) {\n throw wrapError(err);\n }\n return engine;\n }\n\n public async request(params: RequestInput): Promise<unknown> {\n const backend = normalizeBackend(params.backend);\n const { backend: _discarded, ...nativeParams } = params;\n try {\n const buffer = await this._inner.request(nativeParams);\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async requestRaw(params: RequestInput): Promise<Buffer> {\n try {\n return await this._inner.request(params);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async bdp(\n tickers: readonly string[],\n fields: readonly string[],\n options: BdpOptions = {},\n ): Promise<unknown> {\n return await this.request({\n service: '//blp/refdata',\n operation: 'ReferenceDataRequest',\n securities: tickers,\n fields,\n overrides: mapObjectToPairs(options.overrides),\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n backend: options.backend,\n includeSecurityErrors: Boolean(options.includeSecurityErrors),\n validateFields: options.validateFields,\n extractor: 'refdata',\n });\n }\n\n public async bds(\n tickers: readonly string[],\n fields: readonly string[],\n options: BdpOptions = {},\n ): Promise<unknown> {\n return await this.request({\n service: '//blp/refdata',\n operation: 'ReferenceDataRequest',\n securities: tickers,\n fields,\n overrides: mapObjectToPairs(options.overrides),\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n backend: options.backend,\n validateFields: options.validateFields,\n extractor: 'bulk',\n });\n }\n\n public async bdh(\n tickers: readonly string[],\n fields: readonly string[],\n options: BdhOptions = {},\n ): Promise<unknown> {\n return await this.request({\n service: '//blp/refdata',\n operation: 'HistoricalDataRequest',\n securities: tickers,\n fields,\n startDate: formatDate(options.start),\n endDate: formatDate(options.end),\n overrides: mapObjectToPairs(options.overrides),\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n backend: options.backend,\n validateFields: options.validateFields,\n extractor: 'histdata',\n });\n }\n\n public async bdib(ticker: string, options: BdibOptions = {}): Promise<unknown> {\n return await this.request({\n service: '//blp/refdata',\n operation: 'IntradayBarRequest',\n security: ticker,\n eventType: options.eventType ?? 'TRADE',\n interval: options.interval ?? 1,\n startDatetime: formatDateTime(options.start),\n endDatetime: formatDateTime(options.end),\n requestTz: options.requestTz,\n outputTz: options.outputTz,\n kwargs: mapObjectToPairs(options.kwargs),\n backend: options.backend,\n extractor: 'intraday_bar',\n });\n }\n\n public async bdtick(ticker: string, options: BdtickOptions = {}): Promise<unknown> {\n return await this.request({\n service: '//blp/refdata',\n operation: 'IntradayTickRequest',\n security: ticker,\n eventTypes: options.eventTypes ?? ['TRADE'],\n startDatetime: formatDateTime(options.start),\n endDatetime: formatDateTime(options.end),\n requestTz: options.requestTz,\n outputTz: options.outputTz,\n kwargs: buildBdtickKwargs(options),\n backend: options.backend,\n extractor: 'intraday_tick',\n });\n }\n\n public async bql(query: string, options: BqlOptions = {}): Promise<unknown> {\n return await this.request({\n service: '//blp/bqlsvc',\n operation: 'sendQuery',\n elements: [{ key: 'expression', value: toRequestString(query) }],\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n extractor: 'bql',\n });\n }\n\n public async beqs(screen: string, options: BeqsOptions = {}): Promise<unknown> {\n const elements: StringPair[] = [\n { key: 'screenName', value: toRequestString(screen) },\n { key: 'screenType', value: toRequestString(options.screenType ?? 'PRIVATE') },\n { key: 'Group', value: toRequestString(options.group ?? 'General') },\n ];\n if (options.asof !== undefined) {\n const asofFormatted = formatDate(options.asof);\n if (asofFormatted !== undefined) {\n elements.push({ key: 'asOfDate', value: asofFormatted });\n }\n }\n const overrides: OverridesMap = { ...(options.overrides ?? {}) };\n return await this.request({\n service: '//blp/refdata',\n operation: 'BeqsRequest',\n elements,\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n overrides: mapObjectToPairs(overrides),\n format: options.format,\n extractor: 'generic',\n });\n }\n\n public async bsrch(searchSpec: string, options: BsrchOptions = {}): Promise<unknown> {\n const elements: OverridesMap = {\n Domain: toRequestString(searchSpec),\n ...(options.overrides ?? {}),\n ...(options.kwargs ?? {}),\n };\n return await this.request({\n service: '//blp/exrsvc',\n operation: 'ExcelGetGridRequest',\n backend: options.backend,\n elements: mapObjectToPairs(elements),\n format: options.format,\n extractor: 'bsrch',\n });\n }\n\n public async bta(\n ticker: string,\n study: string | RawStudy,\n options: BtaOptions = {},\n ): Promise<unknown> {\n return await this.request({\n service: '//blp/tasvc',\n operation: 'studyRequest',\n elements: buildTaRequest(ticker, study, options),\n backend: options.backend,\n format: options.format,\n extractor: 'generic',\n });\n }\n\n public async bflds(options: BfldsOptions = {}): Promise<unknown> {\n if (options.searchSpec !== undefined) {\n return await this.request({\n service: '//blp/apiflds',\n operation: 'FieldSearchRequest',\n searchSpec: toRequestString(options.searchSpec),\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n });\n }\n const fields: string[] = Array.isArray(options.fields)\n ? (options.fields as string[])\n : typeof options.fields === 'string'\n ? [options.fields]\n : [];\n return await this.request({\n service: '//blp/apiflds',\n operation: 'FieldInfoRequest',\n fieldIds: fields,\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n });\n }\n\n public async blkp(query: string, options: BlkpOptions = {}): Promise<unknown> {\n return await this.request({\n service: '//blp/instruments',\n operation: 'instrumentListRequest',\n elements: [{ key: 'query', value: toRequestString(query) }],\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n });\n }\n\n public async bport(\n portfolio: string,\n fields: string | readonly string[],\n options: RequestOptions = {},\n ): Promise<unknown> {\n return await this.request({\n service: '//blp/refdata',\n operation: 'PortfolioDataRequest',\n security: toRequestString(portfolio),\n fields: Array.isArray(fields) ? fields : [toRequestString(fields)],\n backend: options.backend,\n overrides: mapObjectToPairs(options.overrides),\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n });\n }\n\n public async bcurves(ticker: string, options: RequestOptions = {}): Promise<unknown> {\n return await this.request({\n service: '//blp/instruments',\n operation: 'curveListRequest',\n elements: [{ key: 'query', value: toRequestString(ticker) }],\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n });\n }\n\n public async bgovts(ticker: string, options: RequestOptions = {}): Promise<unknown> {\n return await this.request({\n service: '//blp/instruments',\n operation: 'govtListRequest',\n elements: [{ key: 'query', value: toRequestString(ticker) }],\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n });\n }\n\n public async resolveFieldTypes(\n fields: readonly string[],\n overrides?: OverridesMap ,\n defaultType = 'string',\n ): Promise<Record<string, string>> {\n const items = await this._inner.resolveFieldTypes(\n fields,\n mapObjectToPairs(overrides),\n defaultType,\n );\n return Object.fromEntries(items.map((item) => [item.key, item.value]));\n }\n\n public getFieldInfo(field: string): FieldInfo | null {\n return this._inner.getFieldInfo(field);\n }\n\n public clearFieldCache(): void {\n this._inner.clearFieldCache();\n }\n\n public saveFieldCache(): void {\n this._inner.saveFieldCache();\n }\n\n public async validateFields(fields: readonly string[]): Promise<string[]> {\n return await this._inner.validateFields(fields);\n }\n\n public isFieldValidationEnabled(): boolean {\n return this._inner.isFieldValidationEnabled();\n }\n\n public async getSchema(service: string): Promise<unknown> {\n const json = await this._inner.getSchema(service);\n return JSON.parse(json) as unknown;\n }\n\n public async getOperation(service: string, operation: string): Promise<unknown> {\n const json = await this._inner.getOperation(service, operation);\n return JSON.parse(json) as unknown;\n }\n\n public async listOperations(service: string): Promise<string[]> {\n return await this._inner.listOperations(service);\n }\n\n public getCachedSchema(service: string): unknown {\n const json = this._inner.getCachedSchema(service);\n return json === null ? null : (JSON.parse(json) as unknown);\n }\n\n public invalidateSchema(service: string): void {\n this._inner.invalidateSchema(service);\n }\n\n public clearSchemaCache(): void {\n this._inner.clearSchemaCache();\n }\n\n public listCachedSchemas(): string[] {\n return this._inner.listCachedSchemas();\n }\n\n public async getEnumValues(\n service: string,\n operation: string,\n element: string,\n ): Promise<string[] | null> {\n return await this._inner.getEnumValues(service, operation, element);\n }\n\n public async listValidElements(\n service: string,\n operation: string,\n ): Promise<string[] | null> {\n return await this._inner.listValidElements(service, operation);\n }\n\n public async subscribe(\n tickers: readonly string[],\n fields: readonly string[],\n options: StreamOptions = {},\n ): Promise<Subscription> {\n try {\n const useOptions =\n options.options !== undefined ||\n options.flushThreshold !== undefined ||\n options.overflowPolicy !== undefined ||\n options.streamCapacity !== undefined;\n const stream = useOptions\n ? await this._inner.subscribeWithOptions(\n '//blp/mktdata',\n tickers,\n fields,\n options.options,\n options.flushThreshold,\n options.overflowPolicy,\n options.streamCapacity,\n options.allFields,\n )\n : await this._inner.subscribe(tickers, fields, options.allFields);\n return new Subscription(stream);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async subscribeWithOptions(\n service: string,\n tickers: readonly string[],\n fields: readonly string[],\n options?: readonly string[],\n flushThreshold?: number,\n overflowPolicy?: string,\n streamCapacity?: number,\n allFields?: boolean,\n ): Promise<Subscription> {\n try {\n const stream = await this._inner.subscribeWithOptions(\n service,\n tickers,\n fields,\n options,\n flushThreshold,\n overflowPolicy,\n streamCapacity,\n allFields,\n );\n return new Subscription(stream);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public signalShutdown(): void {\n this._inner.signalShutdown();\n }\n\n public isAvailable(): boolean {\n return this._inner.isAvailable();\n }\n\n public async stream(\n tickers: readonly string[],\n fields: readonly string[],\n options: StreamOptions = {},\n ): Promise<Subscription> {\n return await this.subscribeWithOptions(\n '//blp/mktdata',\n tickers,\n fields,\n options.options,\n options.flushThreshold,\n options.overflowPolicy,\n options.streamCapacity,\n options.allFields,\n );\n }\n\n public async vwap(\n tickers: readonly string[],\n fields: readonly string[],\n options: StreamOptions = {},\n ): Promise<Subscription> {\n return await this.subscribeWithOptions(\n '//blp/mktvwap',\n tickers,\n fields,\n options.options,\n options.flushThreshold,\n options.overflowPolicy,\n options.streamCapacity,\n options.allFields,\n );\n }\n\n public async mktbar(ticker: string, options: StreamOptions = {}): Promise<Subscription> {\n return await this.subscribeWithOptions(\n '//blp/mktbar',\n [ticker],\n options.fields ?? [],\n options.options,\n options.flushThreshold,\n options.overflowPolicy,\n options.streamCapacity,\n options.allFields,\n );\n }\n\n public async depth(ticker: string, options: StreamOptions = {}): Promise<Subscription> {\n return await this.subscribeWithOptions(\n '//blp/mktdepthdata',\n [ticker],\n options.fields ?? [],\n options.options,\n options.flushThreshold,\n options.overflowPolicy,\n options.streamCapacity,\n options.allFields,\n );\n }\n\n public async chains(ticker: string, options: StreamOptions = {}): Promise<Subscription> {\n return await this.subscribeWithOptions(\n '//blp/mktlist',\n [ticker],\n options.fields ?? [],\n options.options,\n options.flushThreshold,\n options.overflowPolicy,\n options.streamCapacity,\n options.allFields,\n );\n }\n\n public async bops(service: string): Promise<string[]> {\n return await this._inner.listOperations(service);\n }\n\n public async bschema(service: string, operation?: string): Promise<unknown> {\n if (operation !== undefined) {\n const json = await this._inner.getOperation(service, operation);\n return JSON.parse(json) as unknown;\n }\n const json = await this._inner.getSchema(service);\n return JSON.parse(json) as unknown;\n }\n\n public async fieldInfo(\n fields: string | readonly string[],\n options: BfldsOptions = {},\n ): Promise<unknown> {\n return await this.bflds({\n fields: Array.isArray(fields) ? (fields as string[]) : [toRequestString(fields)],\n ...options,\n });\n }\n\n public async fieldSearch(\n searchSpec: string,\n options: BfldsOptions = {},\n ): Promise<unknown> {\n return await this.bflds({ searchSpec: toRequestString(searchSpec), ...options });\n }\n\n // ── Recipes ─────────────────────────────────────────────────────────\n\n public async bqr(ticker: string, options: BqrOptions = {}): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeBqr(\n toRequestString(ticker),\n formatDateTime(options.startDatetime),\n formatDateTime(options.endDatetime),\n options.eventTypes ?? null,\n options.includeBrokerCodes !== false,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async yas(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: YasOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeYas(\n toStringArray(tickers),\n toStringArray(fields),\n formatDate(options.settleDt),\n options.yieldType ?? undefined,\n options.spread ?? undefined,\n options.yieldVal ?? undefined,\n options.price ?? undefined,\n options.benchmark ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async preferreds(\n equityTicker: string,\n options: PreferredsOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipePreferreds(\n toRequestString(equityTicker),\n options.fields !== undefined ? toStringArray(options.fields) : null,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async corporateBonds(\n ticker: string,\n options: CorporateBondsOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeCorporateBonds(\n toRequestString(ticker),\n options.ccy ?? undefined,\n options.fields !== undefined ? toStringArray(options.fields) : null,\n options.activeOnly !== false,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async futTicker(\n genTicker: string,\n dt: DateLike,\n options: FuturesResolveOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeFutTicker(\n toRequestString(genTicker),\n formatDate(dt) ?? '',\n options.freq ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async activeFutures(\n genTicker: string,\n dt: DateLike,\n options: FuturesResolveOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeActiveFutures(\n toRequestString(genTicker),\n formatDate(dt) ?? '',\n options.freq ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async cdxTicker(\n genTicker: string,\n dt: DateLike,\n options: RecipeBackendOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeCdxTicker(\n toRequestString(genTicker),\n formatDate(dt) ?? '',\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async activeCdx(\n genTicker: string,\n dt: DateLike,\n options: ActiveCdxOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeActiveCdx(\n toRequestString(genTicker),\n formatDate(dt) ?? '',\n options.lookbackDays ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async dividend(\n tickers: string | readonly string[],\n startDate: DateLike,\n endDate: DateLike,\n options: DividendOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeDividend(\n toStringArray(tickers),\n formatDate(startDate) ?? '',\n formatDate(endDate) ?? '',\n options.dvdType ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async turnover(\n tickers: string | readonly string[],\n startDate: DateLike,\n endDate: DateLike,\n options: TurnoverOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeTurnover(\n toStringArray(tickers),\n formatDate(startDate) ?? '',\n formatDate(endDate) ?? '',\n options.ccy ?? undefined,\n options.factor ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async etfHoldings(\n etfTicker: string,\n options: EtfHoldingsOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeEtfHoldings(\n toRequestString(etfTicker),\n options.fields !== undefined ? toStringArray(options.fields) : null,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async currencyConversion(\n ticker: string,\n targetCcy: string,\n startDate: DateLike,\n endDate: DateLike,\n options: RecipeBackendOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeCurrencyConversion(\n toRequestString(ticker),\n toRequestString(targetCcy),\n formatDate(startDate) ?? '',\n formatDate(endDate) ?? '',\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n}\n\n// ── Top-level wrappers ──────────────────────────────────────────────────\n\nexport async function connect(config?: EngineConfig): Promise<Engine> {\n return await Promise.resolve(\n config === undefined ? new Engine() : Engine.withConfig(config),\n );\n}\n\nexport function configure(config?: EngineConfig): EngineConfig | undefined;\nexport function configure(host?: string, port?: number): EngineConfig | undefined;\nexport function configure(\n configOrHost?: EngineConfig | string,\n port?: number,\n): EngineConfig | undefined {\n configuredEngineConfig = normalizeConfigureArgs(configOrHost, port);\n clearConfiguredEngine();\n return configuredEngineConfig;\n}\n\nexport async function abdp(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: BdpOptions = {},\n): Promise<unknown> {\n const engine = await getConfiguredEngine();\n return await engine.bdp(toStringArray(tickers), toStringArray(fields), options);\n}\n\nexport async function bdp(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: BdpOptions = {},\n): Promise<unknown> {\n return await abdp(tickers, fields, options);\n}\n\nexport async function abdh(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n start?: DateLike | BdhOptions,\n end?: DateLike,\n options: BdhOptions = {},\n): Promise<unknown> {\n const engine = await getConfiguredEngine();\n // ``BdhOptions`` is a plain object literal; Dates / Luxon DateTimes are\n // typed objects so they fall through to the date-typed branch.\n if (isPlainObject(start) && !(start instanceof Date) && !hasToJSDate(start) && end === undefined) {\n return await engine.bdh(\n toStringArray(tickers),\n toStringArray(fields),\n start,\n );\n }\n return await engine.bdh(toStringArray(tickers), toStringArray(fields), {\n ...options,\n start: start as DateLike | undefined,\n end,\n });\n}\n\nexport async function bdh(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: BdhOptions = {},\n): Promise<unknown> {\n return await abdh(tickers, fields, options);\n}\n\nexport async function abds(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n overrides?: OverridesMap ,\n options: BdpOptions = {},\n): Promise<unknown> {\n const engine = await getConfiguredEngine();\n const normalizedOptions: BdpOptions = isPlainObject(overrides)\n ? { ...options, overrides: { ...(options.overrides ?? {}), ...overrides } }\n : options;\n return await engine.bds(\n toStringArray(tickers),\n toStringArray(fields),\n normalizedOptions,\n );\n}\n\nexport async function bds(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: BdpOptions = {},\n): Promise<unknown> {\n return await abds(tickers, fields, undefined, options);\n}\n\nexport async function abdib(\n ticker: string,\n dt?: DateTimeLike | BdibOptions,\n interval: number | BdibOptions = 1,\n options: BdibOptions = {},\n): Promise<unknown> {\n const engine = await getConfiguredEngine();\n // Distinguish a BdibOptions plain object from a Date / Luxon DateTime, both\n // of which would also pass an ``isPlainObject`` check on bare typeof checks.\n const dtIsOptions =\n isPlainObject(dt) && !(dt instanceof Date) && !hasToJSDate(dt);\n if (dtIsOptions && interval === 1 && Object.keys(options).length === 0) {\n return await engine.bdib(toRequestString(ticker), dt);\n }\n const normalizedOptions: BdibOptions = isPlainObject(interval)\n ? { ...(interval as BdibOptions) }\n : { ...options, interval: typeof interval === 'number' ? interval : 1 };\n if (\n normalizedOptions.start === undefined &&\n normalizedOptions.end === undefined\n ) {\n if (dt === undefined) {\n throw new TypeError('abdib requires dt or explicit start/end options');\n }\n const range = fullDayRange(dt as DateTimeLike);\n normalizedOptions.start = range.start;\n normalizedOptions.end = range.end;\n }\n return await engine.bdib(toRequestString(ticker), normalizedOptions);\n}\n\nexport async function bdib(ticker: string, options: BdibOptions = {}): Promise<unknown> {\n return await abdib(ticker, options);\n}\n\nexport async function abdtick(\n ticker: string,\n start: DateTimeLike | null | undefined,\n end: DateTimeLike | null | undefined,\n options: BdtickOptions = {},\n): Promise<unknown> {\n if (start === undefined || start === null || end === undefined || end === null) {\n throw new TypeError('abdtick requires both start and end datetimes');\n }\n const engine = await getConfiguredEngine();\n return await engine.bdtick(toRequestString(ticker), { ...options, start, end });\n}\n\nexport async function bdtick(ticker: string, options: BdtickOptions = {}): Promise<unknown> {\n const engine = await getConfiguredEngine();\n return await engine.bdtick(toRequestString(ticker), options);\n}\n\nexport async function asubscribe(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: StreamOptions = {},\n): Promise<Subscription> {\n const engine = await getConfiguredEngine();\n return await engine.subscribe(toStringArray(tickers), toStringArray(fields), options);\n}\n\nexport async function subscribe(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: StreamOptions = {},\n): Promise<Subscription> {\n return await asubscribe(tickers, fields, options);\n}\n\nasync function acdxInfo(ticker: string, options: BdpOptions = {}): Promise<unknown> {\n const engine = await getConfiguredEngine();\n return await engine.bdp([toRequestString(ticker)], [...CDX_INFO_FIELDS], options);\n}\n\nasync function acdxPricing(ticker: string, options: CdxOptions = {}): Promise<unknown> {\n const engine = await getConfiguredEngine();\n return await engine.bdp(\n [toRequestString(ticker)],\n [...CDX_PRICING_FIELDS],\n normalizeRecoveryOptions(options),\n );\n}\n\nasync function acdxRisk(ticker: string, options: CdxOptions = {}): Promise<unknown> {\n const engine = await getConfiguredEngine();\n return await engine.bdp(\n [toRequestString(ticker)],\n [...CDX_RISK_FIELDS],\n normalizeRecoveryOptions(options),\n );\n}\n\nexport const blp = Object.freeze({\n bdp,\n bdh,\n bds,\n bdib,\n bdtick,\n subscribe,\n abdp,\n abdh,\n abds,\n abdib,\n abdtick,\n asubscribe,\n});\n\nexport const ext = Object.freeze({\n cdx: Object.freeze({\n acdx_info: acdxInfo,\n acdx_pricing: acdxPricing,\n acdx_risk: acdxRisk,\n }),\n\n parseDate: native.extParseDate,\n fmtDate: native.extFmtDate,\n\n pivotToWide: native.extPivotToWide,\n isLongFormat: native.extIsLongFormat,\n\n parseTicker: native.extParseTicker,\n isSpecificContract: native.extIsSpecificContract,\n buildFuturesTicker: native.extBuildFuturesTicker,\n normalizeTickers: native.extNormalizeTickers,\n filterEquityTickers: native.extFilterEquityTickers,\n\n generateFuturesCandidates: native.extGenerateFuturesCandidates,\n validateGenericTicker: native.extValidateGenericTicker,\n contractIndex: native.extContractIndex,\n filterCandidatesByCycle: native.extFilterCandidatesByCycle,\n filterValidContracts: native.extFilterValidContracts,\n\n parseCdxTicker: native.extParseCdxTicker,\n previousCdxSeries: native.extPreviousCdxSeries,\n cdxGenToSpecific: native.extCdxGenToSpecific,\n\n buildFxPair: native.extBuildFxPair,\n sameCurrency: native.extSameCurrency,\n currenciesNeedingConversion: native.extCurrenciesNeedingConversion,\n\n renameDividendColumns: native.extRenameDividendColumns,\n renameEtfColumns: native.extRenameEtfColumns,\n\n getMonthCode: native.extGetMonthCode,\n getMonthName: native.extGetMonthName,\n getFuturesMonths: native.extGetFuturesMonths,\n getDvdType: native.extGetDvdType,\n getDvdTypes: native.extGetDvdTypes,\n getDvdCols: native.extGetDvdCols,\n getEtfCols: native.extGetEtfCols,\n\n buildYasOverrides: native.extBuildYasOverrides,\n\n buildEarningHeaderRename: native.extBuildEarningHeaderRename,\n calculateLevelPercentages: native.extCalculateLevelPercentages,\n\n buildPreferredsQuery: native.extBuildPreferredsQuery,\n buildCorporateBondsQuery: native.extBuildCorporateBondsQuery,\n buildEtfHoldingsQuery: native.extBuildEtfHoldingsQuery,\n\n defaultTurnoverDates: native.extDefaultTurnoverDates,\n defaultBqrDatetimes: native.extDefaultBqrDatetimes,\n\n deriveSessions: native.extDeriveSessions,\n getMarketRule: native.extGetMarketRule,\n inferTimezone: native.extInferTimezone,\n setExchangeOverride: native.extSetExchangeOverride,\n getExchangeOverride: native.extGetExchangeOverride,\n clearExchangeOverride: native.extClearExchangeOverride,\n listExchangeOverrides: native.extListExchangeOverrides,\n sessionTimesToUtc: native.extSessionTimesToUtc,\n});\n\nexport function version(): string {\n return packageJson.version;\n}\n\nexport const setLogLevel = native.setLogLevel;\nexport const getLogLevel = native.getLogLevel;\n\n// Issue #317: native datetime/date acceptance helpers, re-exported.\nexport { formatDate, formatDateTime } from './dates';\n\nexport {\n BlpError,\n BlpSessionError,\n BlpRequestError,\n BlpValidationError,\n BlpTimeoutError,\n BlpInternalError,\n wrapError,\n};\n\nexport type {\n ActiveCdxOptions,\n AuthConfig,\n BackendKind,\n BdhOptions,\n BdibOptions,\n BdpOptions,\n BdtickOptions,\n BeqsOptions,\n BfldsOptions,\n BlkpOptions,\n BqlOptions,\n BqrOptions,\n BsrchOptions,\n BtaOptions,\n CdxOptions,\n CdxTickerInfo,\n CorporateBondsOptions,\n DateLike,\n DateTimeLike,\n DividendOptions,\n EngineConfig,\n EtfHoldingsOptions,\n ExchangeInfoResult,\n ExchangeOverrideInput,\n FieldInfo,\n FormatKind,\n FuturesCandidate,\n FuturesResolveOptions,\n FxPairInfo,\n MarketRule,\n OverridesMap,\n PreferredsOptions,\n PrimitiveValue,\n RecipeBackendOptions,\n RequestInput,\n RequestOptions,\n ServerAddress,\n SessionWindowsInfo,\n Socks5Config,\n StreamOptions,\n StringPair,\n SubscriptionStats,\n TickerParts,\n TimeRange,\n TlsConfig,\n TurnoverOptions,\n YasOptions,\n};\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/arrow-zero-copy.ts","../src/dates.ts","../src/native/platform-map.ts","../src/native/resolve-native.ts","../src/index.ts"],"names":["Field","Schema","makeData","Struct","Table","RecordBatch","Bool","Binary","DateDay","DateMillisecond","Float32","Float64","Int8","Int16","Int32","Int64","LargeBinary","LargeUtf8","Null","TimeMillisecond","TimeSecond","TimeMicrosecond","TimeNanosecond","TimestampMillisecond","TimestampNanosecond","TimestampSecond","TimestampMicrosecond","Uint8","Uint16","Uint32","Uint64","Utf8","dt","createRequire","fs","path","nodeRequire","tableFromIPC","json"],"mappings":"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","file":"index.js","sourcesContent":["export interface BlpRequestErrorOptions {\n readonly service?: string;\n readonly operation?: string;\n readonly request_id?: string;\n readonly code?: string | number;\n}\n\nexport interface BlpValidationErrorOptions {\n readonly element?: string;\n readonly suggestion?: string;\n}\n\nexport class BlpError extends Error {\n public constructor(message: string) {\n super(message);\n this.name = new.target.name;\n }\n}\n\nexport class BlpSessionError extends BlpError {}\n\nexport class BlpRequestError extends BlpError {\n public readonly service?: string;\n public readonly operation?: string;\n public readonly request_id?: string;\n public readonly code?: string | number;\n\n public constructor(message: string, options: BlpRequestErrorOptions = {}) {\n super(message);\n this.service = options.service;\n this.operation = options.operation;\n this.request_id = options.request_id;\n this.code = options.code;\n }\n}\n\nexport class BlpValidationError extends BlpError {\n public readonly element?: string;\n public readonly suggestion?: string;\n\n public constructor(message: string, options: BlpValidationErrorOptions = {}) {\n super(message);\n this.element = options.element;\n this.suggestion = options.suggestion;\n }\n}\n\nexport class BlpTimeoutError extends BlpError {}\n\nexport class BlpInternalError extends BlpError {}\n\nexport function wrapError(napiError: unknown): BlpError {\n if (napiError instanceof BlpError) {\n return napiError;\n }\n const msg =\n napiError instanceof Error\n ? napiError.message\n : typeof napiError === 'string'\n ? napiError\n : '';\n\n // Session errors\n if (\n msg.includes('Session start failed') ||\n msg.includes('session start failed') ||\n msg.includes('Failed to start session') ||\n msg.includes('Failed to open service') ||\n msg.includes('failed to spawn worker') ||\n msg.includes('connect event failed')\n ) {\n return new BlpSessionError(msg);\n }\n\n // Request errors\n if (msg.includes('Request failed') || msg.includes('Subscription failed')) {\n const options: BlpRequestErrorOptions = parseRequestOptions(msg);\n return new BlpRequestError(msg, options);\n }\n\n // Validation errors\n if (\n msg.includes('Invalid argument') ||\n msg.includes('Configuration error') ||\n msg.includes('Operation not found') ||\n msg.includes('Schema element not found') ||\n msg.includes('Schema type mismatch') ||\n msg.includes('Unsupported schema') ||\n msg.includes('invalid extractor') ||\n msg.includes('(did you mean')\n ) {\n const options: BlpValidationErrorOptions = parseValidationOptions(msg);\n return new BlpValidationError(msg, options);\n }\n\n // Timeout errors\n if (msg.includes('Request timed out')) {\n return new BlpTimeoutError(msg);\n }\n\n // Internal errors\n if (\n msg.includes('Internal error') ||\n msg.includes('Channel closed') ||\n msg.includes('Stream buffer full') ||\n msg.includes('Request was cancelled')\n ) {\n return new BlpInternalError(msg);\n }\n\n return new BlpError(msg);\n}\n\nfunction parseRequestOptions(msg: string): BlpRequestErrorOptions {\n const options: {\n service?: string;\n operation?: string;\n request_id?: string;\n code?: string | number;\n } = {};\n const serviceOpMatch = /on ([^:]+)::([^ (]+)/.exec(msg);\n if (serviceOpMatch !== null) {\n options.service = serviceOpMatch[1];\n options.operation = serviceOpMatch[2];\n }\n const requestIdMatch = /\\[request_id=([^\\]]+)\\]/.exec(msg);\n if (requestIdMatch !== null) {\n options.request_id = requestIdMatch[1];\n }\n return options;\n}\n\nfunction parseValidationOptions(msg: string): BlpValidationErrorOptions {\n const options: { element?: string; suggestion?: string } = {};\n const suggestionMatch = /\\(did you mean '([^']+)'\\?\\)/.exec(msg);\n if (suggestionMatch !== null) {\n options.suggestion = suggestionMatch[1];\n }\n return options;\n}\n","import {\n Binary,\n Bool,\n DateDay,\n DateMillisecond,\n Field,\n Float32,\n Float64,\n Int8,\n Int16,\n Int32,\n Int64,\n LargeBinary,\n LargeUtf8,\n Null,\n RecordBatch,\n Schema,\n Struct,\n Table,\n TimeMillisecond,\n TimeMicrosecond,\n TimeNanosecond,\n TimeSecond,\n TimestampMillisecond,\n TimestampMicrosecond,\n TimestampNanosecond,\n TimestampSecond,\n Uint8,\n Uint16,\n Uint32,\n Uint64,\n Utf8,\n makeData,\n type Data,\n type DataType,\n} from 'apache-arrow';\n\nimport type { NativeArrowColumn, NativeArrowZeroCopyBatch } from './napi';\n\nconst NATIVE_ARROW_BUFFERS = Symbol('@xbbg/nativeArrowBuffers');\n\ntype TypedArrayConstructor<T extends ArrayBufferView> = new (\n buffer: ArrayBufferLike,\n byteOffset: number,\n length: number,\n) => T;\n\nexport function tableFromNativeArrowBatch(batch: NativeArrowZeroCopyBatch): Table {\n const retainedBuffers: Buffer[] = [];\n const fields = batch.columns.map((column) => {\n const type = arrowType(column);\n return new Field(column.name, type, column.nullable);\n });\n const children = batch.columns.map((column) => dataFromColumn(column, retainedBuffers));\n\n const schema = new Schema(fields);\n const structData = makeData({\n type: new Struct(fields),\n length: batch.numRows,\n children,\n });\n const table = new Table(schema, new RecordBatch(schema, structData));\n\n // Keep the original Node Buffer views alive. Numeric Arrow vectors retain typed\n // views over the same backing ArrayBuffers, but keeping these Buffer objects on\n // the Table makes the NAPI external-buffer lifetime explicit.\n Object.defineProperty(table, NATIVE_ARROW_BUFFERS, {\n value: retainedBuffers,\n enumerable: false,\n });\n\n return table;\n}\n\nfunction dataFromColumn(\n column: NativeArrowColumn,\n retainedBuffers: Buffer[],\n): Data {\n const nullBitmap = optionalUint8View(column.nullBitmap, retainedBuffers);\n switch (column.type) {\n case 'bool':\n return makeData({\n type: new Bool(),\n length: column.length,\n nullCount: column.nullCount,\n nullBitmap,\n data: requiredUint8View(column, retainedBuffers, Math.ceil(column.length / 8)),\n });\n case 'binary':\n return makeData({\n type: new Binary(),\n length: column.length,\n nullCount: column.nullCount,\n nullBitmap,\n valueOffsets: requiredOffsets(column, retainedBuffers),\n data: requiredUint8View(column, retainedBuffers),\n });\n case 'date32':\n return scalarData(column, retainedBuffers, nullBitmap, new DateDay(), Int32Array);\n case 'date64':\n return scalarData(column, retainedBuffers, nullBitmap, new DateMillisecond(), BigInt64Array);\n case 'float32':\n return scalarData(column, retainedBuffers, nullBitmap, new Float32(), Float32Array);\n case 'float64':\n return scalarData(column, retainedBuffers, nullBitmap, new Float64(), Float64Array);\n case 'int8':\n return scalarData(column, retainedBuffers, nullBitmap, new Int8(), Int8Array);\n case 'int16':\n return scalarData(column, retainedBuffers, nullBitmap, new Int16(), Int16Array);\n case 'int32':\n return scalarData(column, retainedBuffers, nullBitmap, new Int32(), Int32Array);\n case 'int64':\n return scalarData(column, retainedBuffers, nullBitmap, new Int64(), BigInt64Array);\n case 'large_binary':\n return makeData({\n type: new LargeBinary(),\n length: column.length,\n nullCount: column.nullCount,\n nullBitmap,\n valueOffsets: requiredLargeOffsets(column, retainedBuffers),\n data: requiredUint8View(column, retainedBuffers),\n });\n case 'large_utf8':\n return makeData({\n type: new LargeUtf8(),\n length: column.length,\n nullCount: column.nullCount,\n nullBitmap,\n valueOffsets: requiredLargeOffsets(column, retainedBuffers),\n data: requiredUint8View(column, retainedBuffers),\n });\n case 'null':\n return makeData({\n type: new Null(),\n length: column.length,\n });\n case 'time32_ms':\n return scalarData(column, retainedBuffers, nullBitmap, new TimeMillisecond(), Int32Array);\n case 'time32_s':\n return scalarData(column, retainedBuffers, nullBitmap, new TimeSecond(), Int32Array);\n case 'time64_us':\n return scalarData(column, retainedBuffers, nullBitmap, new TimeMicrosecond(), BigInt64Array);\n case 'time64_ns':\n return scalarData(column, retainedBuffers, nullBitmap, new TimeNanosecond(), BigInt64Array);\n case 'timestamp_ms':\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampMillisecond(column.timezone),\n BigInt64Array,\n );\n case 'timestamp_ns':\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampNanosecond(column.timezone),\n BigInt64Array,\n );\n case 'timestamp_s':\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampSecond(column.timezone),\n BigInt64Array,\n );\n case 'timestamp_us':\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampMicrosecond(column.timezone),\n BigInt64Array,\n );\n case 'uint8':\n return scalarData(column, retainedBuffers, nullBitmap, new Uint8(), Uint8Array);\n case 'uint16':\n return scalarData(column, retainedBuffers, nullBitmap, new Uint16(), Uint16Array);\n case 'uint32':\n return scalarData(column, retainedBuffers, nullBitmap, new Uint32(), Uint32Array);\n case 'uint64':\n return scalarData(column, retainedBuffers, nullBitmap, new Uint64(), BigUint64Array);\n case 'utf8':\n return makeData({\n type: new Utf8(),\n length: column.length,\n nullCount: column.nullCount,\n nullBitmap,\n valueOffsets: requiredOffsets(column, retainedBuffers),\n data: requiredUint8View(column, retainedBuffers),\n });\n }\n}\n\nfunction arrowType(column: NativeArrowColumn): DataType {\n switch (column.type) {\n case 'bool':\n return new Bool();\n case 'binary':\n return new Binary();\n case 'date32':\n return new DateDay();\n case 'date64':\n return new DateMillisecond();\n case 'float32':\n return new Float32();\n case 'float64':\n return new Float64();\n case 'int8':\n return new Int8();\n case 'int16':\n return new Int16();\n case 'int32':\n return new Int32();\n case 'int64':\n return new Int64();\n case 'large_binary':\n return new LargeBinary();\n case 'large_utf8':\n return new LargeUtf8();\n case 'null':\n return new Null();\n case 'time32_ms':\n return new TimeMillisecond();\n case 'time32_s':\n return new TimeSecond();\n case 'time64_us':\n return new TimeMicrosecond();\n case 'time64_ns':\n return new TimeNanosecond();\n case 'timestamp_ms':\n return new TimestampMillisecond(column.timezone);\n case 'timestamp_ns':\n return new TimestampNanosecond(column.timezone);\n case 'timestamp_s':\n return new TimestampSecond(column.timezone);\n case 'timestamp_us':\n return new TimestampMicrosecond(column.timezone);\n case 'uint8':\n return new Uint8();\n case 'uint16':\n return new Uint16();\n case 'uint32':\n return new Uint32();\n case 'uint64':\n return new Uint64();\n case 'utf8':\n return new Utf8();\n }\n}\n\nfunction scalarData<T extends DataType & { TArray: ArrayBufferView }>(\n column: NativeArrowColumn,\n retainedBuffers: Buffer[],\n nullBitmap: Uint8Array | undefined,\n type: T,\n ctor: TypedArrayConstructor<T['TArray']>,\n): Data<T> {\n return makeData({\n type,\n length: column.length,\n nullCount: column.nullCount,\n nullBitmap,\n data: requiredTypedView(column, ctor, retainedBuffers),\n } as never) as Data<T>;\n}\n\nfunction requiredTypedView<T extends ArrayBufferView>(\n column: NativeArrowColumn,\n ctor: TypedArrayConstructor<T>,\n retainedBuffers: Buffer[],\n): T {\n const buffer = requireBuffer(column, 'data');\n retainedBuffers.push(buffer);\n return new ctor(buffer.buffer, buffer.byteOffset, column.length);\n}\n\nfunction requiredOffsets(\n column: NativeArrowColumn,\n retainedBuffers: Buffer[],\n): Int32Array {\n const buffer = requireBuffer(column, 'offsets');\n retainedBuffers.push(buffer);\n return new Int32Array(buffer.buffer, buffer.byteOffset, column.length + 1);\n}\n\nfunction requiredLargeOffsets(\n column: NativeArrowColumn,\n retainedBuffers: Buffer[],\n): BigInt64Array {\n const buffer = requireBuffer(column, 'offsets');\n retainedBuffers.push(buffer);\n return new BigInt64Array(buffer.buffer, buffer.byteOffset, column.length + 1);\n}\n\nfunction requiredUint8View(\n column: NativeArrowColumn,\n retainedBuffers: Buffer[],\n byteLength?: number,\n): Uint8Array {\n const buffer = requireBuffer(column, 'data');\n retainedBuffers.push(buffer);\n return new Uint8Array(buffer.buffer, buffer.byteOffset, byteLength ?? buffer.byteLength);\n}\n\nfunction optionalUint8View(\n buffer: Buffer | undefined,\n retainedBuffers: Buffer[],\n): Uint8Array | undefined {\n if (buffer === undefined) {\n return undefined;\n }\n retainedBuffers.push(buffer);\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n}\n\nfunction requireBuffer(\n column: NativeArrowColumn,\n property: 'data' | 'offsets',\n): Buffer {\n const buffer = column[property];\n if (buffer === undefined) {\n throw new Error(`native Arrow column ${column.name} is missing ${property} buffer`);\n }\n return buffer;\n}\n","/**\n * Date / datetime normalization helpers (issue #317).\n *\n * These helpers convert user-supplied date-like values into the wire formats\n * the Bloomberg engine expects:\n *\n * - {@link formatDate} -> Bloomberg-native ``YYYYMMDD`` (used by historical\n * requests, override fields, recipe inputs).\n * - {@link formatDateTime} -> RFC 3339 / ISO 8601 with optional offset (used\n * by intraday requests).\n *\n * They live in a dedicated module so the public surface in ``index.ts`` can\n * be tested without dragging in the native NAPI addon.\n */\n\nimport type { DateLike, DateTimeLike } from './types';\n\nconst ISO_DATE_RE = /^\\d{4}[-/]\\d{2}[-/]\\d{2}$/;\nconst BBG_DATE_RE = /^\\d{8}$/;\n// Whole-string ambiguous (e.g. \"01/17/2023\") OR ambiguous prefix in a\n// datetime string (e.g. \"01/17/2023 10:30\" / \"01/17/2023T10:30\"). Year-leading\n// ISO is not flagged because ISO_DATE_RE matches it explicitly.\nconst AMBIGUOUS_DATE_RE = /^\\d{1,2}[-/]\\d{1,2}[-/]\\d{2,4}([T \\D]|$)/;\n\nexport function hasToJSDate(value: unknown): value is { toJSDate: () => Date } {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'toJSDate' in value &&\n typeof (value as { toJSDate?: unknown }).toJSDate === 'function'\n );\n}\n\nfunction rejectAmbiguousString(value: string): void {\n if (AMBIGUOUS_DATE_RE.test(value) && !ISO_DATE_RE.test(value.trim())) {\n throw new TypeError(\n `Ambiguous date format ${JSON.stringify(value)}: month/day order cannot be inferred. ` +\n `Use ISO 8601 (YYYY-MM-DD), Bloomberg-native (YYYYMMDD), or pass a Date / Luxon DateTime.`,\n );\n }\n}\n\nfunction dateLikeToJSDate(value: DateLike): Date {\n if (value instanceof Date) {\n return value;\n }\n if (typeof value === 'number') {\n return new Date(value);\n }\n if (hasToJSDate(value)) {\n return value.toJSDate();\n }\n if (typeof value === 'string') {\n const text = value.trim();\n rejectAmbiguousString(text);\n if (BBG_DATE_RE.test(text)) {\n const year = Number(text.slice(0, 4));\n const month = Number(text.slice(4, 6)) - 1;\n const day = Number(text.slice(6, 8));\n const dt = new Date(Date.UTC(year, month, day));\n if (Number.isNaN(dt.getTime())) {\n throw new TypeError(`Invalid Bloomberg-native date ${JSON.stringify(value)}`);\n }\n return dt;\n }\n // Replace the first separating space with 'T' so \"2023-01-17 10:30\" parses.\n const normalized = text.replace(' ', 'T');\n const dt = new Date(normalized);\n if (Number.isNaN(dt.getTime())) {\n throw new TypeError(\n `Cannot parse ${JSON.stringify(value)} as a date. Expected ISO 8601, ` +\n `Bloomberg-native YYYYMMDD, Date, epoch ms, or Luxon DateTime.`,\n );\n }\n return dt;\n }\n throw new TypeError(\n `Cannot convert ${typeof value} value ${String(value)} to a Date.`,\n );\n}\n\n/**\n * Format a date-like value to ``YYYYMMDD`` (Bloomberg-native).\n *\n * Accepts ``Date``, ISO 8601 / Bloomberg-native strings, epoch ms, and any\n * duck-typed Luxon-style ``{ toJSDate(): Date }``. Strict on ambiguous formats.\n */\nexport function formatDate(value: DateLike | undefined | null): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value === 'string') {\n const text = value.trim();\n if (text.length === 0) {\n return undefined;\n }\n if (BBG_DATE_RE.test(text)) {\n return text;\n }\n rejectAmbiguousString(text);\n if (ISO_DATE_RE.test(text)) {\n return text.replace(/[-/]/g, '');\n }\n }\n const date = dateLikeToJSDate(value);\n const y = String(date.getUTCFullYear()).padStart(4, '0');\n const m = String(date.getUTCMonth() + 1).padStart(2, '0');\n const d = String(date.getUTCDate()).padStart(2, '0');\n return `${y}${m}${d}`;\n}\n\n/**\n * Format a datetime-like value to RFC 3339 (ISO 8601 with optional offset).\n *\n * Naive ISO strings without a tz suffix are returned as-is so the Rust engine\n * can apply the caller's ``request_tz``. Anything else (Date, epoch ms, Luxon\n * DateTime, or ISO with explicit tz) is converted to a tz-bearing ISO string.\n */\nexport function formatDateTime(\n value: DateTimeLike | undefined | null,\n): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value === 'string') {\n const text = value.trim();\n if (text.length === 0) {\n return undefined;\n }\n rejectAmbiguousString(text);\n if (BBG_DATE_RE.test(text)) {\n return `${text.slice(0, 4)}-${text.slice(4, 6)}-${text.slice(6, 8)}T00:00:00`;\n }\n // Preserve user-supplied naive strings; the Rust engine interprets them\n // according to ``request_tz``.\n return text.replace(' ', 'T');\n }\n const date = dateLikeToJSDate(value);\n return date.toISOString();\n}\n","export const platformPackages = Object.freeze({\n 'darwin-arm64': '@xbbg/core-darwin-arm64',\n 'linux-x64': '@xbbg/core-linux-x64',\n 'win32-x64': '@xbbg/core-win32-x64',\n} as const);\n\nexport type PlatformKey = keyof typeof platformPackages;\n\nexport function platformKey(\n platform: NodeJS.Platform = process.platform,\n arch: string = process.arch,\n): string {\n return `${platform}-${arch}`;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { createRequire } from 'node:module';\n\nimport { platformKey, platformPackages } from './platform-map';\n\nconst nodeRequire = createRequire(__filename);\n\ninterface NativePackageResolution {\n readonly binaryPath: string;\n}\n\nexport interface NativeAddonResolution {\n readonly key: string;\n readonly packageName: string | null;\n readonly binaryPath: string | null;\n}\n\nexport interface NativeResolverOptions {\n readonly key: string;\n readonly packageName: string | null;\n readonly repoRoot: string;\n readonly requirePackage: (id: string) => unknown;\n readonly exists: (target: string) => boolean;\n}\n\nfunction exists(target: string): boolean {\n try {\n fs.accessSync(target);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction isResolutionObject(value: unknown): value is NativePackageResolution {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction validateNativePackage(packageName: string, resolved: unknown): NativePackageResolution {\n if (!isResolutionObject(resolved)) {\n throw new Error(`Invalid native package ${packageName}: expected an object with binaryPath`);\n }\n if (!('binaryPath' in resolved)) {\n throw new Error(`Invalid native package ${packageName}: missing binaryPath`);\n }\n if (typeof resolved.binaryPath !== 'string') {\n throw new Error(`Invalid native package ${packageName}: binaryPath must be a string`);\n }\n return resolved;\n}\n\nfunction localPackageIndex(repoRoot: string, packageName: string): string {\n const dirName = packageName.replace('@xbbg/', 'xbbg-');\n return path.join(repoRoot, 'packages', dirName, 'index.js');\n}\n\nfunction isOptionalPackageMissing(err: unknown, packageName: string): boolean {\n if (!(err instanceof Error)) {\n return false;\n }\n const code = 'code' in err ? (err as { readonly code?: unknown }).code : undefined;\n if (code !== 'MODULE_NOT_FOUND') {\n return false;\n }\n return (\n err.message.includes(`Cannot find module '${packageName}'`) ||\n err.message.includes(`Cannot find module \"${packageName}\"`) ||\n err.message.includes(`Cannot find package '${packageName}'`) ||\n err.message.includes(`Cannot find package \"${packageName}\"`)\n );\n}\n\nfunction resolveInstalledPackage(\n packageName: string,\n requirePackage: (id: string) => unknown,\n existsFile: (target: string) => boolean,\n): NativePackageResolution | null {\n try {\n const resolved = validateNativePackage(packageName, requirePackage(packageName));\n if (!existsFile(resolved.binaryPath)) {\n throw new Error(\n `Invalid native package ${packageName}: binaryPath does not exist: ${resolved.binaryPath}`,\n );\n }\n return resolved;\n } catch (err) {\n if (isOptionalPackageMissing(err, packageName)) {\n return null;\n }\n throw err;\n }\n}\n\nfunction resolveLocalPackage(\n repoRoot: string,\n packageName: string,\n requirePackage: (id: string) => unknown,\n existsFile: (target: string) => boolean,\n): NativePackageResolution | null {\n const localIndex = localPackageIndex(repoRoot, packageName);\n if (!existsFile(localIndex)) {\n return null;\n }\n\n const resolved = validateNativePackage(packageName, requirePackage(localIndex));\n if (!existsFile(resolved.binaryPath)) {\n throw new Error(\n `Invalid native package ${packageName}: binaryPath does not exist: ${resolved.binaryPath}`,\n );\n }\n return resolved;\n}\n\nexport function resolveNativeAddonCore(options: NativeResolverOptions): NativeAddonResolution {\n const { key, packageName, repoRoot, requirePackage, exists: existsFile } = options;\n if (packageName === null) {\n return { key, packageName: null, binaryPath: null };\n }\n\n const installed = resolveInstalledPackage(packageName, requirePackage, existsFile);\n if (installed !== null) {\n return { key, packageName, binaryPath: installed.binaryPath };\n }\n\n const local = resolveLocalPackage(repoRoot, packageName, requirePackage, existsFile);\n if (local !== null) {\n return { key, packageName, binaryPath: local.binaryPath };\n }\n\n return { key, packageName, binaryPath: null };\n}\n\nexport function resolveNativeAddon(repoRoot: string): NativeAddonResolution {\n const key = platformKey();\n const packageName = (platformPackages as Readonly<Record<string, string>>)[key] ?? null;\n return resolveNativeAddonCore({\n key,\n packageName,\n repoRoot,\n requirePackage: (id: string): unknown => nodeRequire(id) as unknown,\n exists,\n });\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { createRequire } from 'node:module';\nimport { tableFromIPC, type Table } from 'apache-arrow';\n\nimport {\n BlpError,\n BlpInternalError,\n BlpRequestError,\n BlpSessionError,\n BlpTimeoutError,\n BlpValidationError,\n wrapError,\n} from './errors';\nimport { tableFromNativeArrowBatch } from './arrow-zero-copy';\n// Date / datetime helpers (#317): isolated module so they can be tested\n// without loading the native NAPI addon. Re-exported as public API below.\nimport { formatDate, formatDateTime, hasToJSDate } from './dates';\nimport { resolveNativeAddon } from './native/resolve-native';\nimport type {\n ActiveCdxOptions,\n AuthConfig,\n BackendKind,\n BdhOptions,\n BdibOptions,\n BdpOptions,\n BdtickOptions,\n BeqsOptions,\n BfldsOptions,\n BlkpOptions,\n BqlOptions,\n BqrOptions,\n BsrchOptions,\n BtaOptions,\n CdxOptions,\n CdxTickerInfo,\n CorporateBondsOptions,\n DateLike,\n DateTimeLike,\n DividendOptions,\n EngineConfig,\n EtfHoldingsOptions,\n ExchangeInfoResult,\n ExchangeOverrideInput,\n FieldInfo,\n FormatKind,\n FuturesCandidate,\n FuturesResolveOptions,\n FxPairInfo,\n MarketRule,\n OverridesMap,\n PreferredsOptions,\n PrimitiveValue,\n RecipeBackendOptions,\n RequestInput,\n RequestOptions,\n ServerAddress,\n SessionWindowsInfo,\n Socks5Config,\n StreamOptions,\n StringPair,\n SubscriptionStats,\n TickerParts,\n TimeRange,\n TlsConfig,\n TurnoverOptions,\n YasOptions,\n} from './types';\nimport type {\n NativeAddon,\n NativeArrowZeroCopyBatch,\n NativeEngine,\n NativeSubscription,\n NativeSubscriptionUpdate,\n} from './napi';\n\nconst nodeRequire = createRequire(__filename);\n\ninterface PackageJsonShape {\n readonly version: string;\n}\n\ninterface PolarsModule {\n readIPC(buffer: Buffer): unknown;\n}\n\nconst packageJson = nodeRequire('../package.json') as PackageJsonShape;\n\nfunction containsBlpapiRuntime(dir: string): boolean {\n if (dir.length === 0 || !fs.existsSync(dir)) {\n return false;\n }\n return [\n 'blpapi3_64.dll',\n 'blpapi3_32.dll',\n 'libblpapi3.dylib',\n 'libblpapi3_64.so',\n 'libblpapi3.so',\n ].some((name) => fs.existsSync(path.join(dir, name)));\n}\n\nfunction parseVersionParts(name: string): number[] | null {\n const parts = name.split('.').map((part) => Number(part));\n return parts.every((part) => Number.isInteger(part) && part >= 0) ? parts : null;\n}\n\nfunction compareSdkRoots(left: string, right: string): number {\n const leftParts = parseVersionParts(path.basename(left));\n const rightParts = parseVersionParts(path.basename(right));\n if (leftParts !== null && rightParts !== null) {\n const length = Math.max(leftParts.length, rightParts.length);\n for (let index = 0; index < length; index += 1) {\n const leftPart = leftParts[index] ?? 0;\n const rightPart = rightParts[index] ?? 0;\n if (leftPart !== rightPart) {\n return rightPart - leftPart;\n }\n }\n }\n if (leftParts !== null) return -1;\n if (rightParts !== null) return 1;\n return right.localeCompare(left);\n}\n\nfunction pushSdkRuntimeCandidates(candidates: string[], sdkRoot: string): void {\n const resolved = path.resolve(sdkRoot);\n candidates.push(resolved, path.join(resolved, 'bin'), path.join(resolved, 'lib'));\n}\n\nfunction resolveVendorSdkRoot(repoRoot: string): string | null {\n const vendorDir = path.join(repoRoot, 'vendor', 'blpapi-sdk');\n if (!fs.existsSync(vendorDir)) {\n return null;\n }\n const candidates = [vendorDir];\n for (const entry of fs.readdirSync(vendorDir, { withFileTypes: true })) {\n if (entry.isDirectory()) {\n candidates.push(path.join(vendorDir, entry.name));\n }\n }\n candidates.sort(compareSdkRoots);\n return candidates.find((candidate) => {\n const dirs = [candidate, path.join(candidate, 'bin'), path.join(candidate, 'lib')];\n return dirs.some(containsBlpapiRuntime);\n }) ?? null;\n}\n\nfunction configureRuntimeSearchPath(): void {\n if (process.platform !== 'win32') {\n return;\n }\n\n const candidates: string[] = [];\n const libDir = process.env.BLPAPI_LIB_DIR;\n if (libDir !== undefined && libDir.length > 0) {\n candidates.push(path.resolve(libDir));\n }\n const root = process.env.BLPAPI_ROOT;\n if (root !== undefined && root.length > 0) {\n pushSdkRuntimeCandidates(candidates, root);\n }\n const repoRoot = path.resolve(__dirname, '..', '..');\n const devRoot = process.env.XBBG_DEV_SDK_ROOT;\n if (devRoot !== undefined && devRoot.length > 0) {\n pushSdkRuntimeCandidates(\n candidates,\n path.isAbsolute(devRoot) ? devRoot : path.resolve(repoRoot, devRoot),\n );\n }\n const vendorRoot = resolveVendorSdkRoot(repoRoot);\n if (vendorRoot !== null) {\n pushSdkRuntimeCandidates(candidates, vendorRoot);\n }\n\n for (const candidate of candidates) {\n if (!containsBlpapiRuntime(candidate)) {\n continue;\n }\n const currentPath = process.env.PATH ?? '';\n const parts = currentPath.split(';').filter((part) => part.length > 0);\n if (!parts.includes(candidate)) {\n process.env.PATH =\n currentPath.length > 0 ? `${candidate};${currentPath}` : candidate;\n }\n break;\n }\n}\n\nconfigureRuntimeSearchPath();\n\nfunction loadNative(): NativeAddon {\n const root = path.resolve(__dirname, '..', '..');\n\n const candidates = [\n path.join(__dirname, 'napi_xbbg.node'),\n path.join(__dirname, '..', 'napi_xbbg.node'),\n path.join(__dirname, 'napi-xbbg.node'),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n return nodeRequire(candidate) as NativeAddon;\n }\n }\n\n const { key, packageName, binaryPath } = resolveNativeAddon(root);\n if (binaryPath !== null) {\n return nodeRequire(binaryPath) as NativeAddon;\n }\n if (packageName === null) {\n throw new Error(\n `No packaged @xbbg/core native addon is available for ${key}. Build it locally with \"npm run build\" from js-xbbg.`,\n );\n }\n\n throw new Error(\n `Unable to load native napi-xbbg module for ${key}. Install ${packageName} via Bun/npm, or build it locally with \"npm run build\" from js-xbbg.`,\n );\n}\n\nconst native = loadNative();\n\n// ── Constants ───────────────────────────────────────────────────────────\n\nexport const Backend = Object.freeze({\n ARROW: 'arrow',\n JSON: 'json',\n POLARS: 'polars',\n}) satisfies Readonly<Record<string, BackendKind>>;\n\nexport const Format = Object.freeze({\n LONG: 'long',\n LONG_TYPED: 'long_typed',\n LONG_WITH_METADATA: 'long_with_metadata',\n SEMI_LONG: 'semi_long',\n}) satisfies Readonly<Record<string, FormatKind>>;\n\nconst CDX_INFO_FIELDS = Object.freeze([\n 'ROLLING_SERIES',\n 'VERSION',\n 'ON_THE_RUN_CURRENT_BD_INDICATOR',\n 'CDS_FIRST_ACCRUAL_START_DATE',\n 'NAME',\n 'NUM_CURRENT_COMPANIES_CCY_TKR',\n 'NUM_ORIG_COMPANIES_CRNCY_TKR',\n 'PX_LAST',\n]);\n\nconst CDX_PRICING_FIELDS = Object.freeze([\n 'PX_LAST',\n 'PX_BID',\n 'PX_ASK',\n 'UPFRONT_LAST',\n 'UPFRONT_BID',\n 'UPFRONT_ASK',\n 'CDS_FLAT_SPREAD',\n 'UPFRONT_FEE',\n 'PV_CDS_PREMIUM_LEG',\n 'PV_CDS_DEFAULT_LEG',\n]);\n\nconst CDX_RISK_FIELDS = Object.freeze([\n 'SW_CNV_BPV',\n 'SW_EQV_BPV',\n 'CDS_SPREAD_MID_MODIFIED_DURATION',\n 'CDS_SPREAD_MID_CONVEXITY',\n 'RECOVERY_RATE_SEN',\n 'CDS_RECOVERY_RT',\n]);\n\nconst TA_STUDIES: Readonly<Record<string, string>> = Object.freeze({\n smavg: 'smavgStudyAttributes',\n sma: 'smavgStudyAttributes',\n emavg: 'emavgStudyAttributes',\n ema: 'emavgStudyAttributes',\n wmavg: 'wmavgStudyAttributes',\n wma: 'wmavgStudyAttributes',\n vmavg: 'vmavgStudyAttributes',\n vma: 'vmavgStudyAttributes',\n tmavg: 'tmavgStudyAttributes',\n tma: 'tmavgStudyAttributes',\n ipmavg: 'ipmavgStudyAttributes',\n rsi: 'rsiStudyAttributes',\n macd: 'macdStudyAttributes',\n mao: 'maoStudyAttributes',\n momentum: 'momentumStudyAttributes',\n mom: 'momentumStudyAttributes',\n roc: 'rocStudyAttributes',\n boll: 'bollStudyAttributes',\n bb: 'bollStudyAttributes',\n kltn: 'kltnStudyAttributes',\n keltner: 'kltnStudyAttributes',\n mae: 'maeStudyAttributes',\n te: 'teStudyAttributes',\n al: 'alStudyAttributes',\n dmi: 'dmiStudyAttributes',\n adx: 'dmiStudyAttributes',\n tas: 'tasStudyAttributes',\n stoch: 'tasStudyAttributes',\n trender: 'trenderStudyAttributes',\n ptps: 'ptpsStudyAttributes',\n parabolic: 'ptpsStudyAttributes',\n sar: 'ptpsStudyAttributes',\n chko: 'chkoStudyAttributes',\n ado: 'adoStudyAttributes',\n vat: 'vatStudyAttributes',\n tvat: 'tvatStudyAttributes',\n atr: 'atrStudyAttributes',\n hurst: 'hurstStudyAttributes',\n fg: 'fgStudyAttributes',\n fear_greed: 'fgStudyAttributes',\n goc: 'gocStudyAttributes',\n ichimoku: 'gocStudyAttributes',\n cmci: 'cmciStudyAttributes',\n wlpr: 'wlprStudyAttributes',\n williams: 'wlprStudyAttributes',\n maxmin: 'maxminStudyAttributes',\n rex: 'rexStudyAttributes',\n etd: 'etdStudyAttributes',\n pd: 'pdStudyAttributes',\n rv: 'rvStudyAttributes',\n pivot: 'pivotStudyAttributes',\n or: 'orStudyAttributes',\n pcr: 'pcrStudyAttributes',\n bs: 'bsStudyAttributes',\n});\n\ntype StudyParams = Record<string, PrimitiveValue | undefined>;\n\nconst TA_DEFAULTS: Readonly<Record<string, Readonly<StudyParams>>> = Object.freeze({\n smavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n emavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n wmavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n vmavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n tmavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n rsiStudyAttributes: Object.freeze({ period: 14, priceSourceClose: 'PX_LAST' }),\n macdStudyAttributes: Object.freeze({\n maPeriod1: 12,\n maPeriod2: 26,\n sigPeriod: 9,\n priceSourceClose: 'PX_LAST',\n }),\n bollStudyAttributes: Object.freeze({\n period: 20,\n upperBand: 2.0,\n lowerBand: 2.0,\n priceSourceClose: 'PX_LAST',\n }),\n dmiStudyAttributes: Object.freeze({\n period: 14,\n priceSourceHigh: 'PX_HIGH',\n priceSourceLow: 'PX_LOW',\n priceSourceClose: 'PX_LAST',\n }),\n atrStudyAttributes: Object.freeze({\n maType: 'Simple',\n period: 14,\n priceSourceHigh: 'PX_HIGH',\n priceSourceLow: 'PX_LOW',\n priceSourceClose: 'PX_LAST',\n }),\n tasStudyAttributes: Object.freeze({\n periodK: 14,\n periodD: 3,\n periodDS: 3,\n periodDSS: 3,\n priceSourceHigh: 'PX_HIGH',\n priceSourceLow: 'PX_LOW',\n priceSourceClose: 'PX_LAST',\n }),\n});\n\nconst MKTDATA_SERVICE = '//blp/mktdata';\n\n\n// ── Helpers ─────────────────────────────────────────────────────────────\n\nfunction toArrowTableFromNative(batch: NativeArrowZeroCopyBatch): Table {\n return tableFromNativeArrowBatch(batch);\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction toRequestString(value: unknown): string {\n return String(value);\n}\n\nfunction mapObjectToPairs(\n obj: OverridesMap | undefined,\n): StringPair[] | undefined {\n if (obj === undefined) {\n return undefined;\n }\n return Object.entries(obj).map(([key, value]) => ({\n key: toRequestString(key),\n value: toRequestString(value),\n }));\n}\n\ntype BdtickBooleanOption =\n | 'includeConditionCodes'\n | 'includeExchangeCodes'\n | 'includeBrokerCodes'\n | 'includeRpsCodes'\n | 'includeBicMicCodes'\n | 'includeNonPlottableEvents'\n | 'includeBloombergStandardConditionCodes';\n\nconst BDTICK_BOOLEAN_KWARGS: readonly [BdtickBooleanOption, string][] = Object.freeze([\n ['includeConditionCodes', 'includeConditionCodes'],\n ['includeExchangeCodes', 'includeExchangeCodes'],\n ['includeBrokerCodes', 'includeBrokerCodes'],\n ['includeRpsCodes', 'includeRpsCodes'],\n ['includeBicMicCodes', 'includeBicMicCodes'],\n ['includeNonPlottableEvents', 'includeNonPlottableEvents'],\n ['includeBloombergStandardConditionCodes', 'includeBloombergStandardConditionCodes'],\n]);\n\nfunction upsertStringPair(pairs: StringPair[], key: string, value: string): void {\n const existing = pairs.find((pair) => pair.key === key);\n if (existing === undefined) {\n pairs.push({ key, value });\n return;\n }\n existing.value = value;\n}\n\nfunction buildBdtickKwargs(options: BdtickOptions): StringPair[] | undefined {\n const pairs = mapObjectToPairs(options.kwargs) ?? [];\n for (const [optionName, requestName] of BDTICK_BOOLEAN_KWARGS) {\n const typedValue = options[optionName];\n if (typedValue !== undefined) {\n upsertStringPair(pairs, requestName, typedValue ? 'true' : 'false');\n }\n }\n return pairs.length > 0 ? pairs : undefined;\n}\n\nfunction toStringArray(value: string | readonly string[] | null | undefined): string[] {\n if (Array.isArray(value)) {\n return value.map((item) => toRequestString(item));\n }\n if (value === null || value === undefined) {\n return [];\n }\n return [toRequestString(value)];\n}\n\nfunction subscriptionOptionKey(option: string): string {\n return normalizeSubscriptionOption(option).split('=')[0]?.trim().toLowerCase() ?? '';\n}\n\nfunction normalizeSubscriptionOption(option: string): string {\n let clean = option.trim();\n while (clean.startsWith('&')) {\n clean = clean.slice(1).trim();\n }\n return clean;\n}\n\nfunction buildStreamSubscriptionOptions(\n service: string,\n options: StreamOptions,\n): readonly string[] | undefined {\n const rawOptions = options.options;\n const conflate = options.conflate;\n\n if (rawOptions === undefined && conflate !== true) {\n return undefined;\n }\n\n const subscriptionOptions = (rawOptions ?? [])\n .map((option) => normalizeSubscriptionOption(option))\n .filter((option) => option.length > 0);\n\n if (conflate === true) {\n if (service !== MKTDATA_SERVICE) {\n throw new BlpValidationError(\n 'conflate=true is only supported for //blp/mktdata subscriptions',\n { element: 'conflate' },\n );\n }\n if (subscriptionOptions.some((option) => subscriptionOptionKey(option) === 'interval')) {\n throw new BlpValidationError(\n 'conflate=true cannot be combined with interval options; intervalization overrides conflation',\n { element: 'conflate' },\n );\n }\n if (!subscriptionOptions.some((option) => subscriptionOptionKey(option) === 'conflate')) {\n subscriptionOptions.push('conflate');\n }\n }\n\n return subscriptionOptions.length > 0 || rawOptions !== undefined ? subscriptionOptions : undefined;\n}\n\nfunction normalizeConfigureArgs(\n configOrHost?: EngineConfig | string,\n port?: number,\n): EngineConfig | undefined {\n if (configOrHost === undefined) {\n return undefined;\n }\n if (typeof configOrHost === 'string' || port !== undefined) {\n const config: EngineConfig = {};\n if (typeof configOrHost === 'string') {\n config.host = configOrHost;\n }\n if (port !== undefined) {\n config.port = port;\n }\n return config;\n }\n if (isPlainObject(configOrHost)) {\n return { ...(configOrHost as EngineConfig) };\n }\n throw new TypeError(\n 'configure expects either a config object or host/port arguments',\n );\n}\n\nfunction normalizeRecoveryOptions(options: CdxOptions = {}): BdpOptions {\n const normalized: CdxOptions = { ...options };\n const recoveryRate = normalized.recoveryRate ?? normalized.recovery_rate;\n delete normalized.recoveryRate;\n delete normalized.recovery_rate;\n if (recoveryRate !== undefined) {\n normalized.overrides = {\n ...(normalized.overrides ?? {}),\n CDS_RR: toRequestString(recoveryRate),\n };\n }\n return normalized;\n}\n\nfunction fullDayRange(dt: DateTimeLike): TimeRange {\n const formatted = formatDate(dt);\n if (formatted === undefined) {\n throw new TypeError('dt must be a non-empty date-like value');\n }\n const day = `${formatted.slice(0, 4)}-${formatted.slice(4, 6)}-${formatted.slice(6, 8)}`;\n return {\n start: `${day}T00:00:00`,\n end: `${day}T23:59:59`,\n };\n}\n\nfunction normalizeDate(value: DateLike | undefined): string | undefined {\n return formatDate(value);\n}\n\nfunction getStudyAttrName(study: string): string {\n const normalized = study.toLowerCase().replace(/-/g, '_').replace(/ /g, '_');\n const mapped = TA_STUDIES[normalized];\n if (mapped !== undefined) {\n return mapped;\n }\n if (normalized.endsWith('studyattributes')) {\n return normalized;\n }\n return `${normalized}StudyAttributes`;\n}\n\ninterface RawStudy {\n studyType?: string;\n study?: string;\n calcInterval?: string;\n interval?: number | string;\n length?: number;\n period?: number;\n [key: string]: PrimitiveValue | undefined;\n}\n\nfunction buildTaRequest(\n ticker: string,\n study: string | RawStudy,\n options: BtaOptions = {},\n): StringPair[] {\n const rawStudy: RawStudy =\n typeof study === 'string' ? { studyType: study } : { ...study };\n const studyType = rawStudy.studyType ?? rawStudy.study ?? (typeof study === 'string' ? study : '');\n const attrName = getStudyAttrName(toRequestString(studyType));\n\n const kwargs: Record<string, PrimitiveValue> = { ...(options.kwargs ?? {}) };\n const startDate = normalizeDate(\n stringOrUndef(kwargs.startDate) ??\n stringOrUndef(kwargs.start_date) ??\n options.startDate ??\n options.start_date,\n );\n const endDate = normalizeDate(\n stringOrUndef(kwargs.endDate) ??\n stringOrUndef(kwargs.end_date) ??\n options.endDate ??\n options.end_date,\n );\n const periodicity = toRequestString(stringOrUndef(kwargs.periodicitySelection) ??\n stringOrUndef(kwargs.periodicity) ??\n rawStudy.calcInterval ??\n options.periodicity ??\n 'DAILY').toUpperCase();\n const interval =\n kwargs.interval ?? rawStudy.interval ?? options.interval;\n\n delete kwargs.startDate;\n delete kwargs.start_date;\n delete kwargs.endDate;\n delete kwargs.end_date;\n delete kwargs.periodicitySelection;\n delete kwargs.periodicity;\n delete rawStudy.studyType;\n delete rawStudy.study;\n delete rawStudy.calcInterval;\n\n if (rawStudy.length !== undefined && rawStudy.period === undefined) {\n rawStudy.period = rawStudy.length;\n }\n delete rawStudy.length;\n\n const params: StudyParams = {\n ...(TA_DEFAULTS[attrName] ?? {}),\n ...(options.studyParams ?? {}),\n ...(rawStudy as StudyParams),\n };\n\n if (params.length !== undefined && params.period === undefined) {\n params.period = params.length;\n }\n delete params.length;\n delete params.calcInterval;\n\n const elements: StringPair[] = [\n { key: 'priceSource.securityName', value: toRequestString(ticker) },\n ];\n\n if (periodicity === 'INTRADAY') {\n const prefix = 'priceSource.dataRange.intraday';\n if (startDate !== undefined) {\n elements.push({ key: `${prefix}.startDate`, value: startDate });\n }\n if (endDate !== undefined) {\n elements.push({ key: `${prefix}.endDate`, value: endDate });\n }\n elements.push({ key: `${prefix}.eventType`, value: 'TRADE' });\n if (interval !== undefined) {\n elements.push({ key: `${prefix}.interval`, value: toRequestString(interval) });\n }\n } else {\n const prefix = 'priceSource.dataRange.historical';\n if (startDate !== undefined) {\n elements.push({ key: `${prefix}.startDate`, value: startDate });\n }\n if (endDate !== undefined) {\n elements.push({ key: `${prefix}.endDate`, value: endDate });\n }\n elements.push({ key: `${prefix}.periodicitySelection`, value: periodicity });\n }\n\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) {\n continue;\n }\n elements.push({\n key: `studyAttributes.${attrName}.${key}`,\n value: toRequestString(value),\n });\n }\n\n for (const [key, value] of Object.entries(kwargs)) {\n elements.push({ key: toRequestString(key), value: toRequestString(value) });\n }\n\n return elements;\n}\n\nfunction stringOrUndef(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined;\n}\n\nlet polarsModule: PolarsModule | undefined;\nlet polarsLoadError: Error | undefined;\n\nfunction cachePolarsLoadError(err: unknown): Error {\n const error = new Error(\n 'nodejs-polars is required for Polars backend. Install: npm install nodejs-polars',\n );\n Object.defineProperty(error, 'cause', { value: err, configurable: true });\n polarsLoadError = error;\n return error;\n}\n\nfunction loadPolars(): PolarsModule {\n if (polarsModule !== undefined) {\n return polarsModule;\n }\n if (polarsLoadError !== undefined) {\n throw polarsLoadError;\n }\n try {\n polarsModule = nodeRequire('nodejs-polars') as PolarsModule;\n return polarsModule;\n } catch (err) {\n throw cachePolarsLoadError(err);\n }\n}\n\nfunction normalizeBackend(backend: BackendKind | undefined): BackendKind {\n const selected: unknown = backend ?? Backend.ARROW;\n if (selected === Backend.ARROW || selected === Backend.JSON || selected === Backend.POLARS) {\n return selected;\n }\n throw new TypeError(\n `Unsupported @xbbg/core backend \"${toRequestString(selected)}\". Expected one of: ${Object.values(\n Backend,\n ).join(', ')}`,\n );\n}\n\nfunction ipcToBackend(buffer: Buffer, backend: BackendKind | undefined): unknown {\n const selected = normalizeBackend(backend);\n if (selected === Backend.JSON) {\n return Array.from(tableFromIPC(buffer));\n }\n if (selected === Backend.POLARS) {\n return loadPolars().readIPC(buffer);\n }\n return tableFromIPC(buffer);\n}\n\n// ── Configured engine state ─────────────────────────────────────────────\n\nlet configuredEngineConfig: EngineConfig | undefined;\nlet configuredEnginePromise: Promise<Engine> | undefined;\n\nfunction clearConfiguredEngine(): void {\n const existing = configuredEnginePromise;\n configuredEnginePromise = undefined;\n if (existing !== undefined) {\n existing\n .then((engine) => {\n engine.signalShutdown();\n })\n .catch(() => {\n /* ignore shutdown errors */\n });\n }\n}\n\nasync function getConfiguredEngine(): Promise<Engine> {\n if (configuredEnginePromise === undefined) {\n const pending = connect(configuredEngineConfig);\n pending.catch(() => {\n if (configuredEnginePromise === pending) {\n configuredEnginePromise = undefined;\n }\n });\n configuredEnginePromise = pending;\n }\n return await configuredEnginePromise;\n}\n\n// ── Subscription class ──────────────────────────────────────────────────\n\nexport type TickValue = null | boolean | number | bigint | string | Date;\n\nexport class FieldHandle {\n public constructor(public readonly name: string) {}\n}\n\nexport class Tick {\n private readonly _positions: Map<string, number>;\n\n public constructor(private readonly _update: NativeSubscriptionUpdate) {\n this._positions = new Map(_update.fields.map((field, index) => [field, index]));\n }\n\n public get topic(): string {\n return this._update.topic;\n }\n\n public get timestampUs(): number {\n return this._update.timestampUs;\n }\n\n public get layoutVersion(): number {\n return this._update.layoutVersion;\n }\n\n public get(field: string | FieldHandle): TickValue {\n const name = typeof field === 'string' ? field : field.name;\n const index = this._positions.get(name);\n if (index === undefined) return null;\n const value = this._update.values[index] ?? null;\n const kind = this._update.valueKinds[index] ?? 'unknown';\n if (value === null) return null;\n if (kind === 'i64' || kind === 'time64_us' || kind === 'timestamp_us') {\n try {\n return BigInt(String(value));\n } catch {\n return null;\n }\n }\n if (kind === 'date32' && typeof value === 'number') {\n return new Date(Date.UTC(1970, 0, 1 + value));\n }\n return value;\n }\n\n public f64(field: string | FieldHandle): number | null {\n const value = this.get(field);\n if (value === null) return null;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n }\n\n public i64(field: string | FieldHandle): bigint | null {\n const value = this.get(field);\n if (value === null) return null;\n try {\n return BigInt(String(value));\n } catch {\n return null;\n }\n }\n\n public str(field: string | FieldHandle): string | null {\n const value = this.get(field);\n return value === null ? null : String(value);\n }\n\n public toObject(): Record<string, unknown> {\n const out: Record<string, unknown> = { topic: this.topic, timestampUs: this.timestampUs };\n for (const field of this._update.fields) {\n out[field] = this.get(field);\n }\n return out;\n }\n}\n\nexport class ArrowSubscription implements AsyncIterator<Table>, AsyncIterable<Table> {\n public constructor(private readonly _inner: NativeSubscription) {}\n\n public async next(): Promise<IteratorResult<Table>> {\n try {\n const batch = await this._inner.nextArrow();\n if (batch === null) {\n return { done: true, value: undefined };\n }\n return { done: false, value: toArrowTableFromNative(batch) };\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async unsubscribe(drain = false): Promise<Table[]> {\n try {\n const drained = await this._inner.unsubscribeArrow(drain);\n return drained?.map(toArrowTableFromNative) ?? [];\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public [Symbol.asyncIterator](): this {\n return this;\n }\n}\n\nexport class Subscription implements AsyncIterator<Tick>, AsyncIterable<Tick> {\n private readonly _inner: NativeSubscription;\n\n public constructor(inner: NativeSubscription) {\n this._inner = inner;\n }\n\n public async next(): Promise<IteratorResult<Tick>> {\n try {\n const update = await this._inner.nextUpdate();\n if (update === null) {\n return { done: true, value: undefined };\n }\n return { done: false, value: new Tick(update) };\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async add(tickers: readonly string[]): Promise<void> {\n try {\n await this._inner.add(tickers);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async remove(tickers: readonly string[]): Promise<void> {\n try {\n await this._inner.remove(tickers);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async unsubscribe(drain = false): Promise<Tick[]> {\n try {\n const drained = await this._inner.unsubscribe(drain);\n if (drained === null) {\n return [];\n }\n return drained.map((update) => new Tick(update));\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public field(name: string): FieldHandle {\n return new FieldHandle(name);\n }\n\n public arrow(): ArrowSubscription {\n return new ArrowSubscription(this._inner);\n }\n\n public get tickers(): string[] {\n return this._inner.tickers;\n }\n\n public get fields(): string[] {\n return this._inner.fields;\n }\n\n public get isActive(): boolean {\n return this._inner.isActive;\n }\n\n public get stats(): SubscriptionStats {\n return this._inner.stats;\n }\n\n public [Symbol.asyncIterator](): this {\n return this;\n }\n}\n\n// ── Engine class ────────────────────────────────────────────────────────\n\nexport class Engine {\n // Set via constructor or via `withConfig` (which instantiates via Object.create).\n private _inner!: NativeEngine;\n\n public constructor(host = 'localhost', port = 8194) {\n try {\n this._inner = new native.JsEngine(host, port);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public static withConfig(config: EngineConfig = {}): Engine {\n const engine: Engine = Object.create(Engine.prototype) as Engine;\n try {\n engine._inner = native.JsEngine.withConfig(config);\n } catch (err) {\n throw wrapError(err);\n }\n return engine;\n }\n\n public async request(params: RequestInput): Promise<unknown> {\n const backend = normalizeBackend(params.backend);\n const { backend: _discarded, ...nativeParams } = params;\n try {\n const buffer = await this._inner.request(nativeParams);\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async requestRaw(params: RequestInput): Promise<Buffer> {\n try {\n return await this._inner.request(params);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async bdp(\n tickers: readonly string[],\n fields: readonly string[],\n options: BdpOptions = {},\n ): Promise<unknown> {\n return await this.request({\n service: '//blp/refdata',\n operation: 'ReferenceDataRequest',\n securities: tickers,\n fields,\n overrides: mapObjectToPairs(options.overrides),\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n backend: options.backend,\n includeSecurityErrors: Boolean(options.includeSecurityErrors),\n validateFields: options.validateFields,\n extractor: 'refdata',\n });\n }\n\n public async bds(\n tickers: readonly string[],\n fields: readonly string[],\n options: BdpOptions = {},\n ): Promise<unknown> {\n return await this.request({\n service: '//blp/refdata',\n operation: 'ReferenceDataRequest',\n securities: tickers,\n fields,\n overrides: mapObjectToPairs(options.overrides),\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n backend: options.backend,\n validateFields: options.validateFields,\n extractor: 'bulk',\n });\n }\n\n public async bdh(\n tickers: readonly string[],\n fields: readonly string[],\n options: BdhOptions = {},\n ): Promise<unknown> {\n return await this.request({\n service: '//blp/refdata',\n operation: 'HistoricalDataRequest',\n securities: tickers,\n fields,\n startDate: formatDate(options.start),\n endDate: formatDate(options.end),\n overrides: mapObjectToPairs(options.overrides),\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n backend: options.backend,\n validateFields: options.validateFields,\n extractor: 'histdata',\n });\n }\n\n public async bdib(ticker: string, options: BdibOptions = {}): Promise<unknown> {\n return await this.request({\n service: '//blp/refdata',\n operation: 'IntradayBarRequest',\n security: ticker,\n eventType: options.eventType ?? 'TRADE',\n interval: options.interval ?? 1,\n startDatetime: formatDateTime(options.start),\n endDatetime: formatDateTime(options.end),\n requestTz: options.requestTz,\n outputTz: options.outputTz,\n kwargs: mapObjectToPairs(options.kwargs),\n backend: options.backend,\n extractor: 'intraday_bar',\n });\n }\n\n public async bdtick(ticker: string, options: BdtickOptions = {}): Promise<unknown> {\n return await this.request({\n service: '//blp/refdata',\n operation: 'IntradayTickRequest',\n security: ticker,\n eventTypes: options.eventTypes ?? ['TRADE'],\n startDatetime: formatDateTime(options.start),\n endDatetime: formatDateTime(options.end),\n requestTz: options.requestTz,\n outputTz: options.outputTz,\n kwargs: buildBdtickKwargs(options),\n backend: options.backend,\n extractor: 'intraday_tick',\n });\n }\n\n public async bql(query: string, options: BqlOptions = {}): Promise<unknown> {\n return await this.request({\n service: '//blp/bqlsvc',\n operation: 'sendQuery',\n elements: [{ key: 'expression', value: toRequestString(query) }],\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n extractor: 'bql',\n });\n }\n\n public async beqs(screen: string, options: BeqsOptions = {}): Promise<unknown> {\n const elements: StringPair[] = [\n { key: 'screenName', value: toRequestString(screen) },\n { key: 'screenType', value: toRequestString(options.screenType ?? 'PRIVATE') },\n { key: 'Group', value: toRequestString(options.group ?? 'General') },\n ];\n if (options.asof !== undefined) {\n const asofFormatted = formatDate(options.asof);\n if (asofFormatted !== undefined) {\n elements.push({ key: 'asOfDate', value: asofFormatted });\n }\n }\n const overrides: OverridesMap = { ...(options.overrides ?? {}) };\n return await this.request({\n service: '//blp/refdata',\n operation: 'BeqsRequest',\n elements,\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n overrides: mapObjectToPairs(overrides),\n format: options.format,\n extractor: 'generic',\n });\n }\n\n public async bsrch(searchSpec: string, options: BsrchOptions = {}): Promise<unknown> {\n const elements: OverridesMap = {\n Domain: toRequestString(searchSpec),\n ...(options.overrides ?? {}),\n ...(options.kwargs ?? {}),\n };\n return await this.request({\n service: '//blp/exrsvc',\n operation: 'ExcelGetGridRequest',\n backend: options.backend,\n elements: mapObjectToPairs(elements),\n format: options.format,\n extractor: 'bsrch',\n });\n }\n\n public async bta(\n ticker: string,\n study: string | RawStudy,\n options: BtaOptions = {},\n ): Promise<unknown> {\n return await this.request({\n service: '//blp/tasvc',\n operation: 'studyRequest',\n elements: buildTaRequest(ticker, study, options),\n backend: options.backend,\n format: options.format,\n extractor: 'generic',\n });\n }\n\n public async bflds(options: BfldsOptions = {}): Promise<unknown> {\n if (options.searchSpec !== undefined) {\n return await this.request({\n service: '//blp/apiflds',\n operation: 'FieldSearchRequest',\n searchSpec: toRequestString(options.searchSpec),\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n });\n }\n const fields: string[] = Array.isArray(options.fields)\n ? (options.fields as string[])\n : typeof options.fields === 'string'\n ? [options.fields]\n : [];\n return await this.request({\n service: '//blp/apiflds',\n operation: 'FieldInfoRequest',\n fieldIds: fields,\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n });\n }\n\n public async blkp(query: string, options: BlkpOptions = {}): Promise<unknown> {\n return await this.request({\n service: '//blp/instruments',\n operation: 'instrumentListRequest',\n elements: [{ key: 'query', value: toRequestString(query) }],\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n });\n }\n\n public async bport(\n portfolio: string,\n fields: string | readonly string[],\n options: RequestOptions = {},\n ): Promise<unknown> {\n return await this.request({\n service: '//blp/refdata',\n operation: 'PortfolioDataRequest',\n security: toRequestString(portfolio),\n fields: Array.isArray(fields) ? fields : [toRequestString(fields)],\n backend: options.backend,\n overrides: mapObjectToPairs(options.overrides),\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n });\n }\n\n public async bcurves(ticker: string, options: RequestOptions = {}): Promise<unknown> {\n return await this.request({\n service: '//blp/instruments',\n operation: 'curveListRequest',\n elements: [{ key: 'query', value: toRequestString(ticker) }],\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n });\n }\n\n public async bgovts(ticker: string, options: RequestOptions = {}): Promise<unknown> {\n return await this.request({\n service: '//blp/instruments',\n operation: 'govtListRequest',\n elements: [{ key: 'query', value: toRequestString(ticker) }],\n backend: options.backend,\n kwargs: mapObjectToPairs(options.kwargs),\n format: options.format,\n });\n }\n\n public async resolveFieldTypes(\n fields: readonly string[],\n overrides?: OverridesMap ,\n defaultType = 'string',\n ): Promise<Record<string, string>> {\n const items = await this._inner.resolveFieldTypes(\n fields,\n mapObjectToPairs(overrides),\n defaultType,\n );\n return Object.fromEntries(items.map((item) => [item.key, item.value]));\n }\n\n public getFieldInfo(field: string): FieldInfo | null {\n return this._inner.getFieldInfo(field);\n }\n\n public clearFieldCache(): void {\n this._inner.clearFieldCache();\n }\n\n public saveFieldCache(): void {\n this._inner.saveFieldCache();\n }\n\n public async validateFields(fields: readonly string[]): Promise<string[]> {\n return await this._inner.validateFields(fields);\n }\n\n public isFieldValidationEnabled(): boolean {\n return this._inner.isFieldValidationEnabled();\n }\n\n public async getSchema(service: string): Promise<unknown> {\n const json = await this._inner.getSchema(service);\n return JSON.parse(json) as unknown;\n }\n\n public async getOperation(service: string, operation: string): Promise<unknown> {\n const json = await this._inner.getOperation(service, operation);\n return JSON.parse(json) as unknown;\n }\n\n public async listOperations(service: string): Promise<string[]> {\n return await this._inner.listOperations(service);\n }\n\n public getCachedSchema(service: string): unknown {\n const json = this._inner.getCachedSchema(service);\n return json === null ? null : (JSON.parse(json) as unknown);\n }\n\n public invalidateSchema(service: string): void {\n this._inner.invalidateSchema(service);\n }\n\n public clearSchemaCache(): void {\n this._inner.clearSchemaCache();\n }\n\n public listCachedSchemas(): string[] {\n return this._inner.listCachedSchemas();\n }\n\n public async getEnumValues(\n service: string,\n operation: string,\n element: string,\n ): Promise<string[] | null> {\n return await this._inner.getEnumValues(service, operation, element);\n }\n\n public async listValidElements(\n service: string,\n operation: string,\n ): Promise<string[] | null> {\n return await this._inner.listValidElements(service, operation);\n }\n\n public async subscribe(\n tickers: readonly string[],\n fields: readonly string[],\n options: StreamOptions = {},\n ): Promise<Subscription> {\n try {\n const subscriptionOptions = buildStreamSubscriptionOptions(MKTDATA_SERVICE, options);\n const useOptions =\n subscriptionOptions !== undefined ||\n options.flushThreshold !== undefined ||\n options.overflowPolicy !== undefined ||\n options.streamCapacity !== undefined;\n const stream = useOptions\n ? await this._inner.subscribeWithOptions(\n MKTDATA_SERVICE,\n tickers,\n fields,\n subscriptionOptions,\n options.flushThreshold,\n options.overflowPolicy,\n options.streamCapacity,\n options.allFields,\n )\n : await this._inner.subscribe(tickers, fields, options.allFields);\n return new Subscription(stream);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async subscribeWithOptions(\n service: string,\n tickers: readonly string[],\n fields: readonly string[],\n options?: readonly string[],\n flushThreshold?: number,\n overflowPolicy?: string,\n streamCapacity?: number,\n allFields?: boolean,\n ): Promise<Subscription> {\n try {\n const stream = await this._inner.subscribeWithOptions(\n service,\n tickers,\n fields,\n options,\n flushThreshold,\n overflowPolicy,\n streamCapacity,\n allFields,\n );\n return new Subscription(stream);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public signalShutdown(): void {\n this._inner.signalShutdown();\n }\n\n public isAvailable(): boolean {\n return this._inner.isAvailable();\n }\n\n public async stream(\n tickers: readonly string[],\n fields: readonly string[],\n options: StreamOptions = {},\n ): Promise<Subscription> {\n return await this.subscribeWithOptions(\n MKTDATA_SERVICE,\n tickers,\n fields,\n buildStreamSubscriptionOptions(MKTDATA_SERVICE, options),\n options.flushThreshold,\n options.overflowPolicy,\n options.streamCapacity,\n options.allFields,\n );\n }\n\n public async vwap(\n tickers: readonly string[],\n fields: readonly string[],\n options: StreamOptions = {},\n ): Promise<Subscription> {\n return await this.subscribeWithOptions(\n '//blp/mktvwap',\n tickers,\n fields,\n buildStreamSubscriptionOptions('//blp/mktvwap', options),\n options.flushThreshold,\n options.overflowPolicy,\n options.streamCapacity,\n options.allFields,\n );\n }\n\n public async mktbar(ticker: string, options: StreamOptions = {}): Promise<Subscription> {\n return await this.subscribeWithOptions(\n '//blp/mktbar',\n [ticker],\n options.fields ?? [],\n buildStreamSubscriptionOptions('//blp/mktbar', options),\n options.flushThreshold,\n options.overflowPolicy,\n options.streamCapacity,\n options.allFields,\n );\n }\n\n public async depth(ticker: string, options: StreamOptions = {}): Promise<Subscription> {\n return await this.subscribeWithOptions(\n '//blp/mktdepthdata',\n [ticker],\n options.fields ?? [],\n buildStreamSubscriptionOptions('//blp/mktdepthdata', options),\n options.flushThreshold,\n options.overflowPolicy,\n options.streamCapacity,\n options.allFields,\n );\n }\n\n public async chains(ticker: string, options: StreamOptions = {}): Promise<Subscription> {\n return await this.subscribeWithOptions(\n '//blp/mktlist',\n [ticker],\n options.fields ?? [],\n buildStreamSubscriptionOptions('//blp/mktlist', options),\n options.flushThreshold,\n options.overflowPolicy,\n options.streamCapacity,\n options.allFields,\n );\n }\n\n public async bops(service: string): Promise<string[]> {\n return await this._inner.listOperations(service);\n }\n\n public async bschema(service: string, operation?: string): Promise<unknown> {\n if (operation !== undefined) {\n const json = await this._inner.getOperation(service, operation);\n return JSON.parse(json) as unknown;\n }\n const json = await this._inner.getSchema(service);\n return JSON.parse(json) as unknown;\n }\n\n public async fieldInfo(\n fields: string | readonly string[],\n options: BfldsOptions = {},\n ): Promise<unknown> {\n return await this.bflds({\n fields: Array.isArray(fields) ? (fields as string[]) : [toRequestString(fields)],\n ...options,\n });\n }\n\n public async fieldSearch(\n searchSpec: string,\n options: BfldsOptions = {},\n ): Promise<unknown> {\n return await this.bflds({ searchSpec: toRequestString(searchSpec), ...options });\n }\n\n // ── Recipes ─────────────────────────────────────────────────────────\n\n public async bqr(ticker: string, options: BqrOptions = {}): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeBqr(\n toRequestString(ticker),\n formatDateTime(options.startDatetime),\n formatDateTime(options.endDatetime),\n options.eventTypes ?? null,\n options.includeBrokerCodes !== false,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async yas(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: YasOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeYas(\n toStringArray(tickers),\n toStringArray(fields),\n formatDate(options.settleDt),\n options.yieldType ?? undefined,\n options.spread ?? undefined,\n options.yieldVal ?? undefined,\n options.price ?? undefined,\n options.benchmark ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async preferreds(\n equityTicker: string,\n options: PreferredsOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipePreferreds(\n toRequestString(equityTicker),\n options.fields !== undefined ? toStringArray(options.fields) : null,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async corporateBonds(\n ticker: string,\n options: CorporateBondsOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeCorporateBonds(\n toRequestString(ticker),\n options.ccy ?? undefined,\n options.fields !== undefined ? toStringArray(options.fields) : null,\n options.activeOnly !== false,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async futTicker(\n genTicker: string,\n dt: DateLike,\n options: FuturesResolveOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeFutTicker(\n toRequestString(genTicker),\n formatDate(dt) ?? '',\n options.freq ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async activeFutures(\n genTicker: string,\n dt: DateLike,\n options: FuturesResolveOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeActiveFutures(\n toRequestString(genTicker),\n formatDate(dt) ?? '',\n options.freq ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async cdxTicker(\n genTicker: string,\n dt: DateLike,\n options: RecipeBackendOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeCdxTicker(\n toRequestString(genTicker),\n formatDate(dt) ?? '',\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async activeCdx(\n genTicker: string,\n dt: DateLike,\n options: ActiveCdxOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeActiveCdx(\n toRequestString(genTicker),\n formatDate(dt) ?? '',\n options.lookbackDays ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async dividend(\n tickers: string | readonly string[],\n startDate: DateLike,\n endDate: DateLike,\n options: DividendOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeDividend(\n toStringArray(tickers),\n formatDate(startDate) ?? '',\n formatDate(endDate) ?? '',\n options.dvdType ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async turnover(\n tickers: string | readonly string[],\n startDate: DateLike,\n endDate: DateLike,\n options: TurnoverOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeTurnover(\n toStringArray(tickers),\n formatDate(startDate) ?? '',\n formatDate(endDate) ?? '',\n options.ccy ?? undefined,\n options.factor ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async etfHoldings(\n etfTicker: string,\n options: EtfHoldingsOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeEtfHoldings(\n toRequestString(etfTicker),\n options.fields !== undefined ? toStringArray(options.fields) : null,\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n\n public async currencyConversion(\n ticker: string,\n targetCcy: string,\n startDate: DateLike,\n endDate: DateLike,\n options: RecipeBackendOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this._inner.recipeCurrencyConversion(\n toRequestString(ticker),\n toRequestString(targetCcy),\n formatDate(startDate) ?? '',\n formatDate(endDate) ?? '',\n );\n return ipcToBackend(buffer, backend);\n } catch (err) {\n throw wrapError(err);\n }\n }\n}\n\n// ── Top-level wrappers ──────────────────────────────────────────────────\n\nexport async function connect(config?: EngineConfig): Promise<Engine> {\n return await Promise.resolve(\n config === undefined ? new Engine() : Engine.withConfig(config),\n );\n}\n\nexport function configure(config?: EngineConfig): EngineConfig | undefined;\nexport function configure(host?: string, port?: number): EngineConfig | undefined;\nexport function configure(\n configOrHost?: EngineConfig | string,\n port?: number,\n): EngineConfig | undefined {\n configuredEngineConfig = normalizeConfigureArgs(configOrHost, port);\n clearConfiguredEngine();\n return configuredEngineConfig;\n}\n\nexport async function abdp(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: BdpOptions = {},\n): Promise<unknown> {\n const engine = await getConfiguredEngine();\n return await engine.bdp(toStringArray(tickers), toStringArray(fields), options);\n}\n\nexport async function bdp(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: BdpOptions = {},\n): Promise<unknown> {\n return await abdp(tickers, fields, options);\n}\n\nexport async function abdh(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n start?: DateLike | BdhOptions,\n end?: DateLike,\n options: BdhOptions = {},\n): Promise<unknown> {\n const engine = await getConfiguredEngine();\n // ``BdhOptions`` is a plain object literal; Dates / Luxon DateTimes are\n // typed objects so they fall through to the date-typed branch.\n if (isPlainObject(start) && !(start instanceof Date) && !hasToJSDate(start) && end === undefined) {\n return await engine.bdh(\n toStringArray(tickers),\n toStringArray(fields),\n start,\n );\n }\n return await engine.bdh(toStringArray(tickers), toStringArray(fields), {\n ...options,\n start: start as DateLike | undefined,\n end,\n });\n}\n\nexport async function bdh(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: BdhOptions = {},\n): Promise<unknown> {\n return await abdh(tickers, fields, options);\n}\n\nexport async function abds(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n overrides?: OverridesMap ,\n options: BdpOptions = {},\n): Promise<unknown> {\n const engine = await getConfiguredEngine();\n const normalizedOptions: BdpOptions = isPlainObject(overrides)\n ? { ...options, overrides: { ...(options.overrides ?? {}), ...overrides } }\n : options;\n return await engine.bds(\n toStringArray(tickers),\n toStringArray(fields),\n normalizedOptions,\n );\n}\n\nexport async function bds(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: BdpOptions = {},\n): Promise<unknown> {\n return await abds(tickers, fields, undefined, options);\n}\n\nexport async function abdib(\n ticker: string,\n dt?: DateTimeLike | BdibOptions,\n interval: number | BdibOptions = 1,\n options: BdibOptions = {},\n): Promise<unknown> {\n const engine = await getConfiguredEngine();\n // Distinguish a BdibOptions plain object from a Date / Luxon DateTime, both\n // of which would also pass an ``isPlainObject`` check on bare typeof checks.\n const dtIsOptions =\n isPlainObject(dt) && !(dt instanceof Date) && !hasToJSDate(dt);\n if (dtIsOptions && interval === 1 && Object.keys(options).length === 0) {\n return await engine.bdib(toRequestString(ticker), dt);\n }\n const normalizedOptions: BdibOptions = isPlainObject(interval)\n ? { ...(interval as BdibOptions) }\n : { ...options, interval: typeof interval === 'number' ? interval : 1 };\n if (\n normalizedOptions.start === undefined &&\n normalizedOptions.end === undefined\n ) {\n if (dt === undefined) {\n throw new TypeError('abdib requires dt or explicit start/end options');\n }\n const range = fullDayRange(dt as DateTimeLike);\n normalizedOptions.start = range.start;\n normalizedOptions.end = range.end;\n }\n return await engine.bdib(toRequestString(ticker), normalizedOptions);\n}\n\nexport async function bdib(ticker: string, options: BdibOptions = {}): Promise<unknown> {\n return await abdib(ticker, options);\n}\n\nexport async function abdtick(\n ticker: string,\n start: DateTimeLike | null | undefined,\n end: DateTimeLike | null | undefined,\n options: BdtickOptions = {},\n): Promise<unknown> {\n if (start === undefined || start === null || end === undefined || end === null) {\n throw new TypeError('abdtick requires both start and end datetimes');\n }\n const engine = await getConfiguredEngine();\n return await engine.bdtick(toRequestString(ticker), { ...options, start, end });\n}\n\nexport async function bdtick(ticker: string, options: BdtickOptions = {}): Promise<unknown> {\n const engine = await getConfiguredEngine();\n return await engine.bdtick(toRequestString(ticker), options);\n}\n\nexport async function asubscribe(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: StreamOptions = {},\n): Promise<Subscription> {\n const engine = await getConfiguredEngine();\n return await engine.subscribe(toStringArray(tickers), toStringArray(fields), options);\n}\n\nexport async function subscribe(\n tickers: string | readonly string[],\n fields: string | readonly string[],\n options: StreamOptions = {},\n): Promise<Subscription> {\n return await asubscribe(tickers, fields, options);\n}\n\nasync function acdxInfo(ticker: string, options: BdpOptions = {}): Promise<unknown> {\n const engine = await getConfiguredEngine();\n return await engine.bdp([toRequestString(ticker)], [...CDX_INFO_FIELDS], options);\n}\n\nasync function acdxPricing(ticker: string, options: CdxOptions = {}): Promise<unknown> {\n const engine = await getConfiguredEngine();\n return await engine.bdp(\n [toRequestString(ticker)],\n [...CDX_PRICING_FIELDS],\n normalizeRecoveryOptions(options),\n );\n}\n\nasync function acdxRisk(ticker: string, options: CdxOptions = {}): Promise<unknown> {\n const engine = await getConfiguredEngine();\n return await engine.bdp(\n [toRequestString(ticker)],\n [...CDX_RISK_FIELDS],\n normalizeRecoveryOptions(options),\n );\n}\n\nexport const blp = Object.freeze({\n bdp,\n bdh,\n bds,\n bdib,\n bdtick,\n subscribe,\n abdp,\n abdh,\n abds,\n abdib,\n abdtick,\n asubscribe,\n});\n\nexport const ext = Object.freeze({\n cdx: Object.freeze({\n acdx_info: acdxInfo,\n acdx_pricing: acdxPricing,\n acdx_risk: acdxRisk,\n }),\n\n parseDate: native.extParseDate,\n fmtDate: native.extFmtDate,\n\n pivotToWide: native.extPivotToWide,\n isLongFormat: native.extIsLongFormat,\n\n parseTicker: native.extParseTicker,\n isSpecificContract: native.extIsSpecificContract,\n buildFuturesTicker: native.extBuildFuturesTicker,\n normalizeTickers: native.extNormalizeTickers,\n filterEquityTickers: native.extFilterEquityTickers,\n\n generateFuturesCandidates: native.extGenerateFuturesCandidates,\n validateGenericTicker: native.extValidateGenericTicker,\n contractIndex: native.extContractIndex,\n filterCandidatesByCycle: native.extFilterCandidatesByCycle,\n filterValidContracts: native.extFilterValidContracts,\n\n parseCdxTicker: native.extParseCdxTicker,\n previousCdxSeries: native.extPreviousCdxSeries,\n cdxGenToSpecific: native.extCdxGenToSpecific,\n\n buildFxPair: native.extBuildFxPair,\n sameCurrency: native.extSameCurrency,\n currenciesNeedingConversion: native.extCurrenciesNeedingConversion,\n\n renameDividendColumns: native.extRenameDividendColumns,\n renameEtfColumns: native.extRenameEtfColumns,\n\n getMonthCode: native.extGetMonthCode,\n getMonthName: native.extGetMonthName,\n getFuturesMonths: native.extGetFuturesMonths,\n getDvdType: native.extGetDvdType,\n getDvdTypes: native.extGetDvdTypes,\n getDvdCols: native.extGetDvdCols,\n getEtfCols: native.extGetEtfCols,\n\n buildYasOverrides: native.extBuildYasOverrides,\n\n buildEarningHeaderRename: native.extBuildEarningHeaderRename,\n calculateLevelPercentages: native.extCalculateLevelPercentages,\n\n buildPreferredsQuery: native.extBuildPreferredsQuery,\n buildCorporateBondsQuery: native.extBuildCorporateBondsQuery,\n buildEtfHoldingsQuery: native.extBuildEtfHoldingsQuery,\n\n defaultTurnoverDates: native.extDefaultTurnoverDates,\n defaultBqrDatetimes: native.extDefaultBqrDatetimes,\n\n deriveSessions: native.extDeriveSessions,\n getMarketRule: native.extGetMarketRule,\n inferTimezone: native.extInferTimezone,\n setExchangeOverride: native.extSetExchangeOverride,\n getExchangeOverride: native.extGetExchangeOverride,\n clearExchangeOverride: native.extClearExchangeOverride,\n listExchangeOverrides: native.extListExchangeOverrides,\n sessionTimesToUtc: native.extSessionTimesToUtc,\n});\n\nexport function version(): string {\n return packageJson.version;\n}\n\nexport const setLogLevel = native.setLogLevel;\nexport const getLogLevel = native.getLogLevel;\n\n// Issue #317: native datetime/date acceptance helpers, re-exported.\nexport { formatDate, formatDateTime } from './dates';\n\nexport {\n BlpError,\n BlpSessionError,\n BlpRequestError,\n BlpValidationError,\n BlpTimeoutError,\n BlpInternalError,\n wrapError,\n};\n\nexport type {\n ActiveCdxOptions,\n AuthConfig,\n BackendKind,\n BdhOptions,\n BdibOptions,\n BdpOptions,\n BdtickOptions,\n BeqsOptions,\n BfldsOptions,\n BlkpOptions,\n BqlOptions,\n BqrOptions,\n BsrchOptions,\n BtaOptions,\n CdxOptions,\n CdxTickerInfo,\n CorporateBondsOptions,\n DateLike,\n DateTimeLike,\n DividendOptions,\n EngineConfig,\n EtfHoldingsOptions,\n ExchangeInfoResult,\n ExchangeOverrideInput,\n FieldInfo,\n FormatKind,\n FuturesCandidate,\n FuturesResolveOptions,\n FxPairInfo,\n MarketRule,\n OverridesMap,\n PreferredsOptions,\n PrimitiveValue,\n RecipeBackendOptions,\n RequestInput,\n RequestOptions,\n ServerAddress,\n SessionWindowsInfo,\n Socks5Config,\n StreamOptions,\n StringPair,\n SubscriptionStats,\n TickerParts,\n TimeRange,\n TlsConfig,\n TurnoverOptions,\n YasOptions,\n};\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xbbg/core",
3
- "version": "1.1.3",
4
- "description": "Bloomberg data API for Node.js powered by Rust xbbg engine",
3
+ "version": "1.2.0",
4
+ "description": "Independent Node.js client for Bloomberg-connected data workflows",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "files": [
@@ -46,9 +46,9 @@
46
46
  "apache-arrow": "^21.1.0"
47
47
  },
48
48
  "optionalDependencies": {
49
- "@xbbg/core-darwin-arm64": "1.1.3",
50
- "@xbbg/core-linux-x64": "1.1.3",
51
- "@xbbg/core-win32-x64": "1.1.3"
49
+ "@xbbg/core-darwin-arm64": "1.2.0",
50
+ "@xbbg/core-linux-x64": "1.2.0",
51
+ "@xbbg/core-win32-x64": "1.2.0"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@eslint/js": "^10.0.1",
@@ -75,7 +75,7 @@
75
75
  "url": "git+https://github.com/alpha-xone/xbbg.git",
76
76
  "directory": "js-xbbg"
77
77
  },
78
- "homepage": "https://github.com/alpha-xone/xbbg#readme",
78
+ "homepage": "https://xbbg.org/javascript/",
79
79
  "bugs": {
80
80
  "url": "https://github.com/alpha-xone/xbbg/issues"
81
81
  },