@xbbg/core 1.2.5 → 1.2.7

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
@@ -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
+ On Windows, `@xbbg/core` prepends the first detected Bloomberg runtime DLL directory before loading the native addon. Explicit `BLPAPI_LIB_DIR` / `BLPAPI_ROOT` values win; otherwise it probes local SDK roots plus standard Terminal DAPI installs including `C:\blp\DAPI` and `C:\Program Files (x86)\Bloomberg\Blp\DAPI`.
32
+
31
33
  `@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
34
 
33
35
  ## Release integrity
package/dist/index.js CHANGED
@@ -665,53 +665,71 @@ function resolveNativeAddon(repoRoot) {
665
665
  }
666
666
  return resolveNativeAddonCore({ exists, nativePackage, repoRoot, requirePackage });
667
667
  }
668
-
669
- // src/index.ts
670
- var nodeRequire2 = module$1.createRequire(__filename);
671
- function parsePackageJsonShape(value) {
672
- if (isPlainObject(value) && typeof value.version === "string") {
673
- return { version: value.version };
674
- }
675
- throw new TypeError("@xbbg/core package.json is missing a string version field");
668
+ var BLPAPI_RUNTIME_NAMES = Object.freeze([
669
+ "blpapi3_64.dll",
670
+ "blpapi3_32.dll",
671
+ "libblpapi3.dylib",
672
+ "libblpapi3_64.so",
673
+ "libblpapi3.so"
674
+ ]);
675
+ var WINDOWS_PATH_SEPARATOR = ";";
676
+ var readDirectory = (target) => fs2__default.default.readdirSync(target, { withFileTypes: true });
677
+ function windowsPathKey(value) {
678
+ return path2__default.default.win32.normalize(value).toLowerCase();
676
679
  }
677
- function isNativeAddon(value) {
678
- return isPlainObject(value) && typeof value.JsEngine === "function" && typeof value.getLogLevel === "function" && typeof value.setLogLevel === "function";
680
+ function candidateKey(value, platform) {
681
+ return platform === "win32" ? windowsPathKey(value) : path2__default.default.resolve(value);
679
682
  }
680
- function requireNativeAddon(modulePath) {
681
- const loaded = nodeRequire2(modulePath);
682
- if (isNativeAddon(loaded)) {
683
- return loaded;
683
+ function pushUnique(candidates, seen, candidate, platform) {
684
+ if (candidate === void 0 || candidate.length === 0) {
685
+ return;
684
686
  }
685
- throw new TypeError(`Native addon ${modulePath} does not expose the expected @xbbg/core surface`);
686
- }
687
- function isPolarsModule(value) {
688
- return isPlainObject(value) && typeof value.readIPC === "function";
689
- }
690
- function requirePolarsModule() {
691
- const loaded = nodeRequire2("nodejs-polars");
692
- if (isPolarsModule(loaded)) {
693
- return loaded;
687
+ const key = candidateKey(candidate, platform);
688
+ if (seen.has(key)) {
689
+ return;
694
690
  }
695
- throw new TypeError("nodejs-polars did not expose readIPC(buffer)");
691
+ seen.add(key);
692
+ candidates.push(candidate);
696
693
  }
697
- function isBdhOptionsInput(value) {
698
- return isPlainObject(value) && !(value instanceof Date) && !hasToJSDate(value);
694
+ function windowsDrive(value) {
695
+ if (value !== void 0 && /^[A-Za-z]:/u.test(value)) {
696
+ return value.slice(0, 2);
697
+ }
698
+ return "C:";
699
699
  }
700
- function isBdibOptionsInput(value) {
701
- return isPlainObject(value) && !(value instanceof Date) && !hasToJSDate(value);
700
+ function collectWindowsDapiRootCandidates(env = process.env) {
701
+ const candidates = [];
702
+ const seen = /* @__PURE__ */ new Set();
703
+ const add = (candidate) => {
704
+ pushUnique(candidates, seen, candidate, "win32");
705
+ };
706
+ const systemDrive = windowsDrive(env.SystemDrive);
707
+ const systemDriveRoot = `${systemDrive}\\`;
708
+ add(path2__default.default.win32.join(systemDriveRoot, "blp", "DAPI"));
709
+ if (systemDrive.toLowerCase() !== "c:") {
710
+ add(path2__default.default.win32.join("C:\\", "blp", "DAPI"));
711
+ }
712
+ const programFilesRoots = [
713
+ env.ProgramFiles,
714
+ path2__default.default.win32.join(systemDriveRoot, "Program Files"),
715
+ env["ProgramFiles(x86)"],
716
+ path2__default.default.win32.join(systemDriveRoot, "Program Files (x86)")
717
+ ];
718
+ for (const root of programFilesRoots) {
719
+ add(root === void 0 ? void 0 : path2__default.default.win32.join(root, "Bloomberg", "Blp", "DAPI"));
720
+ }
721
+ const localAppData = env.LOCALAPPDATA ?? (env.USERPROFILE === void 0 ? void 0 : path2__default.default.win32.join(env.USERPROFILE, "AppData", "Local"));
722
+ if (localAppData !== void 0) {
723
+ add(path2__default.default.win32.join(localAppData, "Bloomberg", "DAPI"));
724
+ add(path2__default.default.win32.join(localAppData, "Bloomberg", "Blp", "DAPI"));
725
+ }
726
+ return candidates;
702
727
  }
703
- var packageJson = parsePackageJsonShape(nodeRequire2("../package.json"));
704
- function containsBlpapiRuntime(dir) {
705
- if (dir.length === 0 || !fs2__default.default.existsSync(dir)) {
728
+ function containsBlpapiRuntime(dir, exists2 = fs2__default.default.existsSync) {
729
+ if (dir.length === 0) {
706
730
  return false;
707
731
  }
708
- return [
709
- "blpapi3_64.dll",
710
- "blpapi3_32.dll",
711
- "libblpapi3.dylib",
712
- "libblpapi3_64.so",
713
- "libblpapi3.so"
714
- ].some((name) => fs2__default.default.existsSync(path2__default.default.join(dir, name)));
732
+ return BLPAPI_RUNTIME_NAMES.some((name) => exists2(path2__default.default.join(dir, name)));
715
733
  }
716
734
  function parseVersionParts(name) {
717
735
  const parts = name.split(".").map((part) => Number(part));
@@ -740,62 +758,141 @@ function compareSdkRoots(left, right) {
740
758
  }
741
759
  function pushSdkRuntimeCandidates(candidates, sdkRoot) {
742
760
  const resolved = path2__default.default.resolve(sdkRoot);
743
- candidates.push(resolved, path2__default.default.join(resolved, "bin"), path2__default.default.join(resolved, "lib"));
761
+ candidates.push(
762
+ resolved,
763
+ path2__default.default.join(resolved, "bin"),
764
+ path2__default.default.join(resolved, "lib"),
765
+ path2__default.default.join(resolved, "Lib"),
766
+ path2__default.default.join(resolved, "lib", "win64"),
767
+ path2__default.default.join(resolved, "lib", "win32")
768
+ );
769
+ }
770
+ function addSdkRuntimeRoot(add, sdkRoot) {
771
+ const sdkCandidates = [];
772
+ pushSdkRuntimeCandidates(sdkCandidates, sdkRoot);
773
+ for (const candidate of sdkCandidates) {
774
+ add(candidate);
775
+ }
744
776
  }
745
- function resolveVendorSdkRoot(repoRoot) {
777
+ function resolveVendorSdkRoot(repoRoot, exists2 = fs2__default.default.existsSync, readDir = readDirectory) {
746
778
  const vendorDir = path2__default.default.join(repoRoot, "vendor", "blpapi-sdk");
747
- if (!fs2__default.default.existsSync(vendorDir)) {
779
+ if (!exists2(vendorDir)) {
748
780
  return null;
749
781
  }
750
782
  const candidates = [vendorDir];
751
- for (const entry of fs2__default.default.readdirSync(vendorDir, { withFileTypes: true })) {
783
+ for (const entry of readDir(vendorDir)) {
752
784
  if (entry.isDirectory()) {
753
785
  candidates.push(path2__default.default.join(vendorDir, entry.name));
754
786
  }
755
787
  }
756
788
  candidates.sort(compareSdkRoots);
757
789
  return candidates.find((candidate) => {
758
- const dirs = [candidate, path2__default.default.join(candidate, "bin"), path2__default.default.join(candidate, "lib")];
759
- return dirs.some(containsBlpapiRuntime);
790
+ const dirs = [
791
+ candidate,
792
+ path2__default.default.join(candidate, "bin"),
793
+ path2__default.default.join(candidate, "lib"),
794
+ path2__default.default.join(candidate, "Lib")
795
+ ];
796
+ return dirs.some((dir) => containsBlpapiRuntime(dir, exists2));
760
797
  }) ?? null;
761
798
  }
762
- function configureRuntimeSearchPath() {
763
- if (process.platform !== "win32") {
764
- return;
765
- }
799
+ function collectRuntimeSearchCandidates(options = {}) {
800
+ const env = options.env ?? process.env;
801
+ const exists2 = options.exists ?? fs2__default.default.existsSync;
802
+ const platform = options.platform ?? process.platform;
803
+ const readDir = options.readDir ?? readDirectory;
804
+ const repoRoot = options.repoRoot ?? path2__default.default.resolve(__dirname, "..", "..");
766
805
  const candidates = [];
767
- const libDir = process.env.BLPAPI_LIB_DIR;
806
+ const seen = /* @__PURE__ */ new Set();
807
+ const add = (candidate) => {
808
+ pushUnique(candidates, seen, candidate, platform);
809
+ };
810
+ const libDir = env.BLPAPI_LIB_DIR;
768
811
  if (libDir !== void 0 && libDir.length > 0) {
769
- candidates.push(path2__default.default.resolve(libDir));
812
+ add(path2__default.default.resolve(libDir));
770
813
  }
771
- const root = process.env.BLPAPI_ROOT;
814
+ const root = env.BLPAPI_ROOT;
772
815
  if (root !== void 0 && root.length > 0) {
773
- pushSdkRuntimeCandidates(candidates, root);
816
+ addSdkRuntimeRoot(add, root);
774
817
  }
775
- const repoRoot = path2__default.default.resolve(__dirname, "..", "..");
776
- const devRoot = process.env.XBBG_DEV_SDK_ROOT;
818
+ const devRoot = env.XBBG_DEV_SDK_ROOT;
777
819
  if (devRoot !== void 0 && devRoot.length > 0) {
778
- pushSdkRuntimeCandidates(
779
- candidates,
780
- path2__default.default.isAbsolute(devRoot) ? devRoot : path2__default.default.resolve(repoRoot, devRoot)
781
- );
820
+ const resolved = path2__default.default.isAbsolute(devRoot) ? devRoot : path2__default.default.resolve(repoRoot, devRoot);
821
+ addSdkRuntimeRoot(add, resolved);
782
822
  }
783
- const vendorRoot = resolveVendorSdkRoot(repoRoot);
823
+ const vendorRoot = resolveVendorSdkRoot(repoRoot, exists2, readDir);
784
824
  if (vendorRoot !== null) {
785
- pushSdkRuntimeCandidates(candidates, vendorRoot);
825
+ addSdkRuntimeRoot(add, vendorRoot);
786
826
  }
787
- for (const candidate of candidates) {
788
- if (!containsBlpapiRuntime(candidate)) {
789
- continue;
827
+ if (platform === "win32") {
828
+ for (const dapiRoot of collectWindowsDapiRootCandidates(env)) {
829
+ add(dapiRoot);
790
830
  }
791
- const currentPath = process.env.PATH ?? "";
792
- const parts = currentPath.split(";").filter((part) => part.length > 0);
793
- if (!parts.includes(candidate)) {
794
- process.env.PATH = currentPath.length > 0 ? `${candidate};${currentPath}` : candidate;
831
+ }
832
+ return candidates;
833
+ }
834
+ function prependWindowsPath(env, candidate) {
835
+ const key = Object.keys(env).find((envKey) => envKey.toUpperCase() === "PATH") ?? "PATH";
836
+ const currentPath = env[key] ?? "";
837
+ const currentParts = currentPath.split(WINDOWS_PATH_SEPARATOR).filter((part) => part.length > 0);
838
+ const candidatePathKey = windowsPathKey(candidate);
839
+ if (currentParts.some((part) => windowsPathKey(part) === candidatePathKey)) {
840
+ return;
841
+ }
842
+ env[key] = currentPath.length > 0 ? `${candidate}${WINDOWS_PATH_SEPARATOR}${currentPath}` : candidate;
843
+ }
844
+ function configureRuntimeSearchPath(options = {}) {
845
+ const env = options.env ?? process.env;
846
+ const exists2 = options.exists ?? fs2__default.default.existsSync;
847
+ const platform = options.platform ?? process.platform;
848
+ if (platform !== "win32") {
849
+ return null;
850
+ }
851
+ for (const candidate of collectRuntimeSearchCandidates(options)) {
852
+ if (!containsBlpapiRuntime(candidate, exists2)) {
853
+ continue;
795
854
  }
796
- break;
855
+ prependWindowsPath(env, candidate);
856
+ return candidate;
857
+ }
858
+ return null;
859
+ }
860
+
861
+ // src/index.ts
862
+ var nodeRequire2 = module$1.createRequire(__filename);
863
+ function parsePackageJsonShape(value) {
864
+ if (isPlainObject(value) && typeof value.version === "string") {
865
+ return { version: value.version };
866
+ }
867
+ throw new TypeError("@xbbg/core package.json is missing a string version field");
868
+ }
869
+ function isNativeAddon(value) {
870
+ return isPlainObject(value) && typeof value.JsEngine === "function" && typeof value.getLogLevel === "function" && typeof value.setLogLevel === "function";
871
+ }
872
+ function requireNativeAddon(modulePath) {
873
+ const loaded = nodeRequire2(modulePath);
874
+ if (isNativeAddon(loaded)) {
875
+ return loaded;
797
876
  }
877
+ throw new TypeError(`Native addon ${modulePath} does not expose the expected @xbbg/core surface`);
798
878
  }
879
+ function isPolarsModule(value) {
880
+ return isPlainObject(value) && typeof value.readIPC === "function";
881
+ }
882
+ function requirePolarsModule() {
883
+ const loaded = nodeRequire2("nodejs-polars");
884
+ if (isPolarsModule(loaded)) {
885
+ return loaded;
886
+ }
887
+ throw new TypeError("nodejs-polars did not expose readIPC(buffer)");
888
+ }
889
+ function isBdhOptionsInput(value) {
890
+ return isPlainObject(value) && !(value instanceof Date) && !hasToJSDate(value);
891
+ }
892
+ function isBdibOptionsInput(value) {
893
+ return isPlainObject(value) && !(value instanceof Date) && !hasToJSDate(value);
894
+ }
895
+ var packageJson = parsePackageJsonShape(nodeRequire2("../package.json"));
799
896
  configureRuntimeSearchPath();
800
897
  function loadNative() {
801
898
  const root = path2__default.default.resolve(__dirname, "..", "..");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/arrow-zero-copy.ts","../src/backends.ts","../src/dates.ts","../src/errors.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":["import type { Data, DataType } from 'apache-arrow';\n\nimport {\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} from 'apache-arrow';\n\nimport type { NativeArrowColumn, NativeArrowZeroCopyBatch } from './napi';\n\nconst NATIVE_ARROW_BUFFERS = Symbol('@xbbg/nativeArrowBuffers');\n\nfunction unsupportedNativeArrowType(type: never): never {\n throw new Error(`Unsupported native Arrow column type: ${String(type)}`);\n}\n\ninterface TypedArrayConstructor<T extends ArrayBufferView> {\n readonly BYTES_PER_ELEMENT: number;\n new (buffer: ArrayBufferLike, byteOffset: number, length: number): T;\n}\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 children,\n length: batch.numRows,\n type: new Struct(fields),\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 enumerable: false,\n value: retainedBuffers,\n });\n\n return table;\n}\n\nfunction dataFromColumn(column: NativeArrowColumn, retainedBuffers: Buffer[]): 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 }\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 }\n case 'date32': {\n return scalarData(column, retainedBuffers, nullBitmap, new DateDay(), Int32Array);\n }\n case 'date64': {\n return scalarData(column, retainedBuffers, nullBitmap, new DateMillisecond(), BigInt64Array);\n }\n case 'float32': {\n return scalarData(column, retainedBuffers, nullBitmap, new Float32(), Float32Array);\n }\n case 'float64': {\n return scalarData(column, retainedBuffers, nullBitmap, new Float64(), Float64Array);\n }\n case 'int8': {\n return scalarData(column, retainedBuffers, nullBitmap, new Int8(), Int8Array);\n }\n case 'int16': {\n return scalarData(column, retainedBuffers, nullBitmap, new Int16(), Int16Array);\n }\n case 'int32': {\n return scalarData(column, retainedBuffers, nullBitmap, new Int32(), Int32Array);\n }\n case 'int64': {\n return scalarData(column, retainedBuffers, nullBitmap, new Int64(), BigInt64Array);\n }\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 }\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 }\n case 'null': {\n return makeData({\n type: new Null(),\n length: column.length,\n });\n }\n case 'time32_ms': {\n return scalarData(column, retainedBuffers, nullBitmap, new TimeMillisecond(), Int32Array);\n }\n case 'time32_s': {\n return scalarData(column, retainedBuffers, nullBitmap, new TimeSecond(), Int32Array);\n }\n case 'time64_us': {\n return scalarData(column, retainedBuffers, nullBitmap, new TimeMicrosecond(), BigInt64Array);\n }\n case 'time64_ns': {\n return scalarData(column, retainedBuffers, nullBitmap, new TimeNanosecond(), BigInt64Array);\n }\n case 'timestamp_ms': {\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampMillisecond(column.timezone),\n BigInt64Array,\n );\n }\n case 'timestamp_ns': {\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampNanosecond(column.timezone),\n BigInt64Array,\n );\n }\n case 'timestamp_s': {\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampSecond(column.timezone),\n BigInt64Array,\n );\n }\n case 'timestamp_us': {\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampMicrosecond(column.timezone),\n BigInt64Array,\n );\n }\n case 'uint8': {\n return scalarData(column, retainedBuffers, nullBitmap, new Uint8(), Uint8Array);\n }\n case 'uint16': {\n return scalarData(column, retainedBuffers, nullBitmap, new Uint16(), Uint16Array);\n }\n case 'uint32': {\n return scalarData(column, retainedBuffers, nullBitmap, new Uint32(), Uint32Array);\n }\n case 'uint64': {\n return scalarData(column, retainedBuffers, nullBitmap, new Uint64(), BigUint64Array);\n }\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 return unsupportedNativeArrowType(column.type);\n}\n\nfunction arrowType(column: NativeArrowColumn): DataType {\n switch (column.type) {\n case 'bool': {\n return new Bool();\n }\n case 'binary': {\n return new Binary();\n }\n case 'date32': {\n return new DateDay();\n }\n case 'date64': {\n return new DateMillisecond();\n }\n case 'float32': {\n return new Float32();\n }\n case 'float64': {\n return new Float64();\n }\n case 'int8': {\n return new Int8();\n }\n case 'int16': {\n return new Int16();\n }\n case 'int32': {\n return new Int32();\n }\n case 'int64': {\n return new Int64();\n }\n case 'large_binary': {\n return new LargeBinary();\n }\n case 'large_utf8': {\n return new LargeUtf8();\n }\n case 'null': {\n return new Null();\n }\n case 'time32_ms': {\n return new TimeMillisecond();\n }\n case 'time32_s': {\n return new TimeSecond();\n }\n case 'time64_us': {\n return new TimeMicrosecond();\n }\n case 'time64_ns': {\n return new TimeNanosecond();\n }\n case 'timestamp_ms': {\n return new TimestampMillisecond(column.timezone);\n }\n case 'timestamp_ns': {\n return new TimestampNanosecond(column.timezone);\n }\n case 'timestamp_s': {\n return new TimestampSecond(column.timezone);\n }\n case 'timestamp_us': {\n return new TimestampMicrosecond(column.timezone);\n }\n case 'uint8': {\n return new Uint8();\n }\n case 'uint16': {\n return new Uint16();\n }\n case 'uint32': {\n return new Uint32();\n }\n case 'uint64': {\n return new Uint64();\n }\n case 'utf8': {\n return new Utf8();\n }\n }\n return unsupportedNativeArrowType(column.type);\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 data: requiredTypedView(column, ctor, retainedBuffers),\n length: column.length,\n nullBitmap,\n nullCount: column.nullCount,\n type,\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 assertBufferByteLength(column, 'data', buffer, column.length, ctor.BYTES_PER_ELEMENT);\n retainedBuffers.push(buffer);\n return new ctor(buffer.buffer, buffer.byteOffset, column.length);\n}\n\nfunction requiredOffsets(column: NativeArrowColumn, retainedBuffers: Buffer[]): Int32Array {\n const buffer = requireBuffer(column, 'offsets');\n assertBufferByteLength(\n column,\n 'offsets',\n buffer,\n column.length + 1,\n Int32Array.BYTES_PER_ELEMENT,\n );\n retainedBuffers.push(buffer);\n return new Int32Array(buffer.buffer, buffer.byteOffset, column.length + 1);\n}\n\nfunction requiredLargeOffsets(column: NativeArrowColumn, retainedBuffers: Buffer[]): BigInt64Array {\n const buffer = requireBuffer(column, 'offsets');\n assertBufferByteLength(\n column,\n 'offsets',\n buffer,\n column.length + 1,\n BigInt64Array.BYTES_PER_ELEMENT,\n );\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 if (byteLength !== undefined) {\n assertBufferByteLength(column, 'data', buffer, byteLength, 1);\n }\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 assertBufferByteLength(\n column: NativeArrowColumn,\n property: 'data' | 'offsets',\n buffer: Buffer,\n elements: number,\n bytesPerElement: number,\n): void {\n if (!Number.isSafeInteger(elements) || elements < 0) {\n throw new Error(\n `native Arrow column ${column.name} has invalid ${property} element count: ${elements}`,\n );\n }\n const requiredBytes = elements * bytesPerElement;\n if (!Number.isSafeInteger(requiredBytes) || buffer.byteLength < requiredBytes) {\n throw new Error(\n `native Arrow column ${column.name} ${property} buffer is too small: ` +\n `expected at least ${requiredBytes} bytes, got ${buffer.byteLength}`,\n );\n }\n}\n\nfunction requireBuffer(column: NativeArrowColumn, property: 'data' | 'offsets'): 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","import type { BackendKind, FormatKind } from './types';\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","/**\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}$/u;\nconst BBG_DATE_RE = /^\\d{8}$/u;\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]|$)/u;\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(`Cannot convert ${typeof value} value ${String(value)} to a Date.`);\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.replaceAll(/[-/]/gu, '');\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(value: DateTimeLike | 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 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 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 ? napiError.message : typeof napiError === 'string' ? napiError : '';\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 ([^:]+)::([^ (]+)/u.exec(msg);\n if (serviceOpMatch !== null) {\n options.service = serviceOpMatch[1];\n options.operation = serviceOpMatch[2];\n }\n const requestIdMatch = /\\[request_id=([^\\]]+)\\]/u.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 '([^']+)'\\?\\)/u.exec(msg);\n if (suggestionMatch !== null) {\n options.suggestion = suggestionMatch[1];\n }\n return options;\n}\n","export const nativeBinaryName = 'napi_xbbg.node';\n\nexport const nativePackageFiles = Object.freeze([\n 'index.js',\n 'index.d.ts',\n 'README.md',\n 'LICENSE',\n 'package.json',\n nativeBinaryName,\n] as const);\n\nexport const nativePackageDescriptors = Object.freeze({\n 'darwin-arm64': Object.freeze({\n binaryName: nativeBinaryName,\n cpu: 'arm64',\n files: nativePackageFiles,\n key: 'darwin-arm64',\n os: 'darwin',\n packageDir: 'packages/xbbg-core-darwin-arm64',\n packageName: '@xbbg/core-darwin-arm64',\n }),\n 'linux-x64': Object.freeze({\n binaryName: nativeBinaryName,\n cpu: 'x64',\n files: nativePackageFiles,\n key: 'linux-x64',\n os: 'linux',\n packageDir: 'packages/xbbg-core-linux-x64',\n packageName: '@xbbg/core-linux-x64',\n }),\n 'win32-x64': Object.freeze({\n binaryName: nativeBinaryName,\n cpu: 'x64',\n files: nativePackageFiles,\n key: 'win32-x64',\n os: 'win32',\n packageDir: 'packages/xbbg-core-win32-x64',\n packageName: '@xbbg/core-win32-x64',\n }),\n} as const);\n\nexport type PlatformKey = keyof typeof nativePackageDescriptors;\nexport type NativePackageDescriptor = (typeof nativePackageDescriptors)[PlatformKey];\nexport type NativePackageName = NativePackageDescriptor['packageName'];\n\nexport const platformPackages = Object.freeze({\n 'darwin-arm64': nativePackageDescriptors['darwin-arm64'].packageName,\n 'linux-x64': nativePackageDescriptors['linux-x64'].packageName,\n 'win32-x64': nativePackageDescriptors['win32-x64'].packageName,\n}) satisfies Readonly<{ [K in PlatformKey]: (typeof nativePackageDescriptors)[K]['packageName'] }>;\n\nexport function nativePackageForKey(key: string): NativePackageDescriptor | null {\n return (\n (nativePackageDescriptors as Readonly<Record<string, NativePackageDescriptor | undefined>>)[\n key\n ] ?? null\n );\n}\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 { createRequire } from 'node:module';\nimport path from 'node:path';\n\nimport { nativePackageForKey, platformKey } from './platform-map';\nimport type { NativePackageDescriptor } 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\ninterface NativeResolverBaseOptions {\n readonly repoRoot: string;\n readonly requirePackage: (id: string) => unknown;\n readonly exists: (target: string) => boolean;\n}\n\ninterface SupportedNativeResolverOptions extends NativeResolverBaseOptions {\n readonly nativePackage: NativePackageDescriptor;\n}\n\ninterface UnsupportedNativeResolverOptions extends NativeResolverBaseOptions {\n readonly key: string;\n readonly nativePackage: null;\n}\n\nexport type NativeResolverOptions =\n | SupportedNativeResolverOptions\n | UnsupportedNativeResolverOptions;\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 TypeError(`Invalid native package ${packageName}: binaryPath must be a string`);\n }\n return resolved;\n}\n\nfunction localPackageIndex(repoRoot: string, packageDir: string): string {\n return path.join(repoRoot, packageDir, '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 (error) {\n if (isOptionalPackageMissing(error, packageName)) {\n return null;\n }\n throw error;\n }\n}\n\nfunction resolveLocalPackage(\n repoRoot: string,\n nativePackage: NativePackageDescriptor,\n requirePackage: (id: string) => unknown,\n existsFile: (target: string) => boolean,\n): NativePackageResolution | null {\n const localIndex = localPackageIndex(repoRoot, nativePackage.packageDir);\n if (!existsFile(localIndex)) {\n return null;\n }\n\n const resolved = validateNativePackage(nativePackage.packageName, requirePackage(localIndex));\n if (!existsFile(resolved.binaryPath)) {\n throw new Error(\n `Invalid native package ${nativePackage.packageName}: binaryPath does not exist: ${resolved.binaryPath}`,\n );\n }\n return resolved;\n}\n\nexport function resolveNativeAddonCore(options: NativeResolverOptions): NativeAddonResolution {\n const { nativePackage, repoRoot, requirePackage, exists: existsFile } = options;\n if (nativePackage === null) {\n return { binaryPath: null, key: options.key, packageName: null };\n }\n\n const { key, packageName } = nativePackage;\n const installed = resolveInstalledPackage(packageName, requirePackage, existsFile);\n if (installed !== null) {\n return { binaryPath: installed.binaryPath, key, packageName };\n }\n\n const local = resolveLocalPackage(repoRoot, nativePackage, requirePackage, existsFile);\n if (local !== null) {\n return { binaryPath: local.binaryPath, key, packageName };\n }\n\n return { binaryPath: null, key, packageName };\n}\n\nexport function resolveNativeAddon(repoRoot: string): NativeAddonResolution {\n const key = platformKey();\n const nativePackage = nativePackageForKey(key);\n const requirePackage = (id: string): unknown => nodeRequire(id) as unknown;\n if (nativePackage === null) {\n return resolveNativeAddonCore({ exists, key, nativePackage, repoRoot, requirePackage });\n }\n return resolveNativeAddonCore({ exists, nativePackage, repoRoot, requirePackage });\n}\n","/* oxlint-disable import/max-dependencies -- public entry point intentionally consolidates native and helper modules. */\nimport type { Table } from 'apache-arrow';\n\nimport { tableFromIPC } from 'apache-arrow';\nimport fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport path from 'node:path';\n\nimport { tableFromNativeArrowBatch } from './arrow-zero-copy';\nimport { Backend, Format } from './backends';\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 {\n BlpError,\n BlpInternalError,\n BlpRequestError,\n BlpSessionError,\n BlpTimeoutError,\n BlpValidationError,\n wrapError,\n} from './errors';\nimport type {\n NativeAddon,\n NativeArrowZeroCopyBatch,\n NativeEngine,\n NativeSubscription,\n NativeSubscriptionUpdate,\n} from './napi';\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 DividendYieldOptions,\n EngineConfig,\n EtfHoldingsOptions,\n ExchangeInfoResult,\n ExchangeOverrideInput,\n FieldInfo,\n FormatKind,\n FuturesCandidate,\n FuturesResolveOptions,\n FuturesCurveOptions,\n FxPairInfo,\n MarketRule,\n OverridesMap,\n IndexMembersOptions,\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 VolFieldSpec,\n VolSurfaceOptions,\n VolSurfacePreset,\n YasOptions,\n} from './types';\n\nconst nodeRequire = createRequire(__filename);\n\ninterface PackageJsonShape {\n readonly version: string;\n}\n\ninterface PolarsModule {\n readIPC(buffer: Buffer): unknown;\n}\n\nfunction parsePackageJsonShape(value: unknown): PackageJsonShape {\n if (isPlainObject(value) && typeof value.version === 'string') {\n return { version: value.version };\n }\n throw new TypeError('@xbbg/core package.json is missing a string version field');\n}\n\nfunction isNativeAddon(value: unknown): value is NativeAddon {\n return (\n isPlainObject(value) &&\n typeof value.JsEngine === 'function' &&\n typeof value.getLogLevel === 'function' &&\n typeof value.setLogLevel === 'function'\n );\n}\n\nfunction requireNativeAddon(modulePath: string): NativeAddon {\n const loaded: unknown = nodeRequire(modulePath);\n if (isNativeAddon(loaded)) {\n return loaded;\n }\n throw new TypeError(`Native addon ${modulePath} does not expose the expected @xbbg/core surface`);\n}\n\nfunction isPolarsModule(value: unknown): value is PolarsModule {\n return isPlainObject(value) && typeof value.readIPC === 'function';\n}\n\nfunction requirePolarsModule(): PolarsModule {\n const loaded: unknown = nodeRequire('nodejs-polars');\n if (isPolarsModule(loaded)) {\n return loaded;\n }\n throw new TypeError('nodejs-polars did not expose readIPC(buffer)');\n}\n\nfunction isBdhOptionsInput(value: DateLike | BdhOptions | undefined): value is BdhOptions {\n return isPlainObject(value) && !(value instanceof Date) && !hasToJSDate(value);\n}\n\nfunction isBdibOptionsInput(\n value: DateTimeLike | BdibOptions | number | undefined,\n): value is BdibOptions {\n return isPlainObject(value) && !(value instanceof Date) && !hasToJSDate(value);\n}\n\nconst packageJson = parsePackageJsonShape(nodeRequire('../package.json'));\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) {\n return -1;\n }\n if (rightParts !== null) {\n return 1;\n }\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 (\n candidates.find((candidate) => {\n const dirs = [candidate, path.join(candidate, 'bin'), path.join(candidate, 'lib')];\n return dirs.some(containsBlpapiRuntime);\n }) ?? null\n );\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 = 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 requireNativeAddon(candidate);\n }\n }\n\n const { key, packageName, binaryPath } = resolveNativeAddon(root);\n if (binaryPath !== null) {\n return requireNativeAddon(binaryPath);\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 ───────────────────────────────────────────────────────────\nexport { Backend, Format };\n\nexport const 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\nexport const 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\nexport const 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 ado: 'adoStudyAttributes',\n adx: 'dmiStudyAttributes',\n al: 'alStudyAttributes',\n atr: 'atrStudyAttributes',\n bb: 'bollStudyAttributes',\n boll: 'bollStudyAttributes',\n bs: 'bsStudyAttributes',\n chko: 'chkoStudyAttributes',\n cmci: 'cmciStudyAttributes',\n dmi: 'dmiStudyAttributes',\n ema: 'emavgStudyAttributes',\n emavg: 'emavgStudyAttributes',\n etd: 'etdStudyAttributes',\n fear_greed: 'fgStudyAttributes',\n fg: 'fgStudyAttributes',\n goc: 'gocStudyAttributes',\n hurst: 'hurstStudyAttributes',\n ichimoku: 'gocStudyAttributes',\n ipmavg: 'ipmavgStudyAttributes',\n keltner: 'kltnStudyAttributes',\n kltn: 'kltnStudyAttributes',\n macd: 'macdStudyAttributes',\n mae: 'maeStudyAttributes',\n mao: 'maoStudyAttributes',\n maxmin: 'maxminStudyAttributes',\n mom: 'momentumStudyAttributes',\n momentum: 'momentumStudyAttributes',\n or: 'orStudyAttributes',\n parabolic: 'ptpsStudyAttributes',\n pcr: 'pcrStudyAttributes',\n pd: 'pdStudyAttributes',\n pivot: 'pivotStudyAttributes',\n ptps: 'ptpsStudyAttributes',\n rex: 'rexStudyAttributes',\n roc: 'rocStudyAttributes',\n rsi: 'rsiStudyAttributes',\n rv: 'rvStudyAttributes',\n sar: 'ptpsStudyAttributes',\n sma: 'smavgStudyAttributes',\n smavg: 'smavgStudyAttributes',\n stoch: 'tasStudyAttributes',\n tas: 'tasStudyAttributes',\n te: 'teStudyAttributes',\n tma: 'tmavgStudyAttributes',\n tmavg: 'tmavgStudyAttributes',\n trender: 'trenderStudyAttributes',\n tvat: 'tvatStudyAttributes',\n vat: 'vatStudyAttributes',\n vma: 'vmavgStudyAttributes',\n vmavg: 'vmavgStudyAttributes',\n williams: 'wlprStudyAttributes',\n wlpr: 'wlprStudyAttributes',\n wma: 'wmavgStudyAttributes',\n wmavg: 'wmavgStudyAttributes',\n});\n\ntype StudyParams = Record<string, PrimitiveValue | undefined>;\n\nconst TA_DEFAULTS: Readonly<Record<string, Readonly<StudyParams>>> = Object.freeze({\n atrStudyAttributes: Object.freeze({\n maType: 'Simple',\n period: 14,\n priceSourceHigh: 'PX_HIGH',\n priceSourceLow: 'PX_LOW',\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 emavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n macdStudyAttributes: Object.freeze({\n maPeriod1: 12,\n maPeriod2: 26,\n sigPeriod: 9,\n priceSourceClose: 'PX_LAST',\n }),\n rsiStudyAttributes: Object.freeze({ period: 14, priceSourceClose: 'PX_LAST' }),\n smavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\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 tmavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n vmavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n wmavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n});\n\nconst MKTDATA_SERVICE = '//blp/mktdata';\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(obj: OverridesMap | undefined): 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 encodeVolFieldSpec(field: string, spec: VolFieldSpec | undefined): string {\n if (spec === undefined) {\n return field;\n }\n return [\n field,\n spec.metric ?? '',\n spec.tenor ?? '',\n spec.pointType ?? '',\n spec.point === undefined ? '' : String(spec.point),\n ].join('|');\n}\n\nfunction isVolFieldSpecMap(\n fields: VolSurfaceOptions['fields'],\n): fields is Record<string, VolFieldSpec> {\n return fields !== undefined && !Array.isArray(fields);\n}\n\nfunction normalizeVolFieldSpecs(fields: VolSurfaceOptions['fields'] | undefined): string[] | null {\n if (fields === undefined) {\n return null;\n }\n if (!isVolFieldSpecMap(fields)) {\n return fields.map((field) => toRequestString(field));\n }\n return Object.entries(fields).map(([field, spec]) => encodeVolFieldSpec(field, spec));\n}\n\nfunction isVolSurfacePresetArray(\n preset: VolSurfaceOptions['preset'],\n): preset is readonly VolSurfacePreset[] {\n return Array.isArray(preset);\n}\nfunction normalizeVolPresets(preset: VolSurfaceOptions['preset'] | undefined): string[] | null {\n if (preset === undefined || preset === null) {\n return null;\n }\n return isVolSurfacePresetArray(preset) ? [...preset] : [preset];\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;\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\n ? subscriptionOptions\n : 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('configure expects either a config object or host/port arguments');\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 end: `${day}T23:59:59`,\n start: `${day}T00:00:00`,\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().replaceAll(/-/gu, '_').replaceAll(/ /gu, '_');\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 = typeof study === 'string' ? { studyType: study } : { ...study };\n const studyType =\n 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(\n stringOrUndef(kwargs.periodicitySelection) ??\n stringOrUndef(kwargs.periodicity) ??\n rawStudy.calcInterval ??\n options.periodicity ??\n 'DAILY',\n ).toUpperCase();\n const interval = 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', { configurable: true, value: err });\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 = requirePolarsModule();\n return polarsModule;\n } catch (error) {\n throw cachePolarsLoadError(error);\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 [...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 void (async (): Promise<void> => {\n try {\n const engine = await existing;\n engine.signalShutdown();\n } catch {\n /* Ignore shutdown errors */\n }\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) {\n return null;\n }\n const value = this.update.values[index] ?? null;\n const kind = this.update.valueKinds[index] ?? 'unknown';\n if (value === null) {\n return null;\n }\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) {\n return null;\n }\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) {\n return null;\n }\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> = { timestampUs: this.timestampUs, topic: this.topic };\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public async add(tickers: readonly string[]): Promise<void> {\n try {\n await this.inner.add(tickers);\n } catch (error) {\n throw wrapError(error);\n }\n }\n\n public async remove(tickers: readonly string[]): Promise<void> {\n try {\n await this.inner.remove(tickers);\n } catch (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public static withConfig(config: EngineConfig = {}): Engine {\n const maybeEngine: unknown = Object.create(Engine.prototype);\n if (!(maybeEngine instanceof Engine)) {\n throw new TypeError('Failed to allocate Engine instance');\n }\n const engine = maybeEngine;\n try {\n engine.inner = native.JsEngine.withConfig(config);\n } catch (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public async requestRaw(params: RequestInput): Promise<Buffer> {\n try {\n return await this.inner.request(params);\n } catch (error) {\n throw wrapError(error);\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 backend: options.backend,\n extractor: 'refdata',\n fields,\n format: options.format,\n includeSecurityErrors: Boolean(options.includeSecurityErrors),\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'ReferenceDataRequest',\n overrides: mapObjectToPairs(options.overrides),\n securities: tickers,\n service: '//blp/refdata',\n validateFields: options.validateFields,\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 backend: options.backend,\n extractor: 'bulk',\n fields,\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'ReferenceDataRequest',\n overrides: mapObjectToPairs(options.overrides),\n securities: tickers,\n service: '//blp/refdata',\n validateFields: options.validateFields,\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 backend: options.backend,\n endDate: formatDate(options.end),\n extractor: 'histdata',\n fields,\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'HistoricalDataRequest',\n overrides: mapObjectToPairs(options.overrides),\n securities: tickers,\n service: '//blp/refdata',\n startDate: formatDate(options.start),\n validateFields: options.validateFields,\n });\n }\n\n public async bdib(ticker: string, options: BdibOptions = {}): Promise<unknown> {\n return await this.request({\n backend: options.backend,\n endDatetime: formatDateTime(options.end),\n eventType: options.eventType ?? 'TRADE',\n extractor: 'intraday_bar',\n interval: options.interval ?? 1,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'IntradayBarRequest',\n outputTz: options.outputTz,\n requestTz: options.requestTz,\n security: ticker,\n service: '//blp/refdata',\n startDatetime: formatDateTime(options.start),\n });\n }\n\n public async bdtick(ticker: string, options: BdtickOptions = {}): Promise<unknown> {\n return await this.request({\n backend: options.backend,\n endDatetime: formatDateTime(options.end),\n eventTypes: options.eventTypes ?? ['TRADE'],\n extractor: 'intraday_tick',\n kwargs: buildBdtickKwargs(options),\n operation: 'IntradayTickRequest',\n outputTz: options.outputTz,\n requestTz: options.requestTz,\n security: ticker,\n service: '//blp/refdata',\n startDatetime: formatDateTime(options.start),\n });\n }\n\n public async bql(query: string, options: BqlOptions = {}): Promise<unknown> {\n return await this.request({\n backend: options.backend,\n elements: [{ key: 'expression', value: toRequestString(query) }],\n extractor: 'bql',\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'sendQuery',\n service: '//blp/bqlsvc',\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 backend: options.backend,\n elements,\n extractor: 'generic',\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'BeqsRequest',\n overrides: mapObjectToPairs(overrides),\n service: '//blp/refdata',\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 backend: options.backend,\n elements: mapObjectToPairs(elements),\n extractor: 'bsrch',\n format: options.format,\n operation: 'ExcelGetGridRequest',\n service: '//blp/exrsvc',\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 backend: options.backend,\n elements: buildTaRequest(ticker, study, options),\n extractor: 'generic',\n format: options.format,\n operation: 'studyRequest',\n service: '//blp/tasvc',\n });\n }\n\n public async bflds(options: BfldsOptions = {}): Promise<unknown> {\n if (options.searchSpec !== undefined) {\n return await this.request({\n backend: options.backend,\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'FieldSearchRequest',\n searchSpec: toRequestString(options.searchSpec),\n service: '//blp/apiflds',\n });\n }\n const fields = toStringArray(options.fields);\n return await this.request({\n backend: options.backend,\n fieldIds: fields,\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'FieldInfoRequest',\n service: '//blp/apiflds',\n });\n }\n\n public async blkp(query: string, options: BlkpOptions = {}): Promise<unknown> {\n return await this.request({\n backend: options.backend,\n elements: [{ key: 'query', value: toRequestString(query) }],\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'instrumentListRequest',\n service: '//blp/instruments',\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 backend: options.backend,\n fields: Array.isArray(fields) ? fields : [toRequestString(fields)],\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'PortfolioDataRequest',\n overrides: mapObjectToPairs(options.overrides),\n security: toRequestString(portfolio),\n service: '//blp/refdata',\n });\n }\n\n public async bcurves(ticker: string, options: RequestOptions = {}): Promise<unknown> {\n return await this.request({\n backend: options.backend,\n elements: [{ key: 'query', value: toRequestString(ticker) }],\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'curveListRequest',\n service: '//blp/instruments',\n });\n }\n\n public async bgovts(ticker: string, options: RequestOptions = {}): Promise<unknown> {\n return await this.request({\n backend: options.backend,\n elements: [{ key: 'query', value: toRequestString(ticker) }],\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'govtListRequest',\n service: '//blp/instruments',\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(service: string, operation: string): 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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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: toStringArray(fields),\n ...options,\n });\n }\n\n public async fieldSearch(searchSpec: string, options: BfldsOptions = {}): 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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public async preferreds(equityTicker: string, options: PreferredsOptions = {}): 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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public async futuresCurve(\n genTicker: string,\n options: FuturesCurveOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this.inner.recipeFuturesCurve(\n toRequestString(genTicker),\n options.asof === undefined ? undefined : (formatDate(options.asof) ?? ''),\n options.chainField ?? undefined,\n options.fields !== undefined ? toStringArray(options.fields) : null,\n options.maxContracts ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public async dividendYield(\n tickers: string | readonly string[],\n startDate: DateLike,\n endDate: DateLike,\n options: DividendYieldOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this.inner.recipeDividendYield(\n toStringArray(tickers),\n formatDate(startDate) ?? '',\n formatDate(endDate) ?? '',\n options.dividendTypes !== undefined ? toStringArray(options.dividendTypes) : null,\n options.windowDays ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public async etfHoldings(etfTicker: string, options: EtfHoldingsOptions = {}): 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 (error) {\n throw wrapError(error);\n }\n }\n\n public async volSurface(\n tickers: string | readonly string[],\n startDate: DateLike,\n endDate: DateLike,\n options: VolSurfaceOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this.inner.recipeVolSurface(\n toStringArray(tickers),\n formatDate(startDate) ?? '',\n formatDate(endDate) ?? '',\n normalizeVolPresets(options.preset ?? 'MONEYNESS_30D'),\n normalizeVolFieldSpecs(options.fields),\n options.asDecimal ?? true,\n options.includeDerived ?? false,\n options.riskFreeRate ?? undefined,\n options.dividendYieldField ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (error) {\n throw wrapError(error);\n }\n }\n\n public async indexMembers(index: string, options: IndexMembersOptions = {}): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this.inner.recipeIndexMembers(\n toRequestString(index),\n options.field ?? undefined,\n options.asof === undefined ? undefined : (formatDate(options.asof) ?? ''),\n );\n return ipcToBackend(buffer, backend);\n } catch (error) {\n throw wrapError(error);\n }\n }\n\n public async resolveIsins(\n isins: string | readonly string[],\n options: RecipeBackendOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this.inner.recipeResolveIsins(toStringArray(isins));\n return ipcToBackend(buffer, backend);\n } catch (error) {\n throw wrapError(error);\n }\n }\n\n public async issuerIsins(\n bondIsins: string | readonly string[],\n options: RecipeBackendOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this.inner.recipeIssuerIsins(toStringArray(bondIsins));\n return ipcToBackend(buffer, backend);\n } catch (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n}\n\n// ── Top-level wrappers ──────────────────────────────────────────────────\n\nexport async function connect(config?: EngineConfig): Promise<Engine> {\n return await Promise.resolve(config === undefined ? new Engine() : Engine.withConfig(config));\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 (isBdhOptionsInput(start)) {\n if (end !== undefined) {\n throw new TypeError('abdh options object cannot be combined with a positional end date');\n }\n return await engine.bdh(toStringArray(tickers), toStringArray(fields), start);\n }\n return await engine.bdh(toStringArray(tickers), toStringArray(fields), {\n ...options,\n end,\n start,\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(toStringArray(tickers), toStringArray(fields), normalizedOptions);\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 if (isBdibOptionsInput(dt) && interval === 1 && Object.keys(options).length === 0) {\n return await engine.bdib(toRequestString(ticker), dt);\n }\n const normalizedOptions: BdibOptions = isBdibOptionsInput(interval)\n ? { ...interval }\n : { ...options, interval: typeof interval === 'number' ? interval : 1 };\n if (normalizedOptions.start === undefined && normalizedOptions.end === undefined) {\n if (dt === undefined || isBdibOptionsInput(dt)) {\n throw new TypeError('abdib requires dt or explicit start/end options');\n }\n const range = fullDayRange(dt);\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, end, start });\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 abdh,\n abdib,\n abdp,\n abds,\n abdtick,\n asubscribe,\n bdh,\n bdib,\n bdp,\n bds,\n bdtick,\n subscribe,\n});\n\nexport const ext = Object.freeze({\n buildCorporateBondsQuery: native.extBuildCorporateBondsQuery,\n\n buildEarningHeaderRename: native.extBuildEarningHeaderRename,\n buildEtfHoldingsQuery: native.extBuildEtfHoldingsQuery,\n\n buildFuturesTicker: native.extBuildFuturesTicker,\n buildFxPair: native.extBuildFxPair,\n\n buildPreferredsQuery: native.extBuildPreferredsQuery,\n buildYasOverrides: native.extBuildYasOverrides,\n calculateLevelPercentages: native.extCalculateLevelPercentages,\n cdx: Object.freeze({\n acdx_info: acdxInfo,\n acdx_pricing: acdxPricing,\n acdx_risk: acdxRisk,\n }),\n cdxGenToSpecific: native.extCdxGenToSpecific,\n\n clearExchangeOverride: native.extClearExchangeOverride,\n contractIndex: native.extContractIndex,\n currenciesNeedingConversion: native.extCurrenciesNeedingConversion,\n defaultBqrDatetimes: native.extDefaultBqrDatetimes,\n defaultTurnoverDates: native.extDefaultTurnoverDates,\n\n deriveSessions: native.extDeriveSessions,\n filterCandidatesByCycle: native.extFilterCandidatesByCycle,\n filterEquityTickers: native.extFilterEquityTickers,\n\n filterValidContracts: native.extFilterValidContracts,\n fmtDate: native.extFmtDate,\n generateFuturesCandidates: native.extGenerateFuturesCandidates,\n\n getDvdCols: native.extGetDvdCols,\n getDvdType: native.extGetDvdType,\n\n getDvdTypes: native.extGetDvdTypes,\n getEtfCols: native.extGetEtfCols,\n getExchangeOverride: native.extGetExchangeOverride,\n getFuturesMonths: native.extGetFuturesMonths,\n getMarketRule: native.extGetMarketRule,\n getMonthCode: native.extGetMonthCode,\n getMonthName: native.extGetMonthName,\n\n inferTimezone: native.extInferTimezone,\n\n isLongFormat: native.extIsLongFormat,\n isSpecificContract: native.extIsSpecificContract,\n\n listExchangeOverrides: native.extListExchangeOverrides,\n normalizeTickers: native.extNormalizeTickers,\n parseCdxTicker: native.extParseCdxTicker,\n\n parseDate: native.extParseDate,\n parseTicker: native.extParseTicker,\n\n pivotToWide: native.extPivotToWide,\n previousCdxSeries: native.extPreviousCdxSeries,\n renameDividendColumns: native.extRenameDividendColumns,\n renameEtfColumns: native.extRenameEtfColumns,\n sameCurrency: native.extSameCurrency,\n sessionTimesToUtc: native.extSessionTimesToUtc,\n setExchangeOverride: native.extSetExchangeOverride,\n validateGenericTicker: native.extValidateGenericTicker,\n});\n\nexport function version(): string {\n return packageJson.version;\n}\n\nexport const { setLogLevel } = native;\nexport const { getLogLevel } = native;\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 DividendYieldOptions,\n EngineConfig,\n EtfHoldingsOptions,\n ExchangeInfoResult,\n ExchangeOverrideInput,\n FieldInfo,\n FormatKind,\n FuturesCandidate,\n FuturesResolveOptions,\n FuturesCurveOptions,\n FxPairInfo,\n MarketRule,\n OverridesMap,\n IndexMembersOptions,\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 VolFieldSpec,\n VolSurfaceOptions,\n VolSurfacePreset,\n YasOptions,\n};\n"]}
1
+ {"version":3,"sources":["../src/arrow-zero-copy.ts","../src/backends.ts","../src/dates.ts","../src/errors.ts","../src/native/platform-map.ts","../src/native/resolve-native.ts","../src/runtime-search-path.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","exists","nodeRequire","tableFromIPC","json"],"mappings":"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","file":"index.js","sourcesContent":["import type { Data, DataType } from 'apache-arrow';\n\nimport {\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} from 'apache-arrow';\n\nimport type { NativeArrowColumn, NativeArrowZeroCopyBatch } from './napi';\n\nconst NATIVE_ARROW_BUFFERS = Symbol('@xbbg/nativeArrowBuffers');\n\nfunction unsupportedNativeArrowType(type: never): never {\n throw new Error(`Unsupported native Arrow column type: ${String(type)}`);\n}\n\ninterface TypedArrayConstructor<T extends ArrayBufferView> {\n readonly BYTES_PER_ELEMENT: number;\n new (buffer: ArrayBufferLike, byteOffset: number, length: number): T;\n}\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 children,\n length: batch.numRows,\n type: new Struct(fields),\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 enumerable: false,\n value: retainedBuffers,\n });\n\n return table;\n}\n\nfunction dataFromColumn(column: NativeArrowColumn, retainedBuffers: Buffer[]): 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 }\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 }\n case 'date32': {\n return scalarData(column, retainedBuffers, nullBitmap, new DateDay(), Int32Array);\n }\n case 'date64': {\n return scalarData(column, retainedBuffers, nullBitmap, new DateMillisecond(), BigInt64Array);\n }\n case 'float32': {\n return scalarData(column, retainedBuffers, nullBitmap, new Float32(), Float32Array);\n }\n case 'float64': {\n return scalarData(column, retainedBuffers, nullBitmap, new Float64(), Float64Array);\n }\n case 'int8': {\n return scalarData(column, retainedBuffers, nullBitmap, new Int8(), Int8Array);\n }\n case 'int16': {\n return scalarData(column, retainedBuffers, nullBitmap, new Int16(), Int16Array);\n }\n case 'int32': {\n return scalarData(column, retainedBuffers, nullBitmap, new Int32(), Int32Array);\n }\n case 'int64': {\n return scalarData(column, retainedBuffers, nullBitmap, new Int64(), BigInt64Array);\n }\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 }\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 }\n case 'null': {\n return makeData({\n type: new Null(),\n length: column.length,\n });\n }\n case 'time32_ms': {\n return scalarData(column, retainedBuffers, nullBitmap, new TimeMillisecond(), Int32Array);\n }\n case 'time32_s': {\n return scalarData(column, retainedBuffers, nullBitmap, new TimeSecond(), Int32Array);\n }\n case 'time64_us': {\n return scalarData(column, retainedBuffers, nullBitmap, new TimeMicrosecond(), BigInt64Array);\n }\n case 'time64_ns': {\n return scalarData(column, retainedBuffers, nullBitmap, new TimeNanosecond(), BigInt64Array);\n }\n case 'timestamp_ms': {\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampMillisecond(column.timezone),\n BigInt64Array,\n );\n }\n case 'timestamp_ns': {\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampNanosecond(column.timezone),\n BigInt64Array,\n );\n }\n case 'timestamp_s': {\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampSecond(column.timezone),\n BigInt64Array,\n );\n }\n case 'timestamp_us': {\n return scalarData(\n column,\n retainedBuffers,\n nullBitmap,\n new TimestampMicrosecond(column.timezone),\n BigInt64Array,\n );\n }\n case 'uint8': {\n return scalarData(column, retainedBuffers, nullBitmap, new Uint8(), Uint8Array);\n }\n case 'uint16': {\n return scalarData(column, retainedBuffers, nullBitmap, new Uint16(), Uint16Array);\n }\n case 'uint32': {\n return scalarData(column, retainedBuffers, nullBitmap, new Uint32(), Uint32Array);\n }\n case 'uint64': {\n return scalarData(column, retainedBuffers, nullBitmap, new Uint64(), BigUint64Array);\n }\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 return unsupportedNativeArrowType(column.type);\n}\n\nfunction arrowType(column: NativeArrowColumn): DataType {\n switch (column.type) {\n case 'bool': {\n return new Bool();\n }\n case 'binary': {\n return new Binary();\n }\n case 'date32': {\n return new DateDay();\n }\n case 'date64': {\n return new DateMillisecond();\n }\n case 'float32': {\n return new Float32();\n }\n case 'float64': {\n return new Float64();\n }\n case 'int8': {\n return new Int8();\n }\n case 'int16': {\n return new Int16();\n }\n case 'int32': {\n return new Int32();\n }\n case 'int64': {\n return new Int64();\n }\n case 'large_binary': {\n return new LargeBinary();\n }\n case 'large_utf8': {\n return new LargeUtf8();\n }\n case 'null': {\n return new Null();\n }\n case 'time32_ms': {\n return new TimeMillisecond();\n }\n case 'time32_s': {\n return new TimeSecond();\n }\n case 'time64_us': {\n return new TimeMicrosecond();\n }\n case 'time64_ns': {\n return new TimeNanosecond();\n }\n case 'timestamp_ms': {\n return new TimestampMillisecond(column.timezone);\n }\n case 'timestamp_ns': {\n return new TimestampNanosecond(column.timezone);\n }\n case 'timestamp_s': {\n return new TimestampSecond(column.timezone);\n }\n case 'timestamp_us': {\n return new TimestampMicrosecond(column.timezone);\n }\n case 'uint8': {\n return new Uint8();\n }\n case 'uint16': {\n return new Uint16();\n }\n case 'uint32': {\n return new Uint32();\n }\n case 'uint64': {\n return new Uint64();\n }\n case 'utf8': {\n return new Utf8();\n }\n }\n return unsupportedNativeArrowType(column.type);\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 data: requiredTypedView(column, ctor, retainedBuffers),\n length: column.length,\n nullBitmap,\n nullCount: column.nullCount,\n type,\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 assertBufferByteLength(column, 'data', buffer, column.length, ctor.BYTES_PER_ELEMENT);\n retainedBuffers.push(buffer);\n return new ctor(buffer.buffer, buffer.byteOffset, column.length);\n}\n\nfunction requiredOffsets(column: NativeArrowColumn, retainedBuffers: Buffer[]): Int32Array {\n const buffer = requireBuffer(column, 'offsets');\n assertBufferByteLength(\n column,\n 'offsets',\n buffer,\n column.length + 1,\n Int32Array.BYTES_PER_ELEMENT,\n );\n retainedBuffers.push(buffer);\n return new Int32Array(buffer.buffer, buffer.byteOffset, column.length + 1);\n}\n\nfunction requiredLargeOffsets(column: NativeArrowColumn, retainedBuffers: Buffer[]): BigInt64Array {\n const buffer = requireBuffer(column, 'offsets');\n assertBufferByteLength(\n column,\n 'offsets',\n buffer,\n column.length + 1,\n BigInt64Array.BYTES_PER_ELEMENT,\n );\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 if (byteLength !== undefined) {\n assertBufferByteLength(column, 'data', buffer, byteLength, 1);\n }\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 assertBufferByteLength(\n column: NativeArrowColumn,\n property: 'data' | 'offsets',\n buffer: Buffer,\n elements: number,\n bytesPerElement: number,\n): void {\n if (!Number.isSafeInteger(elements) || elements < 0) {\n throw new Error(\n `native Arrow column ${column.name} has invalid ${property} element count: ${elements}`,\n );\n }\n const requiredBytes = elements * bytesPerElement;\n if (!Number.isSafeInteger(requiredBytes) || buffer.byteLength < requiredBytes) {\n throw new Error(\n `native Arrow column ${column.name} ${property} buffer is too small: ` +\n `expected at least ${requiredBytes} bytes, got ${buffer.byteLength}`,\n );\n }\n}\n\nfunction requireBuffer(column: NativeArrowColumn, property: 'data' | 'offsets'): 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","import type { BackendKind, FormatKind } from './types';\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","/**\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}$/u;\nconst BBG_DATE_RE = /^\\d{8}$/u;\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]|$)/u;\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(`Cannot convert ${typeof value} value ${String(value)} to a Date.`);\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.replaceAll(/[-/]/gu, '');\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(value: DateTimeLike | 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 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 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 ? napiError.message : typeof napiError === 'string' ? napiError : '';\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 ([^:]+)::([^ (]+)/u.exec(msg);\n if (serviceOpMatch !== null) {\n options.service = serviceOpMatch[1];\n options.operation = serviceOpMatch[2];\n }\n const requestIdMatch = /\\[request_id=([^\\]]+)\\]/u.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 '([^']+)'\\?\\)/u.exec(msg);\n if (suggestionMatch !== null) {\n options.suggestion = suggestionMatch[1];\n }\n return options;\n}\n","export const nativeBinaryName = 'napi_xbbg.node';\n\nexport const nativePackageFiles = Object.freeze([\n 'index.js',\n 'index.d.ts',\n 'README.md',\n 'LICENSE',\n 'package.json',\n nativeBinaryName,\n] as const);\n\nexport const nativePackageDescriptors = Object.freeze({\n 'darwin-arm64': Object.freeze({\n binaryName: nativeBinaryName,\n cpu: 'arm64',\n files: nativePackageFiles,\n key: 'darwin-arm64',\n os: 'darwin',\n packageDir: 'packages/xbbg-core-darwin-arm64',\n packageName: '@xbbg/core-darwin-arm64',\n }),\n 'linux-x64': Object.freeze({\n binaryName: nativeBinaryName,\n cpu: 'x64',\n files: nativePackageFiles,\n key: 'linux-x64',\n os: 'linux',\n packageDir: 'packages/xbbg-core-linux-x64',\n packageName: '@xbbg/core-linux-x64',\n }),\n 'win32-x64': Object.freeze({\n binaryName: nativeBinaryName,\n cpu: 'x64',\n files: nativePackageFiles,\n key: 'win32-x64',\n os: 'win32',\n packageDir: 'packages/xbbg-core-win32-x64',\n packageName: '@xbbg/core-win32-x64',\n }),\n} as const);\n\nexport type PlatformKey = keyof typeof nativePackageDescriptors;\nexport type NativePackageDescriptor = (typeof nativePackageDescriptors)[PlatformKey];\nexport type NativePackageName = NativePackageDescriptor['packageName'];\n\nexport const platformPackages = Object.freeze({\n 'darwin-arm64': nativePackageDescriptors['darwin-arm64'].packageName,\n 'linux-x64': nativePackageDescriptors['linux-x64'].packageName,\n 'win32-x64': nativePackageDescriptors['win32-x64'].packageName,\n}) satisfies Readonly<{ [K in PlatformKey]: (typeof nativePackageDescriptors)[K]['packageName'] }>;\n\nexport function nativePackageForKey(key: string): NativePackageDescriptor | null {\n return (\n (nativePackageDescriptors as Readonly<Record<string, NativePackageDescriptor | undefined>>)[\n key\n ] ?? null\n );\n}\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 { createRequire } from 'node:module';\nimport path from 'node:path';\n\nimport { nativePackageForKey, platformKey } from './platform-map';\nimport type { NativePackageDescriptor } 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\ninterface NativeResolverBaseOptions {\n readonly repoRoot: string;\n readonly requirePackage: (id: string) => unknown;\n readonly exists: (target: string) => boolean;\n}\n\ninterface SupportedNativeResolverOptions extends NativeResolverBaseOptions {\n readonly nativePackage: NativePackageDescriptor;\n}\n\ninterface UnsupportedNativeResolverOptions extends NativeResolverBaseOptions {\n readonly key: string;\n readonly nativePackage: null;\n}\n\nexport type NativeResolverOptions =\n | SupportedNativeResolverOptions\n | UnsupportedNativeResolverOptions;\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 TypeError(`Invalid native package ${packageName}: binaryPath must be a string`);\n }\n return resolved;\n}\n\nfunction localPackageIndex(repoRoot: string, packageDir: string): string {\n return path.join(repoRoot, packageDir, '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 (error) {\n if (isOptionalPackageMissing(error, packageName)) {\n return null;\n }\n throw error;\n }\n}\n\nfunction resolveLocalPackage(\n repoRoot: string,\n nativePackage: NativePackageDescriptor,\n requirePackage: (id: string) => unknown,\n existsFile: (target: string) => boolean,\n): NativePackageResolution | null {\n const localIndex = localPackageIndex(repoRoot, nativePackage.packageDir);\n if (!existsFile(localIndex)) {\n return null;\n }\n\n const resolved = validateNativePackage(nativePackage.packageName, requirePackage(localIndex));\n if (!existsFile(resolved.binaryPath)) {\n throw new Error(\n `Invalid native package ${nativePackage.packageName}: binaryPath does not exist: ${resolved.binaryPath}`,\n );\n }\n return resolved;\n}\n\nexport function resolveNativeAddonCore(options: NativeResolverOptions): NativeAddonResolution {\n const { nativePackage, repoRoot, requirePackage, exists: existsFile } = options;\n if (nativePackage === null) {\n return { binaryPath: null, key: options.key, packageName: null };\n }\n\n const { key, packageName } = nativePackage;\n const installed = resolveInstalledPackage(packageName, requirePackage, existsFile);\n if (installed !== null) {\n return { binaryPath: installed.binaryPath, key, packageName };\n }\n\n const local = resolveLocalPackage(repoRoot, nativePackage, requirePackage, existsFile);\n if (local !== null) {\n return { binaryPath: local.binaryPath, key, packageName };\n }\n\n return { binaryPath: null, key, packageName };\n}\n\nexport function resolveNativeAddon(repoRoot: string): NativeAddonResolution {\n const key = platformKey();\n const nativePackage = nativePackageForKey(key);\n const requirePackage = (id: string): unknown => nodeRequire(id) as unknown;\n if (nativePackage === null) {\n return resolveNativeAddonCore({ exists, key, nativePackage, repoRoot, requirePackage });\n }\n return resolveNativeAddonCore({ exists, nativePackage, repoRoot, requirePackage });\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nconst BLPAPI_RUNTIME_NAMES = Object.freeze([\n 'blpapi3_64.dll',\n 'blpapi3_32.dll',\n 'libblpapi3.dylib',\n 'libblpapi3_64.so',\n 'libblpapi3.so',\n]);\n\nconst WINDOWS_PATH_SEPARATOR = ';';\n\ntype Exists = (target: string) => boolean;\ntype ReadDir = (target: string) => fs.Dirent[];\n\nexport interface RuntimeSearchPathOptions {\n readonly env?: NodeJS.ProcessEnv;\n readonly exists?: Exists;\n readonly platform?: NodeJS.Platform;\n readonly readDir?: ReadDir;\n readonly repoRoot?: string;\n}\n\nconst readDirectory: ReadDir = (target) => fs.readdirSync(target, { withFileTypes: true });\n\nfunction windowsPathKey(value: string): string {\n return path.win32.normalize(value).toLowerCase();\n}\n\nfunction candidateKey(value: string, platform: NodeJS.Platform): string {\n return platform === 'win32' ? windowsPathKey(value) : path.resolve(value);\n}\n\nfunction pushUnique(\n candidates: string[],\n seen: Set<string>,\n candidate: string | undefined,\n platform: NodeJS.Platform,\n): void {\n if (candidate === undefined || candidate.length === 0) {\n return;\n }\n const key = candidateKey(candidate, platform);\n if (seen.has(key)) {\n return;\n }\n seen.add(key);\n candidates.push(candidate);\n}\n\nfunction windowsDrive(value: string | undefined): string {\n if (value !== undefined && /^[A-Za-z]:/u.test(value)) {\n return value.slice(0, 2);\n }\n return 'C:';\n}\n\nexport function collectWindowsDapiRootCandidates(env: NodeJS.ProcessEnv = process.env): string[] {\n const candidates: string[] = [];\n const seen = new Set<string>();\n const add = (candidate: string | undefined): void => {\n pushUnique(candidates, seen, candidate, 'win32');\n };\n\n const systemDrive = windowsDrive(env.SystemDrive);\n const systemDriveRoot = `${systemDrive}\\\\`;\n add(path.win32.join(systemDriveRoot, 'blp', 'DAPI'));\n if (systemDrive.toLowerCase() !== 'c:') {\n add(path.win32.join('C:\\\\', 'blp', 'DAPI'));\n }\n\n const programFilesRoots = [\n env.ProgramFiles,\n path.win32.join(systemDriveRoot, 'Program Files'),\n env['ProgramFiles(x86)'],\n path.win32.join(systemDriveRoot, 'Program Files (x86)'),\n ];\n for (const root of programFilesRoots) {\n add(root === undefined ? undefined : path.win32.join(root, 'Bloomberg', 'Blp', 'DAPI'));\n }\n\n const localAppData =\n env.LOCALAPPDATA ??\n (env.USERPROFILE === undefined\n ? undefined\n : path.win32.join(env.USERPROFILE, 'AppData', 'Local'));\n if (localAppData !== undefined) {\n add(path.win32.join(localAppData, 'Bloomberg', 'DAPI'));\n add(path.win32.join(localAppData, 'Bloomberg', 'Blp', 'DAPI'));\n }\n\n return candidates;\n}\n\nexport function containsBlpapiRuntime(dir: string, exists: Exists = fs.existsSync): boolean {\n if (dir.length === 0) {\n return false;\n }\n return BLPAPI_RUNTIME_NAMES.some((name) => exists(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\nexport function 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) {\n return -1;\n }\n if (rightParts !== null) {\n return 1;\n }\n return right.localeCompare(left);\n}\n\nexport function pushSdkRuntimeCandidates(candidates: string[], sdkRoot: string): void {\n const resolved = path.resolve(sdkRoot);\n candidates.push(\n resolved,\n path.join(resolved, 'bin'),\n path.join(resolved, 'lib'),\n path.join(resolved, 'Lib'),\n path.join(resolved, 'lib', 'win64'),\n path.join(resolved, 'lib', 'win32'),\n );\n}\n\nfunction addSdkRuntimeRoot(add: (candidate: string | undefined) => void, sdkRoot: string): void {\n const sdkCandidates: string[] = [];\n pushSdkRuntimeCandidates(sdkCandidates, sdkRoot);\n for (const candidate of sdkCandidates) {\n add(candidate);\n }\n}\n\nexport function resolveVendorSdkRoot(\n repoRoot: string,\n exists: Exists = fs.existsSync,\n readDir: ReadDir = readDirectory,\n): string | null {\n const vendorDir = path.join(repoRoot, 'vendor', 'blpapi-sdk');\n if (!exists(vendorDir)) {\n return null;\n }\n const candidates = [vendorDir];\n for (const entry of readDir(vendorDir)) {\n if (entry.isDirectory()) {\n candidates.push(path.join(vendorDir, entry.name));\n }\n }\n candidates.sort(compareSdkRoots);\n return (\n candidates.find((candidate) => {\n const dirs = [\n candidate,\n path.join(candidate, 'bin'),\n path.join(candidate, 'lib'),\n path.join(candidate, 'Lib'),\n ];\n return dirs.some((dir) => containsBlpapiRuntime(dir, exists));\n }) ?? null\n );\n}\n\nexport function collectRuntimeSearchCandidates(options: RuntimeSearchPathOptions = {}): string[] {\n const env = options.env ?? process.env;\n const exists = options.exists ?? fs.existsSync;\n const platform = options.platform ?? process.platform;\n const readDir = options.readDir ?? readDirectory;\n const repoRoot = options.repoRoot ?? path.resolve(__dirname, '..', '..');\n const candidates: string[] = [];\n const seen = new Set<string>();\n const add = (candidate: string | undefined): void => {\n pushUnique(candidates, seen, candidate, platform);\n };\n\n const libDir = env.BLPAPI_LIB_DIR;\n if (libDir !== undefined && libDir.length > 0) {\n add(path.resolve(libDir));\n }\n\n const root = env.BLPAPI_ROOT;\n if (root !== undefined && root.length > 0) {\n addSdkRuntimeRoot(add, root);\n }\n\n const devRoot = env.XBBG_DEV_SDK_ROOT;\n if (devRoot !== undefined && devRoot.length > 0) {\n const resolved = path.isAbsolute(devRoot) ? devRoot : path.resolve(repoRoot, devRoot);\n addSdkRuntimeRoot(add, resolved);\n }\n\n const vendorRoot = resolveVendorSdkRoot(repoRoot, exists, readDir);\n if (vendorRoot !== null) {\n addSdkRuntimeRoot(add, vendorRoot);\n }\n\n if (platform === 'win32') {\n for (const dapiRoot of collectWindowsDapiRootCandidates(env)) {\n add(dapiRoot);\n }\n }\n\n return candidates;\n}\n\nfunction prependWindowsPath(env: NodeJS.ProcessEnv, candidate: string): void {\n const key = Object.keys(env).find((envKey) => envKey.toUpperCase() === 'PATH') ?? 'PATH';\n const currentPath = env[key] ?? '';\n const currentParts = currentPath.split(WINDOWS_PATH_SEPARATOR).filter((part) => part.length > 0);\n const candidatePathKey = windowsPathKey(candidate);\n if (currentParts.some((part) => windowsPathKey(part) === candidatePathKey)) {\n return;\n }\n env[key] =\n currentPath.length > 0 ? `${candidate}${WINDOWS_PATH_SEPARATOR}${currentPath}` : candidate;\n}\n\nexport function configureRuntimeSearchPath(options: RuntimeSearchPathOptions = {}): string | null {\n const env = options.env ?? process.env;\n const exists = options.exists ?? fs.existsSync;\n const platform = options.platform ?? process.platform;\n if (platform !== 'win32') {\n return null;\n }\n\n for (const candidate of collectRuntimeSearchCandidates(options)) {\n if (!containsBlpapiRuntime(candidate, exists)) {\n continue;\n }\n prependWindowsPath(env, candidate);\n return candidate;\n }\n\n return null;\n}\n","/* oxlint-disable import/max-dependencies -- public entry point intentionally consolidates native and helper modules. */\nimport type { Table } from 'apache-arrow';\n\nimport { tableFromIPC } from 'apache-arrow';\nimport fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport path from 'node:path';\n\nimport { tableFromNativeArrowBatch } from './arrow-zero-copy';\nimport { Backend, Format } from './backends';\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 {\n BlpError,\n BlpInternalError,\n BlpRequestError,\n BlpSessionError,\n BlpTimeoutError,\n BlpValidationError,\n wrapError,\n} from './errors';\nimport type {\n NativeAddon,\n NativeArrowZeroCopyBatch,\n NativeEngine,\n NativeSubscription,\n NativeSubscriptionUpdate,\n} from './napi';\nimport { resolveNativeAddon } from './native/resolve-native';\nimport { configureRuntimeSearchPath } from './runtime-search-path';\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 DividendYieldOptions,\n EngineConfig,\n EtfHoldingsOptions,\n ExchangeInfoResult,\n ExchangeOverrideInput,\n FieldInfo,\n FormatKind,\n FuturesCandidate,\n FuturesResolveOptions,\n FuturesCurveOptions,\n FxPairInfo,\n MarketRule,\n OverridesMap,\n IndexMembersOptions,\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 VolFieldSpec,\n VolSurfaceOptions,\n VolSurfacePreset,\n YasOptions,\n} from './types';\n\nconst nodeRequire = createRequire(__filename);\n\ninterface PackageJsonShape {\n readonly version: string;\n}\n\ninterface PolarsModule {\n readIPC(buffer: Buffer): unknown;\n}\n\nfunction parsePackageJsonShape(value: unknown): PackageJsonShape {\n if (isPlainObject(value) && typeof value.version === 'string') {\n return { version: value.version };\n }\n throw new TypeError('@xbbg/core package.json is missing a string version field');\n}\n\nfunction isNativeAddon(value: unknown): value is NativeAddon {\n return (\n isPlainObject(value) &&\n typeof value.JsEngine === 'function' &&\n typeof value.getLogLevel === 'function' &&\n typeof value.setLogLevel === 'function'\n );\n}\n\nfunction requireNativeAddon(modulePath: string): NativeAddon {\n const loaded: unknown = nodeRequire(modulePath);\n if (isNativeAddon(loaded)) {\n return loaded;\n }\n throw new TypeError(`Native addon ${modulePath} does not expose the expected @xbbg/core surface`);\n}\n\nfunction isPolarsModule(value: unknown): value is PolarsModule {\n return isPlainObject(value) && typeof value.readIPC === 'function';\n}\n\nfunction requirePolarsModule(): PolarsModule {\n const loaded: unknown = nodeRequire('nodejs-polars');\n if (isPolarsModule(loaded)) {\n return loaded;\n }\n throw new TypeError('nodejs-polars did not expose readIPC(buffer)');\n}\n\nfunction isBdhOptionsInput(value: DateLike | BdhOptions | undefined): value is BdhOptions {\n return isPlainObject(value) && !(value instanceof Date) && !hasToJSDate(value);\n}\n\nfunction isBdibOptionsInput(\n value: DateTimeLike | BdibOptions | number | undefined,\n): value is BdibOptions {\n return isPlainObject(value) && !(value instanceof Date) && !hasToJSDate(value);\n}\n\nconst packageJson = parsePackageJsonShape(nodeRequire('../package.json'));\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 requireNativeAddon(candidate);\n }\n }\n\n const { key, packageName, binaryPath } = resolveNativeAddon(root);\n if (binaryPath !== null) {\n return requireNativeAddon(binaryPath);\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 ───────────────────────────────────────────────────────────\nexport { Backend, Format };\n\nexport const 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\nexport const 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\nexport const 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 ado: 'adoStudyAttributes',\n adx: 'dmiStudyAttributes',\n al: 'alStudyAttributes',\n atr: 'atrStudyAttributes',\n bb: 'bollStudyAttributes',\n boll: 'bollStudyAttributes',\n bs: 'bsStudyAttributes',\n chko: 'chkoStudyAttributes',\n cmci: 'cmciStudyAttributes',\n dmi: 'dmiStudyAttributes',\n ema: 'emavgStudyAttributes',\n emavg: 'emavgStudyAttributes',\n etd: 'etdStudyAttributes',\n fear_greed: 'fgStudyAttributes',\n fg: 'fgStudyAttributes',\n goc: 'gocStudyAttributes',\n hurst: 'hurstStudyAttributes',\n ichimoku: 'gocStudyAttributes',\n ipmavg: 'ipmavgStudyAttributes',\n keltner: 'kltnStudyAttributes',\n kltn: 'kltnStudyAttributes',\n macd: 'macdStudyAttributes',\n mae: 'maeStudyAttributes',\n mao: 'maoStudyAttributes',\n maxmin: 'maxminStudyAttributes',\n mom: 'momentumStudyAttributes',\n momentum: 'momentumStudyAttributes',\n or: 'orStudyAttributes',\n parabolic: 'ptpsStudyAttributes',\n pcr: 'pcrStudyAttributes',\n pd: 'pdStudyAttributes',\n pivot: 'pivotStudyAttributes',\n ptps: 'ptpsStudyAttributes',\n rex: 'rexStudyAttributes',\n roc: 'rocStudyAttributes',\n rsi: 'rsiStudyAttributes',\n rv: 'rvStudyAttributes',\n sar: 'ptpsStudyAttributes',\n sma: 'smavgStudyAttributes',\n smavg: 'smavgStudyAttributes',\n stoch: 'tasStudyAttributes',\n tas: 'tasStudyAttributes',\n te: 'teStudyAttributes',\n tma: 'tmavgStudyAttributes',\n tmavg: 'tmavgStudyAttributes',\n trender: 'trenderStudyAttributes',\n tvat: 'tvatStudyAttributes',\n vat: 'vatStudyAttributes',\n vma: 'vmavgStudyAttributes',\n vmavg: 'vmavgStudyAttributes',\n williams: 'wlprStudyAttributes',\n wlpr: 'wlprStudyAttributes',\n wma: 'wmavgStudyAttributes',\n wmavg: 'wmavgStudyAttributes',\n});\n\ntype StudyParams = Record<string, PrimitiveValue | undefined>;\n\nconst TA_DEFAULTS: Readonly<Record<string, Readonly<StudyParams>>> = Object.freeze({\n atrStudyAttributes: Object.freeze({\n maType: 'Simple',\n period: 14,\n priceSourceHigh: 'PX_HIGH',\n priceSourceLow: 'PX_LOW',\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 emavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n macdStudyAttributes: Object.freeze({\n maPeriod1: 12,\n maPeriod2: 26,\n sigPeriod: 9,\n priceSourceClose: 'PX_LAST',\n }),\n rsiStudyAttributes: Object.freeze({ period: 14, priceSourceClose: 'PX_LAST' }),\n smavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\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 tmavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n vmavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n wmavgStudyAttributes: Object.freeze({ period: 20, priceSourceClose: 'PX_LAST' }),\n});\n\nconst MKTDATA_SERVICE = '//blp/mktdata';\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(obj: OverridesMap | undefined): 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 encodeVolFieldSpec(field: string, spec: VolFieldSpec | undefined): string {\n if (spec === undefined) {\n return field;\n }\n return [\n field,\n spec.metric ?? '',\n spec.tenor ?? '',\n spec.pointType ?? '',\n spec.point === undefined ? '' : String(spec.point),\n ].join('|');\n}\n\nfunction isVolFieldSpecMap(\n fields: VolSurfaceOptions['fields'],\n): fields is Record<string, VolFieldSpec> {\n return fields !== undefined && !Array.isArray(fields);\n}\n\nfunction normalizeVolFieldSpecs(fields: VolSurfaceOptions['fields'] | undefined): string[] | null {\n if (fields === undefined) {\n return null;\n }\n if (!isVolFieldSpecMap(fields)) {\n return fields.map((field) => toRequestString(field));\n }\n return Object.entries(fields).map(([field, spec]) => encodeVolFieldSpec(field, spec));\n}\n\nfunction isVolSurfacePresetArray(\n preset: VolSurfaceOptions['preset'],\n): preset is readonly VolSurfacePreset[] {\n return Array.isArray(preset);\n}\nfunction normalizeVolPresets(preset: VolSurfaceOptions['preset'] | undefined): string[] | null {\n if (preset === undefined || preset === null) {\n return null;\n }\n return isVolSurfacePresetArray(preset) ? [...preset] : [preset];\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;\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\n ? subscriptionOptions\n : 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('configure expects either a config object or host/port arguments');\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 end: `${day}T23:59:59`,\n start: `${day}T00:00:00`,\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().replaceAll(/-/gu, '_').replaceAll(/ /gu, '_');\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 = typeof study === 'string' ? { studyType: study } : { ...study };\n const studyType =\n 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(\n stringOrUndef(kwargs.periodicitySelection) ??\n stringOrUndef(kwargs.periodicity) ??\n rawStudy.calcInterval ??\n options.periodicity ??\n 'DAILY',\n ).toUpperCase();\n const interval = 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', { configurable: true, value: err });\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 = requirePolarsModule();\n return polarsModule;\n } catch (error) {\n throw cachePolarsLoadError(error);\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 [...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 void (async (): Promise<void> => {\n try {\n const engine = await existing;\n engine.signalShutdown();\n } catch {\n /* Ignore shutdown errors */\n }\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) {\n return null;\n }\n const value = this.update.values[index] ?? null;\n const kind = this.update.valueKinds[index] ?? 'unknown';\n if (value === null) {\n return null;\n }\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) {\n return null;\n }\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) {\n return null;\n }\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> = { timestampUs: this.timestampUs, topic: this.topic };\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public async add(tickers: readonly string[]): Promise<void> {\n try {\n await this.inner.add(tickers);\n } catch (error) {\n throw wrapError(error);\n }\n }\n\n public async remove(tickers: readonly string[]): Promise<void> {\n try {\n await this.inner.remove(tickers);\n } catch (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public static withConfig(config: EngineConfig = {}): Engine {\n const maybeEngine: unknown = Object.create(Engine.prototype);\n if (!(maybeEngine instanceof Engine)) {\n throw new TypeError('Failed to allocate Engine instance');\n }\n const engine = maybeEngine;\n try {\n engine.inner = native.JsEngine.withConfig(config);\n } catch (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public async requestRaw(params: RequestInput): Promise<Buffer> {\n try {\n return await this.inner.request(params);\n } catch (error) {\n throw wrapError(error);\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 backend: options.backend,\n extractor: 'refdata',\n fields,\n format: options.format,\n includeSecurityErrors: Boolean(options.includeSecurityErrors),\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'ReferenceDataRequest',\n overrides: mapObjectToPairs(options.overrides),\n securities: tickers,\n service: '//blp/refdata',\n validateFields: options.validateFields,\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 backend: options.backend,\n extractor: 'bulk',\n fields,\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'ReferenceDataRequest',\n overrides: mapObjectToPairs(options.overrides),\n securities: tickers,\n service: '//blp/refdata',\n validateFields: options.validateFields,\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 backend: options.backend,\n endDate: formatDate(options.end),\n extractor: 'histdata',\n fields,\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'HistoricalDataRequest',\n overrides: mapObjectToPairs(options.overrides),\n securities: tickers,\n service: '//blp/refdata',\n startDate: formatDate(options.start),\n validateFields: options.validateFields,\n });\n }\n\n public async bdib(ticker: string, options: BdibOptions = {}): Promise<unknown> {\n return await this.request({\n backend: options.backend,\n endDatetime: formatDateTime(options.end),\n eventType: options.eventType ?? 'TRADE',\n extractor: 'intraday_bar',\n interval: options.interval ?? 1,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'IntradayBarRequest',\n outputTz: options.outputTz,\n requestTz: options.requestTz,\n security: ticker,\n service: '//blp/refdata',\n startDatetime: formatDateTime(options.start),\n });\n }\n\n public async bdtick(ticker: string, options: BdtickOptions = {}): Promise<unknown> {\n return await this.request({\n backend: options.backend,\n endDatetime: formatDateTime(options.end),\n eventTypes: options.eventTypes ?? ['TRADE'],\n extractor: 'intraday_tick',\n kwargs: buildBdtickKwargs(options),\n operation: 'IntradayTickRequest',\n outputTz: options.outputTz,\n requestTz: options.requestTz,\n security: ticker,\n service: '//blp/refdata',\n startDatetime: formatDateTime(options.start),\n });\n }\n\n public async bql(query: string, options: BqlOptions = {}): Promise<unknown> {\n return await this.request({\n backend: options.backend,\n elements: [{ key: 'expression', value: toRequestString(query) }],\n extractor: 'bql',\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'sendQuery',\n service: '//blp/bqlsvc',\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 backend: options.backend,\n elements,\n extractor: 'generic',\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'BeqsRequest',\n overrides: mapObjectToPairs(overrides),\n service: '//blp/refdata',\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 backend: options.backend,\n elements: mapObjectToPairs(elements),\n extractor: 'bsrch',\n format: options.format,\n operation: 'ExcelGetGridRequest',\n service: '//blp/exrsvc',\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 backend: options.backend,\n elements: buildTaRequest(ticker, study, options),\n extractor: 'generic',\n format: options.format,\n operation: 'studyRequest',\n service: '//blp/tasvc',\n });\n }\n\n public async bflds(options: BfldsOptions = {}): Promise<unknown> {\n if (options.searchSpec !== undefined) {\n return await this.request({\n backend: options.backend,\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'FieldSearchRequest',\n searchSpec: toRequestString(options.searchSpec),\n service: '//blp/apiflds',\n });\n }\n const fields = toStringArray(options.fields);\n return await this.request({\n backend: options.backend,\n fieldIds: fields,\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'FieldInfoRequest',\n service: '//blp/apiflds',\n });\n }\n\n public async blkp(query: string, options: BlkpOptions = {}): Promise<unknown> {\n return await this.request({\n backend: options.backend,\n elements: [{ key: 'query', value: toRequestString(query) }],\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'instrumentListRequest',\n service: '//blp/instruments',\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 backend: options.backend,\n fields: Array.isArray(fields) ? fields : [toRequestString(fields)],\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'PortfolioDataRequest',\n overrides: mapObjectToPairs(options.overrides),\n security: toRequestString(portfolio),\n service: '//blp/refdata',\n });\n }\n\n public async bcurves(ticker: string, options: RequestOptions = {}): Promise<unknown> {\n return await this.request({\n backend: options.backend,\n elements: [{ key: 'query', value: toRequestString(ticker) }],\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'curveListRequest',\n service: '//blp/instruments',\n });\n }\n\n public async bgovts(ticker: string, options: RequestOptions = {}): Promise<unknown> {\n return await this.request({\n backend: options.backend,\n elements: [{ key: 'query', value: toRequestString(ticker) }],\n format: options.format,\n kwargs: mapObjectToPairs(options.kwargs),\n operation: 'govtListRequest',\n service: '//blp/instruments',\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(service: string, operation: string): 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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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: toStringArray(fields),\n ...options,\n });\n }\n\n public async fieldSearch(searchSpec: string, options: BfldsOptions = {}): 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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public async preferreds(equityTicker: string, options: PreferredsOptions = {}): 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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public async futuresCurve(\n genTicker: string,\n options: FuturesCurveOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this.inner.recipeFuturesCurve(\n toRequestString(genTicker),\n options.asof === undefined ? undefined : (formatDate(options.asof) ?? ''),\n options.chainField ?? undefined,\n options.fields !== undefined ? toStringArray(options.fields) : null,\n options.maxContracts ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public async dividendYield(\n tickers: string | readonly string[],\n startDate: DateLike,\n endDate: DateLike,\n options: DividendYieldOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this.inner.recipeDividendYield(\n toStringArray(tickers),\n formatDate(startDate) ?? '',\n formatDate(endDate) ?? '',\n options.dividendTypes !== undefined ? toStringArray(options.dividendTypes) : null,\n options.windowDays ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n\n public async etfHoldings(etfTicker: string, options: EtfHoldingsOptions = {}): 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 (error) {\n throw wrapError(error);\n }\n }\n\n public async volSurface(\n tickers: string | readonly string[],\n startDate: DateLike,\n endDate: DateLike,\n options: VolSurfaceOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this.inner.recipeVolSurface(\n toStringArray(tickers),\n formatDate(startDate) ?? '',\n formatDate(endDate) ?? '',\n normalizeVolPresets(options.preset ?? 'MONEYNESS_30D'),\n normalizeVolFieldSpecs(options.fields),\n options.asDecimal ?? true,\n options.includeDerived ?? false,\n options.riskFreeRate ?? undefined,\n options.dividendYieldField ?? undefined,\n );\n return ipcToBackend(buffer, backend);\n } catch (error) {\n throw wrapError(error);\n }\n }\n\n public async indexMembers(index: string, options: IndexMembersOptions = {}): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this.inner.recipeIndexMembers(\n toRequestString(index),\n options.field ?? undefined,\n options.asof === undefined ? undefined : (formatDate(options.asof) ?? ''),\n );\n return ipcToBackend(buffer, backend);\n } catch (error) {\n throw wrapError(error);\n }\n }\n\n public async resolveIsins(\n isins: string | readonly string[],\n options: RecipeBackendOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this.inner.recipeResolveIsins(toStringArray(isins));\n return ipcToBackend(buffer, backend);\n } catch (error) {\n throw wrapError(error);\n }\n }\n\n public async issuerIsins(\n bondIsins: string | readonly string[],\n options: RecipeBackendOptions = {},\n ): Promise<unknown> {\n const backend = normalizeBackend(options.backend);\n try {\n const buffer = await this.inner.recipeIssuerIsins(toStringArray(bondIsins));\n return ipcToBackend(buffer, backend);\n } catch (error) {\n throw wrapError(error);\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 (error) {\n throw wrapError(error);\n }\n }\n}\n\n// ── Top-level wrappers ──────────────────────────────────────────────────\n\nexport async function connect(config?: EngineConfig): Promise<Engine> {\n return await Promise.resolve(config === undefined ? new Engine() : Engine.withConfig(config));\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 (isBdhOptionsInput(start)) {\n if (end !== undefined) {\n throw new TypeError('abdh options object cannot be combined with a positional end date');\n }\n return await engine.bdh(toStringArray(tickers), toStringArray(fields), start);\n }\n return await engine.bdh(toStringArray(tickers), toStringArray(fields), {\n ...options,\n end,\n start,\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(toStringArray(tickers), toStringArray(fields), normalizedOptions);\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 if (isBdibOptionsInput(dt) && interval === 1 && Object.keys(options).length === 0) {\n return await engine.bdib(toRequestString(ticker), dt);\n }\n const normalizedOptions: BdibOptions = isBdibOptionsInput(interval)\n ? { ...interval }\n : { ...options, interval: typeof interval === 'number' ? interval : 1 };\n if (normalizedOptions.start === undefined && normalizedOptions.end === undefined) {\n if (dt === undefined || isBdibOptionsInput(dt)) {\n throw new TypeError('abdib requires dt or explicit start/end options');\n }\n const range = fullDayRange(dt);\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, end, start });\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 abdh,\n abdib,\n abdp,\n abds,\n abdtick,\n asubscribe,\n bdh,\n bdib,\n bdp,\n bds,\n bdtick,\n subscribe,\n});\n\nexport const ext = Object.freeze({\n buildCorporateBondsQuery: native.extBuildCorporateBondsQuery,\n\n buildEarningHeaderRename: native.extBuildEarningHeaderRename,\n buildEtfHoldingsQuery: native.extBuildEtfHoldingsQuery,\n\n buildFuturesTicker: native.extBuildFuturesTicker,\n buildFxPair: native.extBuildFxPair,\n\n buildPreferredsQuery: native.extBuildPreferredsQuery,\n buildYasOverrides: native.extBuildYasOverrides,\n calculateLevelPercentages: native.extCalculateLevelPercentages,\n cdx: Object.freeze({\n acdx_info: acdxInfo,\n acdx_pricing: acdxPricing,\n acdx_risk: acdxRisk,\n }),\n cdxGenToSpecific: native.extCdxGenToSpecific,\n\n clearExchangeOverride: native.extClearExchangeOverride,\n contractIndex: native.extContractIndex,\n currenciesNeedingConversion: native.extCurrenciesNeedingConversion,\n defaultBqrDatetimes: native.extDefaultBqrDatetimes,\n defaultTurnoverDates: native.extDefaultTurnoverDates,\n\n deriveSessions: native.extDeriveSessions,\n filterCandidatesByCycle: native.extFilterCandidatesByCycle,\n filterEquityTickers: native.extFilterEquityTickers,\n\n filterValidContracts: native.extFilterValidContracts,\n fmtDate: native.extFmtDate,\n generateFuturesCandidates: native.extGenerateFuturesCandidates,\n\n getDvdCols: native.extGetDvdCols,\n getDvdType: native.extGetDvdType,\n\n getDvdTypes: native.extGetDvdTypes,\n getEtfCols: native.extGetEtfCols,\n getExchangeOverride: native.extGetExchangeOverride,\n getFuturesMonths: native.extGetFuturesMonths,\n getMarketRule: native.extGetMarketRule,\n getMonthCode: native.extGetMonthCode,\n getMonthName: native.extGetMonthName,\n\n inferTimezone: native.extInferTimezone,\n\n isLongFormat: native.extIsLongFormat,\n isSpecificContract: native.extIsSpecificContract,\n\n listExchangeOverrides: native.extListExchangeOverrides,\n normalizeTickers: native.extNormalizeTickers,\n parseCdxTicker: native.extParseCdxTicker,\n\n parseDate: native.extParseDate,\n parseTicker: native.extParseTicker,\n\n pivotToWide: native.extPivotToWide,\n previousCdxSeries: native.extPreviousCdxSeries,\n renameDividendColumns: native.extRenameDividendColumns,\n renameEtfColumns: native.extRenameEtfColumns,\n sameCurrency: native.extSameCurrency,\n sessionTimesToUtc: native.extSessionTimesToUtc,\n setExchangeOverride: native.extSetExchangeOverride,\n validateGenericTicker: native.extValidateGenericTicker,\n});\n\nexport function version(): string {\n return packageJson.version;\n}\n\nexport const { setLogLevel } = native;\nexport const { getLogLevel } = native;\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 DividendYieldOptions,\n EngineConfig,\n EtfHoldingsOptions,\n ExchangeInfoResult,\n ExchangeOverrideInput,\n FieldInfo,\n FormatKind,\n FuturesCandidate,\n FuturesResolveOptions,\n FuturesCurveOptions,\n FxPairInfo,\n MarketRule,\n OverridesMap,\n IndexMembersOptions,\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 VolFieldSpec,\n VolSurfaceOptions,\n VolSurfacePreset,\n YasOptions,\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xbbg/core",
3
- "version": "1.2.5",
3
+ "version": "1.2.7",
4
4
  "description": "Independent Node.js client for Bloomberg-connected data workflows",
5
5
  "keywords": [
6
6
  "apache-arrow",
@@ -18,12 +18,12 @@
18
18
  ],
19
19
  "homepage": "https://xbbg.org/javascript/",
20
20
  "bugs": {
21
- "url": "https://github.com/alpha-xone/xbbg/issues"
21
+ "url": "https://github.com/xbbg-org/xbbg/issues"
22
22
  },
23
23
  "license": "Apache-2.0",
24
24
  "repository": {
25
25
  "type": "git",
26
- "url": "git+https://github.com/alpha-xone/xbbg.git",
26
+ "url": "git+https://github.com/xbbg-org/xbbg.git",
27
27
  "directory": "js-xbbg"
28
28
  },
29
29
  "files": [
@@ -65,10 +65,10 @@
65
65
  "smoke:packaged-install": "tsx ./scripts/smoke-packaged-install.ts --packed",
66
66
  "stage:native-package": "tsx ./scripts/stage-native-package.ts",
67
67
  "stamp:version": "tsx ./scripts/stamp-version.ts",
68
- "test": "vitest run test/resolve-native.test.ts",
68
+ "test": "vitest run test/resolve-native.test.ts test/runtime-search-path.test.ts",
69
69
  "test:live": "vitest run test/live.test.ts --testTimeout=120000",
70
70
  "test:smoke": "vitest run test/smoke.test.ts",
71
- "test:watch": "vitest test/resolve-native.test.ts",
71
+ "test:watch": "vitest test/resolve-native.test.ts test/runtime-search-path.test.ts",
72
72
  "typecheck": "tsc --noEmit",
73
73
  "types:attw": "tsx ./scripts/validate-packages.ts --attw"
74
74
  },
@@ -103,9 +103,9 @@
103
103
  }
104
104
  },
105
105
  "optionalDependencies": {
106
- "@xbbg/core-darwin-arm64": "1.2.5",
107
- "@xbbg/core-linux-x64": "1.2.5",
108
- "@xbbg/core-win32-x64": "1.2.5"
106
+ "@xbbg/core-darwin-arm64": "1.2.7",
107
+ "@xbbg/core-linux-x64": "1.2.7",
108
+ "@xbbg/core-win32-x64": "1.2.7"
109
109
  },
110
110
  "engines": {
111
111
  "node": ">=24"