11/* eslint-disable @typescript-eslint/no-non-null-assertion */
2- import { Message , NetworkAdapter , PeerId } from '@automerge/automerge-repo' ;
2+ import {
3+ Message ,
4+ NetworkAdapter ,
5+ PeerId ,
6+ PeerMetadata ,
7+ } from '@automerge/automerge-repo' ;
38
4- type ArriveMessage = { type : 'arrive' ; senderId : PeerId ; targetId : never } ;
5- type WelcomeMessage = { type : 'welcome' ; senderId : PeerId ; targetId : PeerId } ;
9+ type ArriveMessage = {
10+ type : 'arrive' ;
11+ senderId : PeerId ;
12+ peerMetadata : PeerMetadata ;
13+ targetId : never ;
14+ } ;
15+ type WelcomeMessage = {
16+ type : 'welcome' ;
17+ senderId : PeerId ;
18+ peerMetadata : PeerMetadata ;
19+ targetId : PeerId ;
20+ } ;
621type BroadcastChannelMessage = ArriveMessage | WelcomeMessage | Message ;
722
823const adaptors : Set < AutomergeTestNetworkAdapter > = new Set ( ) ;
@@ -13,16 +28,17 @@ const broadcast = (message: BroadcastChannelMessage): void =>
1328export const resetNetwork = ( ) => adaptors . clear ( ) ;
1429
1530export class AutomergeTestNetworkAdapter extends NetworkAdapter {
16- connect ( peerId : PeerId ) {
31+ connect ( peerId : PeerId , peerMetadata ?: PeerMetadata ) {
1732 this . peerId = peerId ;
33+ this . peerMetadata = peerMetadata ;
1834 adaptors . add ( this ) ;
1935 broadcast ( { type : 'arrive' , senderId : peerId } as ArriveMessage ) ;
2036 this . emit ( 'ready' , { network : this } ) ;
2137 }
2238
2339 receiveMessage ( message : BroadcastChannelMessage ) {
2440 const peerId : PeerId = this . peerId ! ;
25- const { targetId, senderId, type} = message ;
41+ const { targetId, senderId, type, peerMetadata } = message as any ;
2642 if ( targetId && targetId !== peerId ) {
2743 return ;
2844 }
@@ -33,26 +49,26 @@ export class AutomergeTestNetworkAdapter extends NetworkAdapter {
3349 targetId : senderId ,
3450 type : 'welcome' ,
3551 } ) ;
36- this . emit ( 'peer-candidate' , { peerId : senderId } ) ;
52+ this . emit ( 'peer-candidate' , { peerId : senderId , peerMetadata } ) ;
3753 break ;
3854 case 'welcome' :
39- this . emit ( 'peer-candidate' , { peerId : senderId } ) ;
55+ this . emit ( 'peer-candidate' , { peerId : senderId , peerMetadata } ) ;
4056 break ;
4157 default :
4258 if ( ! ( 'data' in message ) ) {
4359 this . emit ( 'message' , message ) ;
4460 } else {
4561 this . emit ( 'message' , {
4662 ...message ,
47- data : new Uint8Array ( message . data ) ,
63+ data : new Uint8Array ( message . data as ArrayBufferLike ) ,
4864 } ) ;
4965 }
5066 break ;
5167 }
5268 }
5369
54- send ( message : BroadcastChannelMessage ) {
55- if ( 'data' in message ) {
70+ send ( message : Message ) {
71+ if ( message . data ) {
5672 broadcast ( {
5773 ...message ,
5874 data : message . data . buffer . slice (
0 commit comments