@amadeus-it-group/microfrontends-angular
Version:
Amadeus Micro Frontend Toolkit for Angular
97 lines (96 loc) • 3.23 kB
TypeScript
import { Message, MessageError, MessagePeerType, PeerConnectionOptions, PeerSendOptions, RoutedMessage, ServiceMessage } from '@amadeus-it-group/microfrontends';
import { Observable } from 'rxjs';
import { InjectionToken } from '@angular/core';
import * as i0 from "@angular/core";
/**
* Interface for the peer service that provides an observable for incoming messages
*/
export interface MessagePeerServiceType<M extends Message> extends Omit<MessagePeerType<M>, 'messages' | 'serviceMessages' | 'errors'> {
/**
* Observable for incoming messages
*/
get messages$(): Observable<RoutedMessage<M>>;
/**
* Observable for incoming service messages
*/
get serviceMessages$(): Observable<RoutedMessage<ServiceMessage>>;
/**
* Observable for peer local errors when processing messages
*/
get errors$(): Observable<MessageError>;
}
/**
* Configuration for the peer service that should be provided in the DI container before using the service
*/
export interface MessagePeerConfig {
/**
* Unique peer identifier on the network
*/
id: string;
/**
* List of known messages that the peer can receive
*/
knownMessages?: Message[];
}
/**
* Injection token for {@link MessagePeerConfig}, required for the {@link MessagePeerService} configuration.
*/
export declare const MESSAGE_PEER_CONFIG: InjectionToken<MessagePeerConfig>;
/**
* Injection token for {@link PeerConnectionOptions} used as default options to pass to {@link MessagePeerService#connect}.
*/
export declare const MESSAGE_PEER_CONNECT_OPTIONS: InjectionToken<PeerConnectionOptions>;
/**
* Injection token for {@link PeerConnectionOptions} used as default options to pass to {@link MessagePeerService#listen}.
*/
export declare const MESSAGE_PEER_LISTEN_OPTIONS: InjectionToken<PeerConnectionOptions>;
/**
* Angular service that wraps {@link MessagePeer} and provides an observable for incoming messages and errors
* It is essentially just a wrapper around {@link MessagePeer} that integrates with Angular's DI system.
*/
export declare class MessagePeerService<M extends Message> implements MessagePeerServiceType<M> {
#private;
/**
* @inheritDoc
*/
messages$: Observable<RoutedMessage<M>>;
/**
* @inheritDoc
*/
serviceMessages$: Observable<RoutedMessage<ServiceMessage>>;
/**
* @inheritDoc
*/
errors$: Observable<MessageError>;
constructor();
/**
* @inheritDoc
*/
get id(): string;
/**
* @inheritDoc
*/
get knownPeers(): Map<string, Message[]>;
/**
* @inheritDoc
*/
listen(peerId: string, options?: PeerConnectionOptions): Promise<() => void>;
/**
* @inheritDoc
*/
connect(peerId: string, options?: PeerConnectionOptions): Promise<() => void>;
/**
* @inheritDoc
*/
registerMessage(message: Message): void;
/**
* @inheritDoc
*/
send(message: M, options?: PeerSendOptions): void;
/**
* @inheritDoc
*/
disconnect(peerId?: string): void;
static ɵfac: i0.ɵɵFactoryDeclaration<MessagePeerService<any>, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<MessagePeerService<any>>;
}