@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
JavaScript
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) });
}