@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
JavaScript
"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