@altostra/core
Version:
Core library for shared types and logic
60 lines (59 loc) • 3.48 kB
TypeScript
import type { It } from "../../../../common/Iterable";
import type { Maybe } from "../../../../common/Maybe";
import type { ConnectionData } from "../../../Connections";
import type { ApiAuthorizerConnectionType } from "../../../Connections/ApiAuthorizerConnection";
import type { ApiEndpointType, ApiProxyEndpointType, ApiType, ResourceByType, ResourceId } from "../../../Resources";
import type { WebSocketApiType } from "../../../Resources/WebApi/WebSocket/WebSocketApi";
import type { WebSocketRouteType } from "../../../Resources/WebApi/WebSocket/WebSocketRoute";
import type { BlueprintHelper } from "../../BlueprintHelper";
import type { ConnectionHelper } from "../../ConnectionHelper";
import type { ResourceHelper } from "../../ResourceHelper";
declare type WebApiType = ApiType | WebSocketApiType;
declare type WebEndpointType = ApiEndpointType | ApiProxyEndpointType | WebSocketRouteType;
export interface GetWebApiResourceUtilsParams<ApiType extends WebApiType, EndPointType extends WebEndpointType> {
blueprint: BlueprintHelper;
api: ResourceHelper<ApiType>;
endpointTypes: EndPointType[];
endpointsValidation: (blueprint: BlueprintHelper, api: ResourceHelper<ApiType>, apiEndpoints: () => It<ResourceByType[EndPointType]>) => void;
}
export declare function getWebApiResourceUtils<ApiType extends WebApiType, EndPointType extends WebEndpointType>({ blueprint, api, endpointTypes, endpointsValidation, }: GetWebApiResourceUtilsParams<ApiType, EndPointType>): WebApiResourceUtilsBase<EndPointType>;
export interface WebApiResourceUtilsBase<EndpointType extends WebEndpointType> {
validateEndpoint(): void;
getEndpoints(): It<ResourceHelper<EndpointType>>;
removeWithEndpoints(): void;
addEndpoint(endpoint: ResourceByType[EndpointType] | ResourceHelper<EndpointType>): ResourceHelper<EndpointType>;
/**
* Update the default authorizer:
* If the current default authorizer is undefined, or if it is no longer connected
* set it to the first connected authorizers
* Otherwise, leave it as it is
*/
updateDefaultAuthorizer(): void;
/**
* Creates connection to the authorizer and calls `updateDefaultAuthorizer`
* @param targetId The target to connect
* @param connData Optional connection data
*/
connectAuthorizer(targetId: ResourceId, connData?: ConnectionData<ApiAuthorizerConnectionType>): ConnectionHelper<ApiAuthorizerConnectionType>;
/**
* Removed the connection, call `updateDefaultAuthorizer`, and set the authorizer of all
* dependent endpoints to the default-authorizer
* @param connection The connection to disconnect
*/
disconnectAuthorizer(connection: Maybe<ConnectionHelper<ApiAuthorizerConnectionType>>): void;
/**
* Gets the default authorizer connection
*/
getDefaultAuthorizer(): Maybe<ConnectionHelper<ApiAuthorizerConnectionType>>;
}
export declare function getWebApiEndpointUtils<ApiType extends WebApiType, EndPointType extends WebEndpointType>(blueprint: BlueprintHelper, apiEndpoint: ResourceHelper<EndPointType>, apiType: ApiType): WebApiEndpointUtilsBase<ApiType>;
export interface WebApiEndpointUtilsBase<ApiType extends WebApiType> {
removeEndpoint(): void;
getApi(): ResourceHelper<ApiType>;
registerOnApi(): void;
/**
* Get the authorizer (or the default authorizer) connection
*/
getAuthorizer(): Maybe<ConnectionHelper<ApiAuthorizerConnectionType>>;
}
export {};