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.

81 lines 5.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const logger_1 = tslib_1.__importDefault(require("./logger")); const generic_request_1 = tslib_1.__importDefault(require("./requests/generic-request")); const historical_data_request_1 = tslib_1.__importDefault(require("./requests/historical-data-request")); const reference_data_request_1 = tslib_1.__importDefault(require("./requests/reference-data-request")); const instrument_list_request_1 = tslib_1.__importDefault(require("./requests/instrument-list-request")); const field_list_request_1 = tslib_1.__importDefault(require("./requests/field-request/field-list-request")); const field_search_request_1 = tslib_1.__importDefault(require("./requests/field-request/field-search-request")); const user_entitlements_request_1 = tslib_1.__importDefault(require("./requests/user-entitlements-request")); const intraday_bar_request_1 = tslib_1.__importDefault(require("./requests/intraday-bar-request")); const intraday_tick_request_1 = tslib_1.__importDefault(require("./requests/intraday-tick-request")); const snapshot_request_1 = tslib_1.__importDefault(require("./requests/snapshot-request")); const mkt_data_subscription_1 = tslib_1.__importDefault(require("./requests/mkt-data-subscription")); const sessions_manager_1 = require("./sessions/sessions-manager"); const mdf_bridge_1 = require("./bridge/mdf-bridge"); const version_1 = require("./version"); const utils_1 = require("./utils"); const connection_1 = require("./connection/connection"); const constants_1 = require("./constants"); const mergeProtocolMethods = (override, defaults) => { const overrides = typeof override === "function" ? override(constants_1.ProtocolMethodsDefault) : {}; return Object.assign(Object.assign({}, defaults), overrides); }; /** * A factory function the creates a new **BBG Market Data** API instance. * @param interop - Interop instance to connect the library to the Bloomberg bridge. * @param config - Library configuration. */ function default_1(interop, config) { /** * Used as a unique identifier for each new api instance. */ const apiId = utils_1.generateId(); const logger = logger_1.default(apiId, config); // eslint-disable-next-line @typescript-eslint/no-unused-vars const _a = config !== null && config !== void 0 ? config : {}, { logger: _, overrideProtocolMethods } = _a, restConfig = tslib_1.__rest(_a, ["logger", "overrideProtocolMethods"]); logger === null || logger === void 0 ? void 0 : logger.info(`Glue42 BBG Market Data (${apiId}) v.${version_1.version}. Config: ${JSON.stringify(restConfig)}`); const protocolMethods = mergeProtocolMethods(overrideProtocolMethods, constants_1.ProtocolMethodsDefault); logger === null || logger === void 0 ? void 0 : logger.info(`Protocol methods: ${JSON.stringify(protocolMethods)}`); const mdfBridge = new mdf_bridge_1.MdfBridge(interop, apiId, version_1.version, protocolMethods, logger); const sessionManager = new sessions_manager_1.SessionsManager(mdfBridge, apiId, config === null || config === void 0 ? void 0 : config.sessionSettings, logger); const connection = new connection_1.Connection(mdfBridge, config === null || config === void 0 ? void 0 : config.connectionPeriodMsecs); const factories = { createGenericRequest: generic_request_1.default(sessionManager), createHistoricalDataRequest: historical_data_request_1.default(sessionManager), createReferenceDataRequest: reference_data_request_1.default(sessionManager), createInstrumentListRequest: instrument_list_request_1.default(sessionManager), createFieldListRequest: field_list_request_1.default(sessionManager), createFieldSearchRequest: field_search_request_1.default(sessionManager), createUserEntitlementsRequest: user_entitlements_request_1.default(sessionManager), createIntraDayBarRequest: intraday_bar_request_1.default(sessionManager), createIntraDayTickRequest: intraday_tick_request_1.default(sessionManager), createSnapshotRequest: snapshot_request_1.default(sessionManager), createMarketDataRequest: mkt_data_subscription_1.default(sessionManager), }; const sessionsApi = { get all() { return sessionManager.all; }, close(session) { return sessionManager.closeSession(session); }, create(settings) { return sessionManager.createSession(settings); }, }; const ready = (() => tslib_1.__awaiter(this, void 0, void 0, function* () { yield mdfBridge.ready(); }))(); return Object.assign(Object.assign({ version: version_1.version, info: { apiId, }, ready }, factories), { sessions: sessionsApi, /** * Whether the MDF API is connected. */ onConnectionStatusChanged: connection.onConnectionStatusChanged.bind(connection) }); } exports.default = default_1; //# sourceMappingURL=factory.js.map