@sap-cloud-sdk/connectivity
Version:
SAP Cloud SDK for JavaScript connectivity
58 lines • 2.7 kB
JavaScript
;
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