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.

52 lines 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const request_types_1 = require("../../core/request-types"); const subscription_request_1 = require("../../core/subscription-request"); const request_configs_1 = require("../../request-configs"); const subscription_1 = require("../../core/types/subscription"); const helpers_1 = require("../../core/helpers"); const helpers_2 = require("../../core/helpers"); const message_types_1 = require("../../core/message-types"); const helpers_3 = require("./helpers"); function processMarketDataEventsMessage(eventMessage) { const { correlationIds } = eventMessage; if (!Array.isArray(correlationIds) || correlationIds.length == 0) { return new Map(); } const data = helpers_1.getMessageDetails(eventMessage, message_types_1.MessageTypes.MarketDataEvents); const dataToSubscriptionIdMap = new Map(); correlationIds.forEach((id) => { dataToSubscriptionIdMap.set(id, data); }); return dataToSubscriptionIdMap; } function subscriptionDataHandler(eventMessage) { if (!helpers_2.isMessageOfType(eventMessage, message_types_1.MessageTypes.MarketDataEvents)) { return new Map(); } return processMarketDataEventsMessage(eventMessage); } function toSubscriptionInner({ fields, security, delayed, intervalInSeconds, subscriptionId, }) { let options; if (intervalInSeconds) { options = `interval=${intervalInSeconds}`; } if (delayed) { options = options ? `${options}&delayed` : "delayed"; } return { subscriptionId, fields, security, options, status: subscription_1.SubscriptionStatus.SubscriptionCreated, }; } exports.default = (sessionManager) => (subscriptions) => { for (const subscription of subscriptions) { helpers_3.validateSubscription(subscription); } const subscriptionsInner = subscriptions.map(toSubscriptionInner); return new subscription_request_1.SubscriptionRequestImpl(sessionManager, request_configs_1.getRequestConfig(request_types_1.RequestType.MarketSubscription), subscriptionsInner, subscriptionDataHandler).api; }; //# sourceMappingURL=index.js.map