webpeerjs 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,34 +6,39 @@
6
6
 
7
7
  const prefix$1 = 'webpeerjs';
8
8
  const CONFIG_PREFIX = prefix$1;
9
+ const CONFIG_PROTOCOL = '/'+prefix$1+'/0.0.1';
9
10
  const CONFIG_DBSTORE_PATH = prefix$1+'-dbstore';
10
11
  const CONFIG_MAX_CONNECTIONS = 100;
11
12
  const CONFIG_MIN_CONNECTIONS = 0;
12
13
  const CONFIG_DISCOVER_RELAYS = 1;
13
14
  const CONFIG_PEER_DISCOVERY_UNIVERSAL_CONNECTIVITY = 'universal-connectivity-browser-peer-discovery';
14
15
  const CONFIG_PEER_DISCOVERY_GLOBAL = '_peer-discovery._p2p._pubsub';
15
- const CONFIG_PUBSUB_PEER_DISCOVERY = [CONFIG_PEER_DISCOVERY_GLOBAL,CONFIG_PEER_DISCOVERY_UNIVERSAL_CONNECTIVITY,prefix$1+'-peer-discovery'];
16
+ const CONFIG_PEER_DISCOVERY_WEBPEERJS= prefix$1+'-peer-discovery';
17
+ const CONFIG_PUBSUB_PEER_DISCOVERY = [CONFIG_PEER_DISCOVERY_GLOBAL, CONFIG_PEER_DISCOVERY_UNIVERSAL_CONNECTIVITY, CONFIG_PEER_DISCOVERY_WEBPEERJS];
16
18
  const CONFIG_DELEGATED_API = 'https://delegated-ipfs.dev';
17
19
 
18
20
  const CONFIG_KNOWN_BOOTSTRAP_PEERS_ADDRS = [
19
21
  ];
20
22
 
21
- const CONFIG_KNOWN_BOOTSTRAP_PEER_IDS = [
22
- '12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr',
23
- '12D3KooWPEDBmt7vm6FNNYuqaA4n2qMUZ6wPK5NcRc8t6KpqgRkV',
24
- '12D3KooWSHbugDEQeWm2LjtRRMpNgLu6oZ8zkX8XcTwYMAewVekP',
25
- '12D3KooWASoxFpwwy8JDdu4Tm57mhESsnbFPogam9VVmhR95FGXr',
23
+ const CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS = [
26
24
  'QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN',
27
- 'QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa',
28
25
  'QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb',
29
26
  'QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt',
30
27
  'QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ',
28
+ '12D3KooWPEDBmt7vm6FNNYuqaA4n2qMUZ6wPK5NcRc8t6KpqgRkV',
29
+ '12D3KooWSHbugDEQeWm2LjtRRMpNgLu6oZ8zkX8XcTwYMAewVekP',
30
+ '12D3KooWASoxFpwwy8JDdu4Tm57mhESsnbFPogam9VVmhR95FGXr',
31
31
  '12D3KooWHh98YpAkJsn3ULjMjK1n9QVkXmi8Sb3gTDMatHxCmDP5',
32
32
  '12D3KooWS79EhkPU7ESUwgG4vyHHzW9FDNZLoWVth9b5N5NSrvaj',
33
33
  '12D3KooWBbkCD5MpJhMc1mfPAVGEyVkQnyxPKGS7AHwDqQM2JUsk',
34
34
  '12D3KooWKLdecs31Zmo2pLBjR9HY2vWo3VwM4eBm21Czeucbe6FL',
35
- '12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H'
36
- ];
35
+ '12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H',
36
+ '12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr'
37
+ ];
38
+
39
+ const CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS = [
40
+ '12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr'
41
+ ];
37
42
 
38
43
  /**
39
44
  * Returns a `Uint8Array` of the requested size. Referenced memory will
@@ -3290,6 +3295,7 @@
3290
3295
 
3291
3296
  let isDialEnabled = true;
3292
3297
  let lastfailtreshold = 0;
3298
+ let fail = 0;
3293
3299
 
3294
3300
  function metrics(data){
3295
3301
  try{
@@ -3342,29 +3348,29 @@
3342
3348
 
3343
3349
  lastStats = webTransportEvents;
3344
3350
 
3345
- const fail = errors+timeouts;
3351
+ fail = errors+timeouts;
3346
3352
  const treshold = errors+timeouts+stats.open+stats.pending;
3347
3353
 
3348
- if(treshold>60){
3354
+ if(treshold>40){
3349
3355
  //console.log(`Treeshold hit : ${treshold}`)
3350
3356
  }
3351
3357
 
3352
- if(fail>60){
3358
+ if(fail>40){
3353
3359
  //console.log(`Open : ${stats.open} , Pending : ${stats.pending} , Succes : ${totals.success} , Fail : ${fail} `)
3354
3360
 
3355
3361
  }
3356
3362
 
3357
- if ((fail-lastfailtreshold)>30){
3363
+ if ((fail-lastfailtreshold)>40){
3358
3364
  if(isDialEnabled){
3359
3365
  isDialEnabled = false;
3360
3366
  const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold});
3361
- console.warn(str);
3367
+ console.warn('dial disabled');
3362
3368
  setTimeout(()=>{
3363
3369
  if(!isDialEnabled){
3364
3370
  isDialEnabled = true;
3365
3371
  lastfailtreshold = fail;
3366
3372
  const str = JSON.stringify({isDialEnabled,fail,lastfailtreshold});
3367
- console.warn(str);
3373
+ console.warn('dial enabled');
3368
3374
  }
3369
3375
  },6*60*1000);
3370
3376
  }
@@ -46157,20 +46163,27 @@
46157
46163
 
46158
46164
 
46159
46165
  //listen to peer connect event
46160
- this.#libp2p.addEventListener("peer:connect", (evt) => {
46161
-
46162
- //console.log(`Connected to ${connection.toString()}`);
46166
+ this.#libp2p.addEventListener("peer:connect",async (evt) => {
46163
46167
 
46164
- const connection = evt.detail;
46168
+ evt.detail;
46165
46169
  const id = evt.detail.toString();
46166
46170
 
46171
+ //console.log('peer:connect '+id,evt)
46172
+
46167
46173
  const connections = this.#libp2p.getConnections().map((con)=>{return {id:con.remotePeer.toString(),addr:con.remoteAddr.toString()}});
46168
46174
  const connect = connections.find((con)=>con.id == id);
46169
46175
  const addr = connect.addr;
46176
+
46177
+ if(CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS.includes(id) || CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS.includes(id)){
46178
+ if(!this.#connections.has(id)&&addr.includes('webtransport')){
46179
+ await this.#dbstore.put(new Key(id), new TextEncoder().encode(addr));
46180
+ }
46181
+ }
46182
+
46170
46183
  this.#connections.set(id,addr);
46171
46184
 
46172
46185
  //required by joinRoom version 1 to announce via universal connectivity
46173
- if(connection.toString() === CONFIG_KNOWN_BOOTSTRAP_PEER_IDS[0]){
46186
+ if(CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS.includes(id)){
46174
46187
  setTimeout(()=>{
46175
46188
  this.#announce();
46176
46189
  setTimeout(()=>{
@@ -46179,6 +46192,31 @@
46179
46192
  },1000);
46180
46193
  }
46181
46194
 
46195
+ if(this.#webPeersId.includes(id)){
46196
+
46197
+ let address = [addr];
46198
+
46199
+ if(this.#connectedPeers.has(id)){
46200
+ //reset this last seen
46201
+ const now = new Date().getTime();
46202
+ const metadata = {addrs:address,last:now};
46203
+ this.#connectedPeers.set(id,metadata);
46204
+ }
46205
+ else {
46206
+ //add to connected webpeers
46207
+ this.#onConnectFn(id);
46208
+ const now = new Date().getTime();
46209
+ const metadata = {addrs:address,last:now};
46210
+ this.#connectedPeers.set(id,metadata);
46211
+ this.#connectedPeersArr.length = 0;
46212
+ for(const peer of this.#connectedPeers){
46213
+ const item = {id:peer[0],address:peer[1].addrs};
46214
+ this.#connectedPeersArr.push(item);
46215
+ }
46216
+ }
46217
+
46218
+ }
46219
+
46182
46220
  });
46183
46221
 
46184
46222
 
@@ -46215,6 +46253,11 @@
46215
46253
  const now = new Date().getTime();
46216
46254
  const metadata = {addrs:address,last:now};
46217
46255
  this.#connectedPeers.set(senderPeerId,metadata);
46256
+ this.#connectedPeersArr.length = 0;
46257
+ for(const peer of this.#connectedPeers){
46258
+ const item = {id:peer[0],address:peer[1].addrs};
46259
+ this.#connectedPeersArr.push(item);
46260
+ }
46218
46261
  }
46219
46262
 
46220
46263
  //dial if not connected
@@ -46330,22 +46373,20 @@
46330
46373
  }
46331
46374
 
46332
46375
  //update connected webpeers
46333
- const now = new Date().getTime();
46334
- const metadata = {addrs:address,last:now};
46335
- this.#connectedPeers.set(id,metadata);
46336
- this.#webPeersAddrs.set(id,address);
46337
- this.#connectedPeersArr.length = 0;
46376
+ /*const now = new Date().getTime()
46377
+ const metadata = {addrs:address,last:now}
46378
+ this.#connectedPeers.set(id,metadata)
46379
+ this.#webPeersAddrs.set(id,address)
46380
+ this.#connectedPeersArr.length = 0
46338
46381
  for(const peer of this.#connectedPeers){
46339
- const item = {id:peer[0],address:peer[1].addrs};
46340
- this.#connectedPeersArr.push(item);
46341
- }
46382
+ const item = {id:peer[0],address:peer[1].addrs}
46383
+ this.#connectedPeersArr.push(item)
46384
+ }*/
46342
46385
 
46343
46386
  }
46344
46387
  }
46345
46388
 
46346
46389
  }catch(err){
46347
- //console.log('from '+event.detail.from.toString())
46348
- console.debug(err);
46349
46390
  }
46350
46391
  }else {
46351
46392
  const json = JSON.parse(topic);
@@ -46391,10 +46432,12 @@
46391
46432
  if(multiaddrs.toString().includes('certhash')&& multiaddrs.toString().includes('webtransport') && multiaddrs.toString().includes('p2p-circuit')){
46392
46433
  //console.log(addrs)
46393
46434
  if(!this.#connections.has(id)){
46435
+ let mddrs = [];
46394
46436
  for(const addr of addrs){
46395
- multiaddr(addr);
46437
+ const mddr = multiaddr(addr);
46438
+ mddrs.push(mddr);
46396
46439
  }
46397
- //this.#dialMultiaddress(mddrs)
46440
+ this.#dialMultiaddress(mddrs);
46398
46441
  }
46399
46442
  }
46400
46443
  }
@@ -46451,10 +46494,8 @@
46451
46494
  //redial if this disconnected peer is regular peer
46452
46495
  else {
46453
46496
  const addr = this.#connections.get(id);
46454
- let mddrs = [];
46455
- const addrs = multiaddr(addr);
46456
- mddrs.push(addrs);
46457
- this.#dialMultiaddress(mddrs);
46497
+ multiaddr(addr);
46498
+ //this.#dialMultiaddress(mddrs)
46458
46499
  }
46459
46500
  });
46460
46501
 
@@ -46476,6 +46517,45 @@
46476
46517
  this.#ping();
46477
46518
  });
46478
46519
 
46520
+ this.#libp2p.addEventListener('peer:identify', (evt) => {
46521
+ //console.log('peer:identify '+evt.detail.peerId.toString(),evt.detail)
46522
+ if(evt.detail.protocols.includes(CONFIG_PROTOCOL)){
46523
+ //console.log('peer:identify '+evt.detail.peerId.toString(),evt.detail)
46524
+
46525
+ const id = evt.detail.peerId.toString();
46526
+ let address = [];
46527
+
46528
+ for(const addrs of evt.detail.listenAddrs){
46529
+ const addr = addrs.toString()+'/p2p/'+id;
46530
+ if(addr.includes('webtransport')){
46531
+ address.push(addr);
46532
+ }
46533
+ }
46534
+
46535
+ if(!this.#webPeersId.includes(id))this.#webPeersId.push(id);
46536
+
46537
+ if(this.#connectedPeers.has(id)){
46538
+ //reset this last seen
46539
+ const now = new Date().getTime();
46540
+ const metadata = {addrs:address,last:now};
46541
+ this.#connectedPeers.set(id,metadata);
46542
+ }
46543
+ else {
46544
+ //add to connected webpeers
46545
+ this.#onConnectFn(id);
46546
+ const now = new Date().getTime();
46547
+ const metadata = {addrs:address,last:now};
46548
+ this.#connectedPeers.set(id,metadata);
46549
+ this.#connectedPeersArr.length = 0;
46550
+ for(const peer of this.#connectedPeers){
46551
+ const item = {id:peer[0],address:peer[1].addrs};
46552
+ this.#connectedPeersArr.push(item);
46553
+ }
46554
+ }
46555
+
46556
+ }
46557
+ });
46558
+
46479
46559
  //dial known peers from configuration
46480
46560
  this.#dialKnownPeers();
46481
46561
 
@@ -46490,6 +46570,9 @@
46490
46570
 
46491
46571
  //dial random discovered peers
46492
46572
  //this.#dialdiscoveredpeers()
46573
+
46574
+ this.#registerProtocol();
46575
+
46493
46576
 
46494
46577
  onMetrics((data)=>{
46495
46578
  const signal = metrics(data);
@@ -46509,16 +46592,7 @@
46509
46592
  setInterval(()=>{
46510
46593
  this.#trackLastSeen();
46511
46594
  },5e3);
46512
-
46513
- setInterval(async()=>{
46514
- /*const peerId = peerIdFromString('QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN')
46515
- //const peerInfo = await this.#libp2p.services.aminoDHT.findPeer(peerId)
46516
-
46517
- //console.info(peerInfo)
46518
- for await (const event of this.#libp2p.services.aminoDHT.findPeer(peerId)){
46519
- console.info(event)
46520
- }*/
46521
- },5e3);
46595
+
46522
46596
 
46523
46597
  /*setTimeout(async()=>{
46524
46598
  try{
@@ -46539,6 +46613,14 @@
46539
46613
  }
46540
46614
  },60e3)*/
46541
46615
 
46616
+ /*setTimeout(async()=>{
46617
+ const key = uint8ArrayFromString(config.CONFIG_PREFIX)
46618
+ const value = uint8ArrayFromString(this.id)
46619
+ for await (const event of this.#libp2p.services.aminoDHT.put(key,value)){
46620
+ console.log('put',event)
46621
+ }
46622
+ },30e3)*/
46623
+
46542
46624
  }
46543
46625
 
46544
46626
 
@@ -46564,6 +46646,62 @@
46564
46646
  PRIVATE FUNCTION
46565
46647
  */
46566
46648
 
46649
+ async #registerProtocol(){
46650
+ const handler = ({ connection, stream, protocol }) => {
46651
+ // use stream or connection according to the needs
46652
+ };
46653
+
46654
+ await this.#libp2p.handle(CONFIG_PROTOCOL, handler, {
46655
+ maxInboundStreams: 5,
46656
+ maxOutboundStreams: 5
46657
+ });
46658
+
46659
+ await this.#libp2p.register(CONFIG_PROTOCOL, {
46660
+ onConnect: (peer, connection) => {
46661
+ // handle connect
46662
+ //console.log('handle connect',peer)
46663
+ },
46664
+ onDisconnect: (peer, connection) => {
46665
+ // handle disconnect
46666
+ //console.log('handle disconnect',peer)
46667
+ }
46668
+ });
46669
+
46670
+ }
46671
+
46672
+ #findHybridPeer(){
46673
+ setTimeout(async()=>{
46674
+ for(const target of CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS){
46675
+ if(!this.#isConnected(target) && !this.#connections.has(target) && this.#isDialEnabled ){
46676
+ //console.log('findPeer',target)
46677
+ const peerId = peerIdFromString(target);
46678
+ //const peerInfo = await this.#libp2p.services.aminoDHT.findPeer(peerId)
46679
+
46680
+ //console.info(peerInfo)
46681
+ for await (const event of this.#libp2p.services.aminoDHT.findPeer(peerId)){
46682
+ //console.info('findPeer',event)
46683
+ if (event.name === 'FINAL_PEER'){
46684
+ //console.log(event.peer.id.toString(),event.peer.multiaddrs.toString())
46685
+ let mddrs = [];
46686
+ let addrs = [];
46687
+ const id = event.peer.id.toString();
46688
+ for(const mddr of event.peer.multiaddrs){
46689
+ const peeraddr = mddr.toString()+'/p2p/'+id;
46690
+ const peermddr = multiaddr(peeraddr);
46691
+ addrs.push(peeraddr);
46692
+ mddrs.push(peermddr);
46693
+ }
46694
+ this.#dialedKnownBootstrap.set(id,addrs);
46695
+ if(!this.#isConnected(id)){
46696
+ this.#dialMultiaddress(mddrs);
46697
+ }
46698
+ }
46699
+ }
46700
+ }
46701
+ }
46702
+ },60e3);
46703
+ }
46704
+
46567
46705
 
46568
46706
  //check the last seen in web peer
46569
46707
  #trackLastSeen(){
@@ -46625,7 +46763,7 @@
46625
46763
  return
46626
46764
  }
46627
46765
 
46628
- if(this.#webPeersId.includes(id) || id == CONFIG_KNOWN_BOOTSTRAP_PEER_IDS[0] ){
46766
+ if(this.#webPeersId.includes(id) || CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS.includes(id) || CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS.includes(id)){
46629
46767
  this.#dialQueue.unshift(mddrs);
46630
46768
  }
46631
46769
  else {
@@ -46640,7 +46778,7 @@
46640
46778
 
46641
46779
  if(!this.#isDialEnabled)return
46642
46780
 
46643
- const mddrsToDial = 3;
46781
+ const mddrsToDial = 5;
46644
46782
 
46645
46783
  let queue = [];
46646
46784
  for(const item of this.#libp2p.getDialQueue()){
@@ -46658,6 +46796,8 @@
46658
46796
 
46659
46797
  if(this.#isConnected(id))continue
46660
46798
  if(queue.includes(id)){continue;}
46799
+
46800
+ //console.log('dial',id)
46661
46801
 
46662
46802
  //dial with webtransport
46663
46803
  this.#dialWebtransport(mddrs);
@@ -46740,7 +46880,7 @@
46740
46880
  },
46741
46881
  members : [this.id],
46742
46882
  onMembers : () => {},
46743
- onMembersChange : f => {this.#rooms[room] = {...this.#rooms[room], onMembers: f};this.#rooms[room].onMembers(this.#rooms[room].members);},
46883
+ onMembersChange : f => {this.#rooms[room] = {...this.#rooms[room], onMembers: f};this.#rooms[room].onMembers(this.#rooms[room].members);this.#ping();},
46744
46884
  };
46745
46885
  }
46746
46886
 
@@ -46777,13 +46917,15 @@
46777
46917
  #dialRandomBootstrap(){
46778
46918
  setInterval(()=>{
46779
46919
  //const keys = Array.from(this.#dialedKnownBootstrap.keys())
46780
- const keys = CONFIG_KNOWN_BOOTSTRAP_PEER_IDS;
46920
+ const keys = CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS;
46781
46921
  const randomKey = Math.floor(Math.random() * keys.length);
46782
46922
  let ids = [];
46783
46923
  ids.push(keys[randomKey]);
46784
46924
 
46785
46925
  //universal connectivity id for webpeer discovery and joinRoom version 1 to work
46786
- ids.push(CONFIG_KNOWN_BOOTSTRAP_PEER_IDS[0]);
46926
+ for(const id of CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS){
46927
+ ids.push(id);
46928
+ }
46787
46929
 
46788
46930
  for(const id of ids){
46789
46931
  if(id == undefined)continue
@@ -46850,7 +46992,7 @@
46850
46992
  if(besttime>bestlimit){
46851
46993
  const addr = remote.toString();
46852
46994
  const id = peer.toString();
46853
- if(!this.#webPeersId.includes(id) && !CONFIG_KNOWN_BOOTSTRAP_PEER_IDS.includes(id) && !this.#dbstoreData.get(id) && !addr.includes('p2p-circuit')){
46995
+ if(!this.#webPeersId.includes(id) && !CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS.includes(id) && !this.#dbstoreData.get(id) && !addr.includes('p2p-circuit') && addr.includes('webtransport')){
46854
46996
  //await this.#dbstore.delete(new Key(id))
46855
46997
  await this.#dbstore.put(new Key(id), new TextEncoder().encode(addr));
46856
46998
  this.#dbstoreData.set(id,addr);
@@ -46919,7 +47061,7 @@
46919
47061
  }
46920
47062
  }
46921
47063
 
46922
- },30*1000);
47064
+ },15*1000);
46923
47065
  }
46924
47066
 
46925
47067
 
@@ -46942,23 +47084,28 @@
46942
47084
  //dial to all known bootstrap peers and DNS
46943
47085
  #dialKnownPeers(){
46944
47086
  //this.#dialKnownBootstrap()
46945
- //setTimeout(()=>{
46946
- //const peers = this.#libp2p.getPeers().length
46947
- //if(peers == 0){
46948
- //currently not needed
46949
- this.#dialKnownID();
46950
- setTimeout(()=>{
46951
- const peers = this.#libp2p.getPeers().length;
46952
- if(peers == 0){
46953
- //currently not needed
46954
- //this.#dialKnownDNS()
46955
- setTimeout(()=>{
46956
- this.#libp2p.getPeers().length;
46957
- },15000);
46958
- }
46959
- },15000);
46960
- //}
46961
- //},15000)
47087
+ setTimeout(()=>{
47088
+ this.#dialSavedKnownID();
47089
+ this.#findHybridPeer();
47090
+ setTimeout(()=>{this.#dialUpdateSavedKnownID();},50000);
47091
+ setTimeout(()=>{
47092
+ const peers = this.#libp2p.getPeers().length;
47093
+ if(peers == 0){
47094
+ this.#dialKnownID();
47095
+ this.#findHybridPeer();
47096
+ setTimeout(()=>{
47097
+ const peers = this.#libp2p.getPeers().length;
47098
+ if(peers == 0){
47099
+ //currently not needed
47100
+ //this.#dialKnownDNS()
47101
+ setTimeout(()=>{
47102
+ this.#libp2p.getPeers().length;
47103
+ },15000);
47104
+ }
47105
+ },15000);
47106
+ }
47107
+ },15000);
47108
+ },5000);
46962
47109
  }
46963
47110
 
46964
47111
 
@@ -46985,12 +47132,81 @@
46985
47132
  }
46986
47133
  }
46987
47134
 
47135
+ async #dialSavedKnownID(){
47136
+ let firsttime = true;
47137
+ for(const target of CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS){
47138
+ if(this.#dbstoreData.has(target)){
47139
+ firsttime = false;
47140
+ let mddrs = [];
47141
+ let addrs = [];
47142
+ const id = target;
47143
+ const peeraddr = this.#dbstoreData.get(target);
47144
+ const peermddr = multiaddr(peeraddr);
47145
+ addrs.push(peeraddr);
47146
+ mddrs.push(peermddr);
47147
+ this.#dialedKnownBootstrap.set(id,addrs);
47148
+ if(!this.#isConnected(id)){
47149
+ this.#dialMultiaddress(mddrs);
47150
+ }
47151
+ }
47152
+ }
47153
+ if(firsttime){
47154
+ for(const target of CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS){
47155
+ const api = CONFIG_DELEGATED_API;
47156
+ const delegatedClient = createDelegatedRoutingV1HttpApiClient(api);
47157
+ const peer = await first$1(delegatedClient.getPeers(peerIdFromString(target)));
47158
+ const address = peer.Addrs;
47159
+ const id = peer.ID;
47160
+ let mddrs = [];
47161
+ let addrs = [];
47162
+ for(const addr of address){
47163
+ const peeraddr = addr.toString()+'/p2p/'+id.toString();
47164
+ const peermddr = multiaddr(peeraddr);
47165
+ addrs.push(peeraddr);
47166
+ mddrs.push(peermddr);
47167
+ }
47168
+
47169
+ this.#dialedKnownBootstrap.set(id,addrs);
47170
+ if(!this.#isConnected(id)){
47171
+ this.#dialMultiaddress(mddrs);
47172
+ }
47173
+ }
47174
+ }
47175
+ }
47176
+
47177
+ async #dialUpdateSavedKnownID(){
47178
+ for(const target of CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS){
47179
+ if(!this.#connections.has(target) && this.#isDialEnabled && this.#dbstoreData.has(target)){
47180
+ //console.log('#dialUpdateSavedKnownID()',target)
47181
+ const api = CONFIG_DELEGATED_API;
47182
+ const delegatedClient = createDelegatedRoutingV1HttpApiClient(api);
47183
+ const peer = await first$1(delegatedClient.getPeers(peerIdFromString(target)));
47184
+ const address = peer.Addrs;
47185
+ const id = peer.ID;
47186
+ let mddrs = [];
47187
+ let addrs = [];
47188
+ for(const addr of address){
47189
+ const peeraddr = addr.toString()+'/p2p/'+id.toString();
47190
+ const peermddr = multiaddr(peeraddr);
47191
+ addrs.push(peeraddr);
47192
+ mddrs.push(peermddr);
47193
+ }
47194
+
47195
+ this.#dialedKnownBootstrap.set(id,addrs);
47196
+ if(!this.#isConnected(id)){
47197
+ this.#dialMultiaddress(mddrs);
47198
+ }
47199
+ }
47200
+ }
47201
+ }
47202
+
46988
47203
 
46989
47204
  //dial based on known peers ID
46990
47205
  async #dialKnownID(){
47206
+ //console.log('#dialKnownID()')
46991
47207
  const api = CONFIG_DELEGATED_API;
46992
47208
  const delegatedClient = createDelegatedRoutingV1HttpApiClient(api);
46993
- const BOOTSTRAP_PEER_IDS = CONFIG_KNOWN_BOOTSTRAP_PEER_IDS;
47209
+ const BOOTSTRAP_PEER_IDS = CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS;
46994
47210
  const peers = await Promise.all(
46995
47211
  BOOTSTRAP_PEER_IDS.map((peerId) => first$1(delegatedClient.getPeers(peerIdFromString(peerId)))),
46996
47212
  );
@@ -47107,8 +47323,6 @@
47107
47323
  await this.#libp2p.dial(addr);
47108
47324
  return // if we succeed dialing the peer, no need to try another address
47109
47325
  } catch (error) {
47110
- //console.log(`failed to dial webtransport multiaddr: %o`, addr.toString())
47111
- console.debug(error);
47112
47326
  }
47113
47327
  }
47114
47328
  }
@@ -47129,8 +47343,6 @@
47129
47343
  await this.#libp2p.dial(addr);
47130
47344
  return // if we succeed dialing the peer, no need to try another address
47131
47345
  } catch (error) {
47132
- //console.log(`failed to dial websocket multiaddr: %o`, addr)
47133
- console.debug(error);
47134
47346
  }
47135
47347
  }
47136
47348
  }
@@ -47140,7 +47352,7 @@
47140
47352
  static async createWebpeer(){
47141
47353
 
47142
47354
  // all libp2p debug logs
47143
- localStorage.setItem('debug', 'libp2p:*');
47355
+ //localStorage.setItem('debug', 'libp2p:*')
47144
47356
 
47145
47357
  const dbstore = new IDBDatastore(CONFIG_DBSTORE_PATH);
47146
47358
  await dbstore.open();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webpeerjs",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "description": "Simple peer-to-peer with IPFS",
5
5
  "main": "./dist/umd/webpeerjs.js",
6
6
  "module": "./dist/esm/webpeerjs.js",
package/src/config.js CHANGED
@@ -1,5 +1,6 @@
1
1
  const prefix = 'webpeerjs'
2
2
  export const CONFIG_PREFIX = prefix
3
+ export const CONFIG_PROTOCOL = '/'+prefix+'/0.0.1'
3
4
  export const CONFIG_BLOCKSTORE_PATH = prefix+'-blockstore'
4
5
  export const CONFIG_DATASTORE_PATH = prefix+'-datastore'
5
6
  export const CONFIG_DBSTORE_PATH = prefix+'-dbstore'
@@ -8,7 +9,8 @@ export const CONFIG_MIN_CONNECTIONS = 0
8
9
  export const CONFIG_DISCOVER_RELAYS = 1
9
10
  export const CONFIG_PEER_DISCOVERY_UNIVERSAL_CONNECTIVITY = 'universal-connectivity-browser-peer-discovery'
10
11
  export const CONFIG_PEER_DISCOVERY_GLOBAL = '_peer-discovery._p2p._pubsub'
11
- export const CONFIG_PUBSUB_PEER_DISCOVERY = [CONFIG_PEER_DISCOVERY_GLOBAL,CONFIG_PEER_DISCOVERY_UNIVERSAL_CONNECTIVITY,prefix+'-peer-discovery']
12
+ export const CONFIG_PEER_DISCOVERY_WEBPEERJS= prefix+'-peer-discovery'
13
+ export const CONFIG_PUBSUB_PEER_DISCOVERY = [CONFIG_PEER_DISCOVERY_GLOBAL, CONFIG_PEER_DISCOVERY_UNIVERSAL_CONNECTIVITY, CONFIG_PEER_DISCOVERY_WEBPEERJS]
12
14
  export const CONFIG_PUPSUB_TOPIC = prefix+'-room'
13
15
  export const CONFIG_DELEGATED_API = 'https://delegated-ipfs.dev'
14
16
  export const CONFIG_DNS_RESOLVER = 'https://dns.google/resolve'
@@ -18,19 +20,22 @@ export const CONFIG_JOIN_ROOM_VERSION = 1
18
20
  export const CONFIG_KNOWN_BOOTSTRAP_PEERS_ADDRS = [
19
21
  ]
20
22
 
21
- export const CONFIG_KNOWN_BOOTSTRAP_PEER_IDS = [
22
- '12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr',
23
- '12D3KooWPEDBmt7vm6FNNYuqaA4n2qMUZ6wPK5NcRc8t6KpqgRkV',
24
- '12D3KooWSHbugDEQeWm2LjtRRMpNgLu6oZ8zkX8XcTwYMAewVekP',
25
- '12D3KooWASoxFpwwy8JDdu4Tm57mhESsnbFPogam9VVmhR95FGXr',
23
+ export const CONFIG_KNOWN_BOOTSTRAP_PEERS_IDS = [
26
24
  'QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN',
27
- 'QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa',
28
25
  'QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb',
29
26
  'QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt',
30
27
  'QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ',
28
+ '12D3KooWPEDBmt7vm6FNNYuqaA4n2qMUZ6wPK5NcRc8t6KpqgRkV',
29
+ '12D3KooWSHbugDEQeWm2LjtRRMpNgLu6oZ8zkX8XcTwYMAewVekP',
30
+ '12D3KooWASoxFpwwy8JDdu4Tm57mhESsnbFPogam9VVmhR95FGXr',
31
31
  '12D3KooWHh98YpAkJsn3ULjMjK1n9QVkXmi8Sb3gTDMatHxCmDP5',
32
32
  '12D3KooWS79EhkPU7ESUwgG4vyHHzW9FDNZLoWVth9b5N5NSrvaj',
33
33
  '12D3KooWBbkCD5MpJhMc1mfPAVGEyVkQnyxPKGS7AHwDqQM2JUsk',
34
34
  '12D3KooWKLdecs31Zmo2pLBjR9HY2vWo3VwM4eBm21Czeucbe6FL',
35
- '12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H'
35
+ '12D3KooWBdF3g6vSJFRPoZQo7BNnkNzaWb59gpyaVzsgtNTVeu8H',
36
+ '12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr'
36
37
  ]
38
+
39
+ export const CONFIG_KNOWN_BOOTSTRAP_HYBRID_IDS = [
40
+ '12D3KooWFhXabKDwALpzqMbto94sB7rvmZ6M28hs9Y9xSopDKwQr'
41
+ ]