social-kit / dist / net.js
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import { $APP, shadow$provide } from "./shared.js";
import*as esm_import$$libp2p$identify from"@libp2p/identify";import*as esm_import$$libp2p$circuit_relay_v2 from"@libp2p/circuit-relay-v2";import*as esm_import$$libp2p$websockets from"@libp2p/websockets";import*as esm_import$$libp2p$gossipsub from"@libp2p/gossipsub";import*as esm_import$$libp2p$webrtc from"@libp2p/webrtc";import*as esm_import$$libp2p$pubsub_peer_discovery from"@libp2p/pubsub-peer-discovery";import*as esm_import$$chainsafe$libp2p_noise from"@chainsafe/libp2p-noise";import*as esm_import$libp2p from"libp2p";
import*as esm_import$$chainsafe$libp2p_yamux from"@chainsafe/libp2p-yamux";import*as esm_import$$multiformats$multiaddr from"@multiformats/multiaddr";
var vd=function(a,b,c){var d=c===void 0?3E3:c;return Promise.resolve(null).then(function(){return fetch(a,{signal:AbortSignal.timeout(d)}).then(function(e){if(!e.ok)throw Error("descriptor "+$APP.p(e.status));return e.json().then(function(f){var g=f.relay;f=g!=null?g.peer_id:null;var k=g!=null?function(){var h=g.multiaddrs;return $APP.n(Array.isArray(h))?h.filter(function(l){return typeof l==="string"&&l.length>0}):null}():null;if(!f||k==null||k.length===0)throw Error("descriptor missing relay block");
return{peerId:f,multiaddrs:k}})})}).catch(function(e){console.warn("ap2p descriptor unavailable, using compiled-in relay info",e);return b})},wd=function(a){return Promise.resolve(null).then(function(){return fetch(a._endpoint).then(function(b){if(!b.ok)throw Error("turn-credentials "+$APP.p(b.status));return b.json().then(function(c){var d={iceServers:[{urls:c.urls,username:c.username,credential:c.credential}]};$APP.n(a._forceRelay)&&(d.iceTransportPolicy="relay");a._cached=d;a._validUntil=Date.now()+
c.ttl*1E3-3E5;return d})})}).catch(function(b){console.warn("turn credentials unavailable, continuing without ICE servers",b);a._cached==null&&(a._cached=$APP.n(a._forceRelay)?{iceTransportPolicy:"relay"}:{});a._validUntil=Date.now()+3E4;return a._cached})},xd=function(a){return a.node.getConnections().some(function(b){return b.remotePeer.toString()===a.relayId})},yd=function(a){if($APP.n(function(){var c=a._redialing;return $APP.n(c)?c:xd(a)}()))return Promise.resolve(void 0);var b=a.node;a._redialing=
!0;return b.dial(a._relayMaddr,{signal:AbortSignal.timeout(15E3)}).catch(function(c){return console.warn("relay dial failed",c)}).finally(function(){return a._redialing=!1}).then(function(){})},Cd=function(a,b){return esm_import$libp2p.createLibp2p(function(){return{addresses:{listen:[""+$APP.p(a.multiaddrs[0])+"/p2p-circuit","/webrtc"]},transports:[esm_import$$libp2p$websockets.webSockets(),esm_import$$libp2p$webrtc.webRTC(function(){return{rtcConfiguration:function(){return b.get()}}}()),esm_import$$libp2p$circuit_relay_v2.circuitRelayTransport()],
connectionEncrypters:[esm_import$$chainsafe$libp2p_noise.noise()],streamMuxers:[esm_import$$chainsafe$libp2p_yamux.yamux()],peerDiscovery:[esm_import$$libp2p$pubsub_peer_discovery.pubsubPeerDiscovery({interval:3E3})],services:{identify:esm_import$$libp2p$identify.identify(),pubsub:esm_import$$libp2p$gossipsub.gossipsub()}}}()).then(function(c){var d=new zd(c,a);return yd(d).then(function(){return d})})};var Dd=class{constructor(a,b){this._endpoint=a;this._forceRelay=b===void 0?!1:b;this._cached=null;this._validUntil=0;this._inflight=null}};Dd.prototype.get=function(){var a=this;if(a._cached!=null&&Date.now()<a._validUntil)return Promise.resolve(a._cached);var b=a._inflight;if($APP.n(b))return b;b=wd(a).finally(function(){return a._inflight=null});return a._inflight=b};
var zd=class{constructor(a,b){this.node=a;this.relayId=b.peerId;this._relayMaddr=esm_import$$multiformats$multiaddr.multiaddr(b.multiaddrs[0]);this._redialing=!1}};zd.create=function(a,b){return Cd(a,b)};var Ed=zd.prototype;Ed.relayConnected=function(){return xd(this)};Ed.redialRelay=function(){return yd(this)};export const fetchRelayInfo=vd;export const NetNode=zd;export const IceConfig=Dd;
export const createSocialNode=function(a){return vd(a.descriptorUrl,a.relayFallback,void 0).then(function(b){return Cd(b,new Dd(a.turnUrl,void 0)).then(function(c){var d=c.node,e=c.relayId,f=new Set;d.addEventListener("peer:discovery",function(g){g=g.detail.id;var k=g.toString();return $APP.n(function(){var h=k===e;return h?h:f.has(k)}())?null:d.getConnections(g).length===0?(f.add(k),d.dial(g,{signal:AbortSignal.timeout(15E3)}).catch(function(){return null}).finally(function(){return f.delete(k)})):null});
document.addEventListener("visibilitychange",function(){return document.visibilityState==="visible"?yd(c):null});window.addEventListener("pageshow",function(){return yd(c)});window.addEventListener("online",function(){return yd(c)});return{node:d,pubsub:d.services.pubsub,relayId:e,relayConnected:function(){return xd(c)},close:function(){return d.stop().then(function(){})}}})})};

static mirror of HEAD · about · clone: git clone https://git.ardegazu.ro/social-kit.git