@amadeus-it-group/microfrontends-angular
Version:
Amadeus Micro Frontend Toolkit for Angular
1 lines • 7.49 kB
Source Map (JSON)
{"version":3,"file":"amadeus-it-group-microfrontends-angular.mjs","sources":["../../lib/src/message-peer.service.ts","../../lib/src/amadeus-it-group-microfrontends-angular.ts"],"sourcesContent":["import {\n\tPeerConnectionFilter,\n\tPeerConnectionOptions,\n\tMessage,\n\tMessageError,\n\tMessagePeer,\n\tMessagePeerType,\n\tPeerOptions,\n\tRoutedMessage,\n\tPeerSendOptions,\n\tServiceMessage,\n} from '@amadeus-it-group/microfrontends';\nimport { from, Observable } from 'rxjs';\nimport { inject, Injectable, InjectionToken, OnDestroy } from '@angular/core';\n\n/**\n * Interface for the peer service that provides an observable for incoming messages\n */\nexport interface MessagePeerServiceType<M extends Message>\n\textends Omit<MessagePeerType<M>, 'messages' | 'serviceMessages' | 'errors'> {\n\t/**\n\t * Observable for incoming messages\n\t */\n\tget messages$(): Observable<RoutedMessage<M>>;\n\n\t/**\n\t * Observable for incoming service messages\n\t */\n\tget serviceMessages$(): Observable<RoutedMessage<ServiceMessage>>;\n\n\t/**\n\t * Observable for peer local errors when processing messages\n\t */\n\tget errors$(): Observable<MessageError>;\n}\n\n/**\n * @inheritDoc\n */\nexport interface MessagePeerConfig extends PeerOptions {}\n\n/**\n * Injection token for {@link MessagePeerConfig}, required for the {@link MessagePeerService} configuration.\n */\nexport const MESSAGE_PEER_CONFIG = new InjectionToken<MessagePeerConfig>('MESSAGE_PEER_CONFIG');\n\n/**\n * Injection token for {@link PeerConnectionOptions} used as default options to pass to {@link MessagePeerService#connect}.\n */\nexport const MESSAGE_PEER_CONNECT_OPTIONS = new InjectionToken<PeerConnectionOptions>(\n\t'MESSAGE_PEER_CONNECT_OPTIONS',\n);\n\n/**\n * Injection token for {@link PeerConnectionOptions} used as default options to pass to {@link MessagePeerService#listen}.\n */\nexport const MESSAGE_PEER_LISTEN_OPTIONS = new InjectionToken<\n\tPeerConnectionFilter | PeerConnectionFilter[]\n>('MESSAGE_PEER_LISTEN_OPTIONS');\n\n/**\n * Angular service that wraps {@link MessagePeer} and provides an observable for incoming messages and errors\n * It is essentially just a wrapper around {@link MessagePeer} that integrates with Angular's DI system.\n */\n@Injectable({ providedIn: 'root' })\nexport class MessagePeerService<M extends Message> implements MessagePeerServiceType<M>, OnDestroy {\n\treadonly #peer: MessagePeerType<M>;\n\t#stopListening: () => void = () => {\n\t\t// noop, will be set later\n\t};\n\treadonly #diConnectOptions = inject(MESSAGE_PEER_CONNECT_OPTIONS, { optional: true });\n\treadonly #diListenOptions = inject(MESSAGE_PEER_LISTEN_OPTIONS, { optional: true });\n\t/**\n\t * @inheritDoc\n\t */\n\tmessages$: Observable<RoutedMessage<M>>;\n\t/**\n\t * @inheritDoc\n\t */\n\tserviceMessages$: Observable<RoutedMessage<ServiceMessage>>;\n\t/**\n\t * @inheritDoc\n\t */\n\terrors$: Observable<MessageError>;\n\n\tconstructor() {\n\t\tconst config = inject(MESSAGE_PEER_CONFIG);\n\t\tthis.#peer = new MessagePeer<M>({\n\t\t\tid: config.id,\n\t\t\tknownMessages: config.knownMessages,\n\t\t\tmessageCheckStrategy: config.messageCheckStrategy,\n\t\t});\n\n\t\tthis.messages$ = from(this.#peer.messages);\n\t\tthis.serviceMessages$ = from(this.#peer.serviceMessages);\n\t\tthis.errors$ = from(this.#peer.errors);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tget connectionFilters(): PeerConnectionFilter[] {\n\t\treturn this.#peer.connectionFilters;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tset connectionFilters(value: PeerConnectionFilter[]) {\n\t\tthis.#peer.connectionFilters = value;\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.disconnect();\n\t\tthis.#stopListening();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get id(): string {\n\t\treturn this.#peer.id;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get knownPeers(): Map<string, Message[]> {\n\t\treturn this.#peer.knownPeers;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get peerConnections(): Map<string, Set<string>> {\n\t\treturn this.#peer.peerConnections;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic listen(filters?: PeerConnectionFilter | PeerConnectionFilter[]): () => void {\n\t\tthis.#stopListening = this.#peer.listen(filters ? filters : this.#diListenOptions || undefined);\n\t\treturn this.#stopListening;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic connect(remoteId: string, options?: PeerConnectionOptions): Promise<() => void> {\n\t\treturn this.#peer.connect(\n\t\t\tremoteId,\n\t\t\tthis.#diConnectOptions ? { ...this.#diConnectOptions, ...options } : options,\n\t\t);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic registerMessage(message: Message) {\n\t\tthis.#peer.registerMessage(message);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic send(message: M, options?: PeerSendOptions) {\n\t\tthis.#peer.send(message, options);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic disconnect(peerId?: string) {\n\t\tthis.#peer.disconnect(peerId);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}