UNPKG

@altostra/core

Version:

Core library for shared types and logic

60 lines (59 loc) 3.48 kB
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 {};