UNPKG

@sap-cloud-sdk/connectivity

Version:

SAP Cloud SDK for JavaScript connectivity

58 lines 2.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DestinationSelectionStrategies = void 0; exports.alwaysProvider = alwaysProvider; exports.alwaysSubscriber = alwaysSubscriber; exports.subscriberFirst = subscriberFirst; const util_1 = require("@sap-cloud-sdk/util"); const logger = (0, util_1.createLogger)({ package: 'connectivity', messageContext: 'destination-selection-strategies' }); /** * Constraints the selection to provider destinations. * @param allDestinations - Retrieved destinations. * @param destinationName - Name of the destination to retrieve. * @returns The destination to retrieve, returns `null`, if no matched provider destination is found. */ function alwaysProvider(allDestinations, destinationName) { return findDestination(allDestinations.provider, destinationName) || null; } /** * Constraints the selection to subscriber destinations. * @param allDestinations - Retrieved destinations. * @param destinationName - Name of the destination to retrieve. * @returns The destination to retrieve, returns `null`, if no matched subscriber destination is found. */ function alwaysSubscriber(allDestinations, destinationName) { return findDestination(allDestinations.subscriber, destinationName) || null; } /** * Prioritizes the selection of subscriber destinations. * @param allDestinations - Retrieved destinations. * @param destinationName - Name of the destination to retrieve. * @returns The destination to retrieve, returns `null` if no matched destination is found. */ function subscriberFirst(allDestinations, destinationName) { return (findDestination(allDestinations.subscriber, destinationName) || findDestination(allDestinations.provider, destinationName) || null); } /** * Selector of destination selection strategies. See {@link alwaysProvider}, {@link alwaysSubscriber} and {@link subscriberFirst} for more information available selection strategies. */ exports.DestinationSelectionStrategies = { alwaysProvider, alwaysSubscriber, subscriberFirst }; function findDestination(destinations, destinationName) { const isRequestedDestination = (destination) => destination.name === destinationName; const instanceDest = destinations.instance.find(isRequestedDestination); const subAccountDest = destinations.subaccount.find(isRequestedDestination); if (instanceDest && subAccountDest) { logger.warn(`Found destinations named '${destinationName}' for both, the destination service instance and subaccount. Using instance destination.`); } return instanceDest || subAccountDest; } //# sourceMappingURL=destination-selection-strategies.js.map