@sap-cloud-sdk/connectivity
Version:
SAP Cloud SDK for JavaScript connectivity
106 lines (105 loc) • 5.29 kB
TypeScript
import type { VerifyJwtOptions } from '../jwt';
import type { Destination, DestinationRetrievalOptions } from './destination-service-types';
import type { DestinationSelectionStrategy } from './destination-selection-strategies';
/**
* Collection of all destinations from the provider and subscriber account.
* The used {@link DestinationSelectionStrategy} will decide which destination is selected in the end.
*/
export interface AllDestinations {
/**
* Collection of all destinations from the subscriber account.
*/
subscriber: DestinationsByType;
/**
* Collection of all destinations from the provider account.
*/
provider: DestinationsByType;
}
/**
* Collection of all destinations from an account.
* For a given account a destination can originate from the destination service instance or subaccount.
*/
export interface DestinationsByType {
/**
* Collection of destinations from the destination service instance.
*/
instance: Destination[];
/**
* Collection of destinations from the subaccount.
*/
subaccount: Destination[];
}
/**
* Options to configure the behavior of the destination accessor.
* @see {@link DestinationFetchOptions}
*/
export interface DestinationAccessorOptions {
/**
* Method that implements the selection strategy of the retrieved destination. Uses {@link subscriberFirst} per default. Use the selector helper {@link DestinationSelectionStrategies} to select the appropriate selection strategy.
*/
selectionStrategy?: DestinationSelectionStrategy;
/**
* The user token of the current request.
*
* ATTENTION: The property is mandatory in the following cases:
* - User-dependent authentication flow is used, e.g., `OAuth2UserTokenExchange`, `OAuth2JWTBearer`, `OAuth2SAMLBearerAssertion`, `SAMLAssertion` or `PrincipalPropagation`.
* - Multi-tenant scenarios with destinations maintained in the subscriber account. This case is implied if the `selectionStrategy` is set to `alwaysSubscriber`.
*/
jwt?: string;
/**
* The token is used to request an access token from an OAuth server.
* The value is mandatory for authentication type `OAuth2RefreshToken` and is ignored for other authentication types.
* The value must be provided in a refresh token format.
* @see https://datatracker.ietf.org/doc/html/rfc6749#section-6.
*/
refreshToken?: string;
/**
* Option to enable/disable the IAS token to XSUAA token exchange.
*/
iasToXsuaaTokenExchange?: boolean;
/**
* This property is only considered in case no `jwt` is provided.
* It is meant for situations where you do not have a token e.g. background processes.
* The value for `iss` is the issuer field of a JWT e.g. https://<your-subdomain>.localhost:8080/uaa/oauth/token.
*
* ATTENTION: If this property is used, no validation of the provided subdomain value is done.
* This is differs from how the `jwt` is handled.
* So be careful that the used value is not manipulated and breaks the tenant isolation of your application.
*/
iss?: string;
}
/**
* Options used when fetching destinations. Encompasses {@link DestinationAccessorOptions}, {@link DestinationRetrievalOptions} and {@link VerifyJwtOptions}.
*/
export type DestinationOptions = DestinationAccessorOptions & DestinationRetrievalOptions & VerifyJwtOptions;
/**
* Declaration of a destination to be retrieved from an environment variable or from the destination service on SAP Business Technology Platform, including all DestinationOptions.
*
* Use an object of this interface to specify which destination shall be used when executing a request.
* The destination will be retrieved via its {@link DestinationFetchOptions.destinationName} according to the following algorithm:
* 1. If a destination of this {@link DestinationFetchOptions.destinationName} is defined in the environment variable `destinations` (if available), it will be converted into a {@link Destination} and used for the request.
* 2. Otherwise, the destination service on SAP Business Technology Platform is queried for a destination with the given {@link DestinationFetchOptions.destinationName}, using the access token provided as value of property {@link jwt}.
* Additionally, you can set {@link DestinationOptions} for objects of this interface.
* For more information check out our documentation: https://sap.github.io/cloud-sdk/docs/js/features/connectivity/destination.
*/
export interface DestinationFetchOptions extends DestinationOptions {
/**
* Name of the destination to retrieve, mandatory.
*/
destinationName: string;
}
/**
* Type guard to find if object is DestinationFetchOptions.
* @param destination - Destination to be checked
* @returns boolean
* @internal
*/
export declare function isDestinationFetchOptions(destination: any): destination is DestinationFetchOptions;
/**
* A {@link Destination} which does not contain {@link Destination.authTokens || authTokens}.
*/
export type DestinationWithoutToken = Omit<Destination, 'authTokens'>;
/**
* Options used to fetch all destinations.
*/
export type AllDestinationOptions = Omit<DestinationOptions, 'selectionStrategy' | 'isolationStrategy'>;