UNPKG

@glue42/bbg-market-data

Version:

A high-level API that wraps existing Glue42 Bloomberg Bridge Market Data interop methods. The API is based on the jBloomberg open source wrapper.

65 lines (64 loc) 3.93 kB
import { __awaiter, __rest } from "tslib"; import loggerFactory from "./logger"; import genericRequestFactory from "./requests/generic-request"; import historicalDataFactory from "./requests/historical-data-request"; import referenceDataFactory from "./requests/reference-data-request"; import instrumentListFactory from "./requests/instrument-list-request"; import fieldListFactory from "./requests/field-request/field-list-request"; import fieldSearchFactory from "./requests/field-request/field-search-request"; import userEntitlementsFactory from "./requests/user-entitlements-request"; import intraDayBarFactory from "./requests/intraday-bar-request"; import intraDayTickFactory from "./requests/intraday-tick-request"; import snapshotFactory from "./requests/snapshot-request"; import mktDataSubscriptionFactory from "./requests/mkt-data-subscription"; import { SessionsManager } from "./sessions/sessions-manager"; import { MdfBridge } from "./bridge/mdf-bridge"; import { version } from "./version"; import { generateId } from "./utils"; import { Connection } from "./connection/connection"; import { ProtocolMethodsDefault } from "./constants"; const mergeProtocolMethods = (override, defaults) => { const overrides = typeof override === "function" ? override(ProtocolMethodsDefault) : {}; return Object.assign(Object.assign({}, defaults), overrides); }; export default function (interop, config) { const apiId = generateId(); const logger = loggerFactory(apiId, config); const _a = config !== null && config !== void 0 ? config : {}, { logger: _, overrideProtocolMethods } = _a, restConfig = __rest(_a, ["logger", "overrideProtocolMethods"]); logger === null || logger === void 0 ? void 0 : logger.info(`Glue42 BBG Market Data (${apiId}) v.${version}. Config: ${JSON.stringify(restConfig)}`); const protocolMethods = mergeProtocolMethods(overrideProtocolMethods, ProtocolMethodsDefault); logger === null || logger === void 0 ? void 0 : logger.info(`Protocol methods: ${JSON.stringify(protocolMethods)}`); const mdfBridge = new MdfBridge(interop, apiId, version, protocolMethods, logger); const sessionManager = new SessionsManager(mdfBridge, apiId, config === null || config === void 0 ? void 0 : config.sessionSettings, logger); const connection = new Connection(mdfBridge, config === null || config === void 0 ? void 0 : config.connectionPeriodMsecs); const factories = { createGenericRequest: genericRequestFactory(sessionManager), createHistoricalDataRequest: historicalDataFactory(sessionManager), createReferenceDataRequest: referenceDataFactory(sessionManager), createInstrumentListRequest: instrumentListFactory(sessionManager), createFieldListRequest: fieldListFactory(sessionManager), createFieldSearchRequest: fieldSearchFactory(sessionManager), createUserEntitlementsRequest: userEntitlementsFactory(sessionManager), createIntraDayBarRequest: intraDayBarFactory(sessionManager), createIntraDayTickRequest: intraDayTickFactory(sessionManager), createSnapshotRequest: snapshotFactory(sessionManager), createMarketDataRequest: mktDataSubscriptionFactory(sessionManager), }; const sessionsApi = { get all() { return sessionManager.all; }, close(session) { return sessionManager.closeSession(session); }, create(settings) { return sessionManager.createSession(settings); }, }; const ready = (() => __awaiter(this, void 0, void 0, function* () { yield mdfBridge.ready(); }))(); return Object.assign(Object.assign({ version, info: { apiId, }, ready }, factories), { sessions: sessionsApi, onConnectionStatusChanged: connection.onConnectionStatusChanged.bind(connection) }); }