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.

114 lines 5.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFailureReason = exports.toTerminalSubscription = exports.setSubscriptionCreatedStatus = exports.setSubscriptionIds = exports.createErrorMessageHandler = exports.createResponseDataHandler = exports.createResponseErrorHandler = exports.getMessageDetails = exports.isEventOfType = exports.isMessageOfType = exports.isActive = exports.isDone = exports.isPending = exports.isNew = void 0; const tslib_1 = require("tslib"); const request_status_1 = require("../request-status"); const types_1 = require("./types"); const event_types_1 = require("./event-types"); const subscription_1 = require("./types/subscription"); const correlationId_1 = tslib_1.__importDefault(require("./../correlationId")); exports.isNew = (status) => status === request_status_1.RequestStatus.Created; exports.isPending = (status) => status === request_status_1.RequestStatus.Opened || status === request_status_1.RequestStatus.Active; exports.isDone = (status) => status === request_status_1.RequestStatus.Failed || status === request_status_1.RequestStatus.Completed || status === request_status_1.RequestStatus.Closed; exports.isActive = (status) => status === request_status_1.RequestStatus.Active; /** * Checks whether a Bloomberg message is of a particular message type. */ function isMessageOfType(eventMessage, type) { return type in eventMessage.message; } exports.isMessageOfType = isMessageOfType; /** * Checks whether a Bloomberg message is of a particular event type. */ function isEventOfType(eventMessage, type) { return eventMessage.eventType === type; } exports.isEventOfType = isEventOfType; /** * Extracts the actual message details. */ function getMessageDetails(eventMessage, type) { return eventMessage.message[type]; } exports.getMessageDetails = getMessageDetails; function createResponseErrorHandler(messageType, getError, test) { return (eventMessage) => { if (!isMessageOfType(eventMessage, messageType)) { return { match: false, }; } const messageDetails = getMessageDetails(eventMessage, messageType); if (typeof test === "function" && !test(messageDetails)) { return { match: false }; } const errorDetails = getError(messageDetails); return { match: true, data: new types_1.BloombergError(event_types_1.EventTypes.Response, messageType, errorDetails), }; }; } exports.createResponseErrorHandler = createResponseErrorHandler; function createResponseDataHandler(messageType, getData, test) { return (eventMessage) => { if (!isMessageOfType(eventMessage, messageType)) { return { match: false, }; } const messageDetails = getMessageDetails(eventMessage, messageType); if (typeof test === "function" && !test(messageDetails)) { return { match: false }; } const data = getData(messageDetails); return { match: true, data: data, }; }; } exports.createResponseDataHandler = createResponseDataHandler; function createErrorMessageHandler(eventType, messageType) { return (eventMessage) => { if (isEventOfType(eventMessage, eventType) && isMessageOfType(eventMessage, messageType)) { const messageDetails = getMessageDetails(eventMessage, messageType); return { match: true, data: new types_1.BloombergError(eventType, messageType, messageDetails), }; } return { match: false, }; }; } exports.createErrorMessageHandler = createErrorMessageHandler; function setSubscriptionIds(subscription) { return Object.assign(Object.assign({}, subscription), { internalId: new correlationId_1.default().value, subscriptionId: subscription.subscriptionId instanceof correlationId_1.default ? subscription.subscriptionId : new correlationId_1.default(subscription.security) }); } exports.setSubscriptionIds = setSubscriptionIds; function setSubscriptionCreatedStatus(subscription) { return Object.assign(Object.assign({}, subscription), { status: subscription_1.SubscriptionStatus.SubscriptionCreated }); } exports.setSubscriptionCreatedStatus = setSubscriptionCreatedStatus; function toTerminalSubscription({ internalId, security, fields, options, }) { return { subscriptionId: internalId, security, fields: fields.join(","), options, }; } exports.toTerminalSubscription = toTerminalSubscription; function getFailureReason(id, error) { const errorMessage = error instanceof types_1.BloombergError ? `Received: event="${error.eventType}" / event message="${error.eventMessage}".` : error.message; return `Request with an id "${id}" failed. ${errorMessage}`; } exports.getFailureReason = getFailureReason; //# sourceMappingURL=helpers.js.map