This repository was archived by the owner on Mar 30, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathbridge.min.js
More file actions
37 lines (37 loc) · 17.3 KB
/
bridge.min.js
File metadata and controls
37 lines (37 loc) · 17.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var $jscomp={scope:{},getGlobal:function(e){return"undefined"!=typeof window&&window===e?e:"undefined"!=typeof global?global:e}};$jscomp.global=$jscomp.getGlobal(this);$jscomp.initSymbol=function(){$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol);$jscomp.initSymbol=function(){}};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(e){return"jscomp_symbol_"+e+$jscomp.symbolCounter_++};
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();$jscomp.global.Symbol.iterator||($jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));$jscomp.initSymbolIterator=function(){}};
$jscomp.makeIterator=function(e){$jscomp.initSymbolIterator();if(e[$jscomp.global.Symbol.iterator])return e[$jscomp.global.Symbol.iterator]();if(!(e instanceof Array||"string"==typeof e||e instanceof String))throw new TypeError(e+" is not iterable");var f=0;return{next:function(){return f==e.length?{done:!0}:{done:!1,value:e[f++]}}}};$jscomp.arrayFromIterator=function(e){for(var f,k=[];!(f=e.next()).done;)k.push(f.value);return k};
$jscomp.arrayFromIterable=function(e){return e instanceof Array?e:$jscomp.arrayFromIterator($jscomp.makeIterator(e))};$jscomp.arrayFromArguments=function(e){for(var f=[],k=0;k<e.length;k++)f.push(e[k]);return f};
$jscomp.inherits=function(e,f){function k(){}k.prototype=f.prototype;e.prototype=new k;e.prototype.constructor=e;for(var c in f)if($jscomp.global.Object.defineProperties){var l=$jscomp.global.Object.getOwnPropertyDescriptor(f,c);void 0!==l&&$jscomp.global.Object.defineProperty(e,c,l)}else e[c]=f[c]};
(function e$$0(f,k,c){function l(h,b){if(!k[h]){if(!f[h]){var g="function"==typeof require&&require;if(!b&&g)return g(h,!0);if(n)return n(h,!0);g=Error("Cannot find module '"+h+"'");throw g.code="MODULE_NOT_FOUND",g;}g=k[h]={exports:{}};f[h][0].call(g.exports,function(d){var a=f[h][1][d];return l(a?a:d)},g,g.exports,e$$0,f,k,c)}return k[h].exports}for(var n="function"==typeof require&&require,m=0;m<c.length;m++)l(c[m]);return l})({1:[function(e,f,k){var c={service:e("../src/service"),client:e("../src/client"),
_m:e("../src/message")};"u"!=(typeof define)[0]?define([],function(){return c}):self.bridge=c},{"../src/client":2,"../src/message":4,"../src/service":6}],2:[function(e,f,k){function c(a,d,p){if(!(this instanceof c))return new c(a,d,p);"object"==typeof a&&(d=a.endpoint,p=a.timeout,a=a.service);this.id=b();this.service=a;this.timeout=p;this.endpoint=d||this.endpoint;if(!this.endpoint)throw l(1);this.setPort(this.endpoint);this.pending=new Set;this.receiver=h.receiver(this.id).on("_push",this.onPush.bind(this));
g("initialized",a)}function l(a,d){for(var p=[],b=1;b<arguments.length;++b)p[b-1]=arguments[b];return Error({1:"an endpoint must be defined",2:'Unable to establish a connection with "'+p[0]+'". Either the target endpoint is not alive or the Service is not `.listen()`ing.',3:'Method "'+p[0]+"\" didn't get a response. Either the target endpoint is not alive or the Service is not `.listen()`ing."}[a])}var n=e("./message/port-adaptors"),m=e("./emitter"),h=e("./message"),b=e("./utils").uuid;f.exports=
c;var g={0:function(){},1:function(a){return performance.mark("["+self.constructor.name+"][Client] - "+a)},2:function(a,d){for(var b=[],c=1;c<arguments.length;++c)b[c-1]=arguments[c];console.log.apply(console,[].concat(["[Client]"+("["+self.constructor.name+"]["+location.pathname+"]")+' - "'+a+'"'],$jscomp.arrayFromIterable(b)))}}[0],d=self.constructor.name;c.prototype={connect:function(){var a=this;g("connect");if(this.connected)return this.connected;g("connecting...",this.service);var b=new MessageChannel;
this.channel=b.port1;this.channel.start();var p={clientId:this.id,service:this.service,originEnv:d};return this.connected=this.message("_connect").set("transfer",[b.port2]).set("data",p).listen(b.port1).send().then(function(d){g("connected",d);d.event.target===a.channel?a.setPort(a.channel):(a.channel.close(),delete a.channel);a.receiver.listen(a.port)}).catch(function(d){"timeout"==(d&&d.message)&&(d=l(2,a.service),console.error(d.message));throw d;})},disconnect:function(a){var d=this;if(!this.connected)return Promise.resolve();
g("disconnecting ...");a={noRespond:a&&a.noRespond,data:this.id};this.cancelPending();return this.message("_disconnect").set(a).send().then(function(){return d.onDisconnected()})},method:function(a,d){for(var b=[],c=1;c<arguments.length;++c)b[c-1]=arguments[c];var e=this;return this.connect().then(function(){g("method",a);return e.message("_method").set({recipient:e.service,data:{name:a,args:b}}).send()}).then(function(a){return a.value}).catch(function(d){"timeout"==(d&&d.message)&&(d=l(3,a),console.error(d.message));
throw d;})},plugin:function(a){a(this,{Emitter:m,uuid:b});return this},message:function(a){var d=this;g("create message",a);var b=h(a).set("port",this.port).set("timeout",this.timeout).on("response",function(){return d.pending.delete(b)}).on("cancel",function(){return d.pending.delete(b)});this.pending.add(b);return b},cancelPending:function(){g("cancel pending");this.pending.forEach(function(a){a.cancel()});this.pending.clear()},pendingResponded:function(){var a=[];this.pending.forEach(function(d){return a.push(d.responded)});
return Promise.all(a)},onPush:function(a){g("on push",a.data);this._emit(a.data.type,a.data.data)},onDisconnected:function(){var a=this;delete this.connected;this.pendingResponded().then(function(){g("disconnected");a.channel&&a.channel.close();a._emit("disconnected")})},setPort:function(a){g("set port");this.port=n(a)},destroy:function(){var a=this;return this.disconnect().then(function(){a.destroyed||(g("destroy"),a.destroyed=!0,a.receiver.destroy(),a._off(),a.port=a.endpoint=a.receiver=null)})},
_on:m.prototype.on,_off:m.prototype.off,_emit:m.prototype.emit};c.prototype.on=function(a,d){var b=this;this.connect().then(function(){g("bind on",a);m.prototype.on.call(b,a,d);b.message("_on").set("noRespond",!0).set("data",{name:a,clientId:b.id}).send(b.port)});return this};c.prototype.off=function(a,d){var b=this;this.connect().then(function(){m.prototype.off.call(b,a,d);b.message("_off").set("noRespond",!0).set("data",{name:a,clientId:b.id}).send(b.port)});return this}},{"./emitter":3,"./message":4,
"./message/port-adaptors":5,"./utils":7}],3:[function(e,f,k){function c(e){if(e)return Object.assign(e,c.prototype)}f.exports=c;c.prototype={on:function(c,e){this._callbacks||(this._callbacks={});this._callbacks[c]||(this._callbacks[c]=[]);this._callbacks[c].push(e);return this},off:function(c,e){if(this._callbacks)switch(arguments.length){case 0:this._callbacks={};break;case 1:delete this._callbacks[c];break;default:var f=this._callbacks[c];if(!f)return;var h=f.indexOf(e);~h&&f.splice(h,1)}return this},
emit:function(c,e){if(this._callbacks)for(var f=this._callbacks[c]||[],f=f.concat(this._callbacks["*"]||[]),h=0;h<f.length;h++)f[h].call(this,e,c);return this}};e=c.prototype;e.off=e.off;e.on=e.on},{}],4:[function(e,f,k){function c(a){this.cancelled=!1;this.listeners=[];this.deferred=b();this.listen=this.listen.bind(this);this.onMessage=this.onMessage.bind(this);this.onTimeout=this.onTimeout.bind(this);"object"===typeof a?this.setupInbound(a):this.setupOutbound(a);d("initialized",this.type)}function l(a){this.name=
a;this.ports=new Set;this.onMessage=this.onMessage.bind(this);this.listen=this.listen.bind(this);this.unlisten=this.unlisten.bind(this);d("receiver initialized",a)}function n(a,d){for(var b=1;b<arguments.length;++b);return Error({1:".send() can only be called once",2:"response already sent for this message",3:"a port must be defined",4:"timeout"}[a])}var m=e("./port-adaptors"),h=e("../emitter");e=e("../utils");var b=e.deferred,g=e.uuid;k=f.exports=function(a){return new c(a)};k.receiver=function(a,
d){return new l(a,d)};k.Receiver=l;k.Message=c;var d={0:function(){},1:function(a){return performance.mark("["+self.constructor.name+"][Message] - "+a)},2:function(a,d){for(var b=[],c=1;c<arguments.length;++c)b[c-1]=arguments[c];console.log.apply(console,[].concat(["[Message]"+("["+self.constructor.name+"]["+location.pathname+"]")+' - "'+a+'"'],$jscomp.arrayFromIterable(b)))}}[0];c.prototype={setupOutbound:function(a){this.id=g();this.type=a;this.sent=!1;this.recipient="*"},setupInbound:function(a){d("inbound");
this.hasResponded=!1;this.setSourcePort(a.source||a.target);this.event=a;Object.assign(this,a.data)},setSourcePort:function(a){d("set source",a.constructor.name);this.sourcePort=m(a,{ready:!0});return this},set:function(a,b){d("set",a,b);"object"==typeof a?Object.assign(this,a):this[a]=b;return this},serialize:function(){return{id:this.id,type:this.type,data:this.data,recipient:this.recipient,noRespond:this.noRespond}},preventDefault:function(){d("prevent default");this.defaultPrevented=!0},send:function(a){d("send",
this.type);if(this.sent)throw n(1);var b=this.serialize(),c=!this.noRespond;this.port=a?m(a):this.port;if(!this.port)throw n(3);c?(this.listen(this.port),this.setResponseTimeout()):this.deferred.resolve();this.port.postMessage(b,this.getTransfer());d("sent",b);return this.deferred.promise},setResponseTimeout:function(){!1!==this.timeout&&(this._timer=setTimeout(this.onTimeout,this.timeout||2E3))},clearResponseTimeout:function(){clearTimeout(this._timer)},getTransfer:function(){return this.transfer||
this.event&&this.event.ports},onMessage:function(a){if(a.data.response&&a.data.id===this.id&&!this.cancelled)this.onResponse(a)},onTimeout:function(){d("response timeout",this.type);this.silentTimeout||this.deferred.reject(n(4));this.teardown()},listen:function(a){d("add response listener",a);a=m(a);a.addListener(this.onMessage,this.listen);this.listeners.push(a);return this},unlisten:function(){var a=this;d("remove response listeners");this.listeners.forEach(function(d){return d.removeListener(a.onMessage)});
this.listeners=[]},cancel:function(){this.teardown();this.cancelled=!0;this.emit("cancel")},teardown:function(){this.clearResponseTimeout();this.unlisten()},respond:function(a){function b(a){d("resolve",a);e({type:"resolve",value:a})}function c(a){a:switch(a&&a.constructor.name){case "DOMException":case "Error":a={message:a.message};break a;case "DOMError":a={message:a.message,name:a.name};break a}d("reject",a);e({type:"reject",value:a})}function e(a){g.response=a;g.sourcePort.postMessage({id:g.id,
response:a},g.transfer);d("responded with:",a)}d("respond",a,this.id);if(this.hasResponded)throw n(2);if(this.sourcePort&&!this.noRespond){this.hasResponded=!0;var g=this;this.error&&c(this.error);Promise.resolve(a).then(b,c).catch(c)}},forward:function(a){var b=this;d("forward");return this.set("silentTimeout",!0).send(a).then(function(a){return b.respond(a.value)})},onResponse:function(a){d("on response",a.data);var b=a.data.response,c="reject"==b.type?b.value:b;b.event=a;this.response=b;this.teardown();
this.deferred[this.response.type](c);this.emit("response",b)}};h(c.prototype);l.prototype={listen:function(a){d("listen");a=m(a||self,{receiver:!0});if(!this.ports.has(a))return a.addListener(this.onMessage,this.listen),this.ports.add(a),this},unlisten:function(){var a=this;d("unlisten");this.ports.forEach(function(d){return d.removeListener(a.onMessage)})},onMessage:function(a){if(a.data.id&&a.data.type&&this.isRecipient(a.data.recipient)&&(d("receiver on message",a.data),a=new c(a),this.emit("message",
a),!a.defaultPrevented))try{this.emit(a.type,a)}catch(b){throw a.error=b,a.respond(),b;}},isRecipient:function(a){return a==this.name||"*"==a||"*"==this.name},destroy:function(){this.unlisten();delete this.name;return this}};h(l.prototype)},{"../emitter":3,"../utils":7,"./port-adaptors":5}],5:[function(e,f,k){function c(d){this.target=d}function l(d,a,b){d.addEventListener(a,b)}function n(d,a,b){a={data:a,source:self};b&&(a.ports=b);d.dispatchEvent(new MessageEvent("message",a))}var m=e("../utils").deferred;
f.exports=function(d,a){if(!d)throw Error({1:"target is undefined"}[1]);if(d&&d.addListener)return d;var e=b[d.constructor.name];return e?e(d,a):new c(d,a)};var h=c.prototype={constructor:c,addListener:function(d){this.target.addEventListener("message",d)},removeListener:function(d){this.target.removeEventListener("message",d)},postMessage:function(d,a){this.target.postMessage(d,a)}},b={HTMLIFrameElement:function(d){var a=g(d);return{addListener:function(a){window.addEventListener("message",a)},removeListener:function(a){window.removeEventListener("message",
a)},postMessage:function(b,c){a.then(function(){return n(d.contentWindow,b,c)})}}},BroadcastChannel:function(b,a){function c(){var a=m();b.postMessage("ready?");l(b,"message",function q(c){"ready"==c.data&&(b.removeEventListener("message",q),a.resolve())});return a.promise}var e=a&&a.receiver,g=a&&a.ready,g=g||e?Promise.resolve():c();e&&(b.postMessage("ready"),l(b,"message",function(a){"ready?"==a.data&&b.postMessage("ready")}));return{target:b,addListener:h.addListener,removeListener:h.removeListener,
postMessage:function(a,c){g.then(function(){return b.postMessage(a,c)})}}},Window:function(b,a){var c=a&&a.ready||b===parent||b===self,c=c?Promise.resolve():g(b);return{addListener:function(a){window.addEventListener("message",a)},removeListener:function(a){window.removeEventListener("message",a)},postMessage:function(a,e){c.then(function(){return n(b,a,e)})}}},SharedWorker:function(b){b.port.start();return new c(b.port)},SharedWorkerGlobalScope:function(){var b=[];return{postMessage:function(){},
addListener:function(a,c){this.onconnect=function(a){a=a.ports[0];b.push(a);a.start();c(a)};self.addEventListener("connect",this.onconnect)},removeListener:function(a){self.removeEventListener("connect",this.onconnect);b.forEach(function(b){b.close();b.removeEventListener("message",a)})}}}},g=function(){if("undefined"!=typeof window){var b=window.opener||window.parent,a=new WeakSet;b!=self&&("loading"===document.readyState?l(window,"DOMContentLoaded",function p(){window.removeEventListener("DOMContentLoaded",
p);n(b,"load")}):n(b,"load"));l(self,"message",function(b){return"load"==b.data&&a.add(b.source)});return function(b){var c=b.contentWindow||b;if(a.has(c)||c==window.parent)return Promise.resolve();var d=m();l(window,"message",function q(a){"load"==a.data&&a.source==c&&(window.removeEventListener("message",q),d.resolve())});return d.promise}}}()},{"../utils":7}],6:[function(e,f,k){function c(b){if(!(this instanceof c))return new c(b);m.Receiver.call(this,b);this.clients={};this.methods={};this.on("_disconnect",
this.onDisconnect.bind(this)).on("_connect",this.onConnect.bind(this)).on("_method",this.onMethod.bind(this)).on("_off",this.onOff.bind(this)).on("_on",this.onOn.bind(this));this.destroy=this.destroy.bind(this);h("initialized",b)}function l(b){var c=[].slice.call(arguments,1);return Error({4:'method "'+c[0]+"\" doesn't exist"}[b])}var n=e("./utils").uuid,m=e("./message");e=m.Receiver;f.exports=c;var h={0:function(){},1:function(b){return performance.mark("["+self.constructor.name+"][Service] - "+
b)},2:function(b,c){for(var d=[],a=1;a<arguments.length;++a)d[a-1]=arguments[a];console.log.apply(console,[].concat(["[Service]"+("["+self.constructor.name+"]["+location.pathname+"]")+' - "'+b+'"'],$jscomp.arrayFromIterable(d)))}}[0];c.prototype=Object.create(e.prototype);c.prototype.inWindow="Window"===constructor.name;c.prototype.method=function(b,c){this.methods[b]=c;return this};c.prototype.broadcast=function(b,c,d){var a=this;h("broadcast",b,c,d);this.eachClient(function(e){if(!d||~d.indexOf(e.id))h("broadcasting to",
e.id),a.push(b,c,e.id,{noRespond:!0})});return this};c.prototype.push=function(b,c,d,a){a=a&&a.noRespond;var e=this.getClient(d);return m("_push").set({recipient:d,noRespond:a,data:{type:b,data:c}}).send(e.port)};c.prototype.eachClient=function(b){for(var c in this.clients)b(this.clients[c])};c.prototype.getClient=function(b){return this.clients[b]};c.prototype.onConnect=function(b){h("connection attempt",b.data,this.name);var c=b.data,d=c.clientId;d&&c.service===this.name&&!this.clients[d]&&(this.emit("before-connect",
b),b.defaultPrevented||(this.upgradeChannel(b),this.addClient(d,b.sourcePort),b.respond(),this.emit("connected",d),h("connected",d)))};c.prototype.upgradeChannel=function(b){if(!this.inWindow||"Window"!==b.data.originEnv){var c=b.event.ports;if(c=c&&c[0])b.setSourcePort(c),this.listen(c),c.start();h("channel upgraded")}};c.prototype.onDisconnect=function(b){var c=this.clients[b.data];c&&(this.emit("before-disconnect",b),b.defaultPrevented||(this.removeClient(c.id),b.respond(),this.emit("disconnected",
c.id),h("disconnected",c.id)))};c.prototype.onMethod=function(b){h("on method",b.data);this.emit("before-method",b);if(!b.defaultPrevented){var c=b.data,d=c.name,a=this.methods[d],e;if(!a)throw l(4,d);try{e=a.apply(this,c.args)}catch(f){b.error=f}b.respond(e)}};c.prototype.onOn=function(b){h("on on",b.data);this.emit("on",b.data)};c.prototype.onOff=function(b){h("on off");this.emit("off",b.data)};c.prototype.addClient=function(b,c){this.clients[b]={id:b,port:c}};c.prototype.removeClient=function(b){delete this.clients[b]};
c.prototype.plugin=function(b){b(this,{uuid:n});return this};c.prototype.disconnect=function(b){this.removeClient(b.id);m("disconnect").set({recipient:b.id,noRespond:!0}).send(b.port)};c.prototype.destroy=function(){delete this.clients;this.unlisten();this.off()};f=c.prototype;f.broadcast=f.broadcast;f.destroy=f.destroy;f.method=f.method;f.plugin=f.plugin},{"./message":4,"./utils":7}],7:[function(e,f,k){k.uuid=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(c){var e=
16*Math.random()|0;return("x"==c?e:e&3|8).toString(16)})};k.deferred=function(){var c={};c.promise=new Promise(function(e,f){c.resolve=e;c.reject=f});return c}},{}]},{},[1]);