UNPKG

2.84 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.DestinationSelectionStrategies = exports.subscriberFirst = exports.alwaysSubscriber = exports.alwaysProvider = void 0;
4var util_1 = require("@sap-cloud-sdk/util");
5var logger = (0, util_1.createLogger)({
6 package: 'core',
7 messageContext: 'destination-selection-strategies'
8});
9/**
10 * Constraints the selection to provider destinations.
11 * @param allDestinations - Retrieved destinations.
12 * @param destinationName - Name of the destination to retrieve.
13 * @returns the destination to retrieve, returns `null`, if no matched provider destination is found.
14 */
15function alwaysProvider(allDestinations, destinationName) {
16 return findDestination(allDestinations.provider, destinationName) || null;
17}
18exports.alwaysProvider = alwaysProvider;
19/**
20 * Constraints the selection to subscriber destinations.
21 * @param allDestinations - Retrieved destinations.
22 * @param destinationName - Name of the destination to retrieve.
23 * @returns the destination to retrieve, returns `null`, if no matched subscriber destination is found.
24 */
25function alwaysSubscriber(allDestinations, destinationName) {
26 return findDestination(allDestinations.subscriber, destinationName) || null;
27}
28exports.alwaysSubscriber = alwaysSubscriber;
29/**
30 * Prioritizes the selection of subscriber destinations.
31 * @param allDestinations - Retrieved destinations.
32 * @param destinationName - Name of the destination to retrieve.
33 * @returns the destination to retrieve, returns `null` if no matched destination is found.
34 */
35function subscriberFirst(allDestinations, destinationName) {
36 return (findDestination(allDestinations.subscriber, destinationName) ||
37 findDestination(allDestinations.provider, destinationName) ||
38 null);
39}
40exports.subscriberFirst = subscriberFirst;
41/**
42 * Selector of destination selection strategies. See [[alwaysProvider]], [[alwaysSubscriber]] and [[subscriberFirst]] for more information available selection strategies.
43 */
44exports.DestinationSelectionStrategies = {
45 alwaysProvider: alwaysProvider,
46 alwaysSubscriber: alwaysSubscriber,
47 subscriberFirst: subscriberFirst
48};
49function findDestination(destinations, destinationName) {
50 var isRequestedDestination = function (destination) {
51 return destination.name === destinationName;
52 };
53 var instanceDest = destinations.instance.find(isRequestedDestination);
54 var subAccountDest = destinations.subaccount.find(isRequestedDestination);
55 if (instanceDest && subAccountDest) {
56 logger.warn("Found destinations named '".concat(destinationName, "' for both, the destination service instance and subaccount. Using instance destination."));
57 }
58 return instanceDest || subAccountDest;
59}
60//# sourceMappingURL=destination-selection-strategies.js.map
\No newline at end of file