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.

73 lines (72 loc) 4.25 kB
import { __assign, __awaiter, __generator, __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"; var mergeProtocolMethods = function (override, defaults) { var overrides = typeof override === "function" ? override(ProtocolMethodsDefault) : {}; return __assign(__assign({}, defaults), overrides); }; export default function (interop, config) { var _this = this; var apiId = generateId(); var logger = loggerFactory(apiId, config); var _a = config !== null && config !== void 0 ? config : {}, _ = _a.logger, overrideProtocolMethods = _a.overrideProtocolMethods, 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)); var protocolMethods = mergeProtocolMethods(overrideProtocolMethods, ProtocolMethodsDefault); logger === null || logger === void 0 ? void 0 : logger.info("Protocol methods: " + JSON.stringify(protocolMethods)); var mdfBridge = new MdfBridge(interop, apiId, version, protocolMethods, logger); var sessionManager = new SessionsManager(mdfBridge, apiId, config === null || config === void 0 ? void 0 : config.sessionSettings, logger); var connection = new Connection(mdfBridge, config === null || config === void 0 ? void 0 : config.connectionPeriodMsecs); var 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), }; var sessionsApi = { get all() { return sessionManager.all; }, close: function (session) { return sessionManager.closeSession(session); }, create: function (settings) { return sessionManager.createSession(settings); }, }; var ready = (function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, mdfBridge.ready()]; case 1: _a.sent(); return [2]; } }); }); })(); return __assign(__assign({ version: version, info: { apiId: apiId, }, ready: ready }, factories), { sessions: sessionsApi, onConnectionStatusChanged: connection.onConnectionStatusChanged.bind(connection) }); }