mirror of
https://github.com/leoherzog/TorrentParts.git
synced 2026-10-30 11:44:14 -07:00
Compare commits
25
Commits
v1.2.1
..
a086867ff7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a086867ff7 | ||
|
|
74d74f8432 | ||
|
|
570df30bcc | ||
|
|
615fe5092c | ||
|
|
dc93c4722e | ||
|
|
b2496a7719 | ||
|
|
5791f8f749 | ||
|
|
c4af414e16 | ||
|
|
d22fdf219c | ||
|
|
d60f8ffcf1 | ||
|
|
0c5f522459 | ||
|
|
f81243896c | ||
|
|
41f408d828 | ||
|
|
e17b51276b | ||
|
|
c54f496dcc | ||
|
|
2e584fe04f | ||
|
|
307af881ad | ||
|
|
09f885238e | ||
|
|
fdcf397f64 | ||
|
|
6d6f53d288 | ||
|
|
b477e9c8c9 | ||
|
|
1ad87324d2 | ||
|
|
418cb0c6b7 | ||
|
|
2d908ecf02 | ||
|
|
a1296b456d |
No files matched your search
@@ -24,7 +24,6 @@ This project wouldn't be possible without the fantastic work of:
|
||||
- [@feross](https://github.com/feross) and contributors, for [`parse-torrent`](https://github.com/webtorrent/parse-torrent) and [`WebTorrent`](https://github.com/webtorrent/webtorrent)
|
||||
- [@cvisuri](https://github.com/cvisuri), for design work
|
||||
- [@CorralPeltzer](https://github.com/CorralPeltzer), for [`newTrackon`](https://github.com/CorralPeltzer/newTrackon)
|
||||
- [@substack](https://github.com/substack) and contributors, for [`Browserify`](https://github.com/browserify/browserify)
|
||||
- [Cloudflare Pages](https://pages.cloudflare.com/) hosting
|
||||
|
||||
## License
|
||||
@@ -42,24 +41,53 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
## About Me
|
||||
|
||||
<a href="https://herzog.tech/" target="_blank">
|
||||
<img src="https://herzog.tech/signature/link.svg.png" width="32px" />
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://herzog.tech/signature/link-light.svg.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://herzog.tech/signature/link.svg.png">
|
||||
<img src="https://herzog.tech/signature/link.svg.png" width="32px">
|
||||
</picture>
|
||||
</a>
|
||||
<a href="https://twitter.com/xd1936" target="_blank">
|
||||
<img src="https://herzog.tech/signature/twitter.svg.png" width="32px" />
|
||||
<a href="https://mastodon.social/@herzog" target="_blank">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://herzog.tech/signature/mastodon-light.svg.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://herzog.tech/signature/mastodon.svg.png">
|
||||
<img src="https://herzog.tech/signature/mastodon.svg.png" width="32px">
|
||||
</picture>
|
||||
</a>
|
||||
<a href="https://github.com/leoherzog" target="_blank">
|
||||
<img src="https://herzog.tech/signature/github.svg.png" width="32px" />
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://herzog.tech/signature/github-light.svg.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://herzog.tech/signature/github.svg.png">
|
||||
<img src="https://herzog.tech/signature/github.svg.png" width="32px">
|
||||
</picture>
|
||||
</a>
|
||||
<a href="https://keybase.io/leoherzog" target="_blank">
|
||||
<img src="https://herzog.tech/signature/keybase.svg.png" width="32px" />
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://herzog.tech/signature/keybase-light.svg.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://herzog.tech/signature/keybase.svg.png">
|
||||
<img src="https://herzog.tech/signature/keybase.svg.png" width="32px">
|
||||
</picture>
|
||||
</a>
|
||||
<a href="https://www.linkedin.com/in/leoherzog" target="_blank">
|
||||
<img src="https://herzog.tech/signature/linkedin.svg.png" width="32px" />
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://herzog.tech/signature/linkedin-light.svg.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://herzog.tech/signature/linkedin.svg.png">
|
||||
<img src="https://herzog.tech/signature/linkedin.svg.png" width="32px">
|
||||
</picture>
|
||||
</a>
|
||||
<a href="https://hope.edu/directory/people/herzog-leo/" target="_blank">
|
||||
<img src="https://herzog.tech/signature/anchor.svg.png" width="32px" />
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://herzog.tech/signature/anchor-light.svg.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://herzog.tech/signature/anchor.svg.png">
|
||||
<img src="https://herzog.tech/signature/anchor.svg.png" width="32px">
|
||||
</picture>
|
||||
</a>
|
||||
<br />
|
||||
<a href="https://www.buymeacoffee.com/leoherzog" target="_blank">
|
||||
<img src="https://cdn.buymeacoffee.com/buttons/lato-black.png" alt="Buy Me A Coffee" width="217px" />
|
||||
<a href="https://herzog.tech/$" target="_blank">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://herzog.tech/signature/mug-tea-saucer-solid-light.svg.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://herzog.tech/signature/mug-tea-saucer-solid.svg.png">
|
||||
<img src="https://herzog.tech/signature/mug-tea-saucer-solid.svg.png" alt="Buy Me A Tea" width="32px">
|
||||
</picture>
|
||||
Found this helpful? Buy me a tea!
|
||||
</a>
|
||||
-63058
File diff suppressed because it is too large.
Load diff
Vendored
-108
@@ -1,108 +0,0 @@
|
||||
!function e(t,i,n){function r(a,o){if(!i[a]){if(!t[a]){var c="function"==typeof require&&require;if(!o&&c)return c(a,!0);if(s)return s(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=i[a]={exports:{}};t[a][0].call(u.exports,(function(e){return r(t[a][1][e]||e)}),u,u.exports,e,t,i,n)}return i[a].exports}for(var s="function"==typeof require&&require,a=0;a<n.length;a++)r(n[a]);return r}({1:[function(e,t,i){(function(e){(function(){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function s(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}Object.defineProperty(i,"__esModule",{value:!0});var a=Math.max,o=Math.min,c=Math.round;function l(){var e=navigator.userAgentData;return null!=e&&e.brands?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function u(){return!/^((?!chrome|android).)*safari/i.test(l())}function p(e,i,s){void 0===i&&(i=!1),void 0===s&&(s=!1);var a=e.getBoundingClientRect(),o=1,l=1;i&&r(e)&&(o=e.offsetWidth>0&&c(a.width)/e.offsetWidth||1,l=e.offsetHeight>0&&c(a.height)/e.offsetHeight||1);var p=(n(e)?t(e):window).visualViewport,d=!u()&&s,f=(a.left+(d&&p?p.offsetLeft:0))/o,h=(a.top+(d&&p?p.offsetTop:0))/l,m=a.width/o,b=a.height/l;return{width:m,height:b,top:h,right:f+m,bottom:h+b,left:f,x:f,y:h}}function d(e){var i=t(e);return{scrollLeft:i.pageXOffset,scrollTop:i.pageYOffset}}function f(e){return e?(e.nodeName||"").toLowerCase():null}function h(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function m(e){return p(h(e)).left+d(e).scrollLeft}function b(e){return t(e).getComputedStyle(e)}function v(e){var t=b(e),i=t.overflow,n=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+r+n)}function g(e,i,n){void 0===n&&(n=!1);var s,a,o=r(i),l=r(i)&&function(e){var t=e.getBoundingClientRect(),i=c(t.width)/e.offsetWidth||1,n=c(t.height)/e.offsetHeight||1;return 1!==i||1!==n}(i),u=h(i),b=p(e,l,n),g={scrollLeft:0,scrollTop:0},y={x:0,y:0};return(o||!o&&!n)&&(("body"!==f(i)||v(u))&&(g=(s=i)!==t(s)&&r(s)?{scrollLeft:(a=s).scrollLeft,scrollTop:a.scrollTop}:d(s)),r(i)?((y=p(i,!0)).x+=i.clientLeft,y.y+=i.clientTop):u&&(y.x=m(u))),{x:b.left+g.scrollLeft-y.x,y:b.top+g.scrollTop-y.y,width:b.width,height:b.height}}function y(e){var t=p(e),i=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:n}}function x(e){return"html"===f(e)?e:e.assignedSlot||e.parentNode||(s(e)?e.host:null)||h(e)}function _(e){return["html","body","#document"].indexOf(f(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:_(x(e))}function w(e,i){var n;void 0===i&&(i=[]);var r=_(e),s=r===(null==(n=e.ownerDocument)?void 0:n.body),a=t(r),o=s?[a].concat(a.visualViewport||[],v(r)?r:[]):r,c=i.concat(o);return s?c:c.concat(w(x(o)))}function k(e){return["table","td","th"].indexOf(f(e))>=0}function E(e){return r(e)&&"fixed"!==b(e).position?e.offsetParent:null}function S(e){for(var i=t(e),n=E(e);n&&k(n)&&"static"===b(n).position;)n=E(n);return n&&("html"===f(n)||"body"===f(n)&&"static"===b(n).position)?i:n||function(e){var t=/firefox/i.test(l());if(/Trident/i.test(l())&&r(e)&&"fixed"===b(e).position)return null;var i=x(e);for(s(i)&&(i=i.host);r(i)&&["html","body"].indexOf(f(i))<0;){var n=b(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||t&&"filter"===n.willChange||t&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(e)||i}var M="top",A="bottom",j="right",I="left",T="auto",C=[M,A,j,I],B="start",R="end",L="viewport",O="popper",P=C.reduce((function(e,t){return e.concat([t+"-"+B,t+"-"+R])}),[]),U=[].concat(C,[T]).reduce((function(e,t){return e.concat([t,t+"-"+B,t+"-"+R])}),[]),q=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function N(e){var t=new Map,i=new Set,n=[];function r(e){i.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!i.has(e)){var n=t.get(e);n&&r(n)}})),n.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){i.has(e.name)||r(e)})),n}function D(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return[].concat(i).reduce((function(e,t){return e.replace(/%s/,t)}),e)}var z='Popper: modifier "%s" provided an invalid %s property, expected %s but got %s',H=["name","enabled","phase","fn","effect","requires","options"];function F(e){return e.split("-")[0]}function W(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(i&&s(i)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.hostLine truncated
|
||||
/*! bittorrent-protocol. MIT License. WebTorrent LLC <https://webtorrent.io/opensource> */
|
||||
const n=e("unordered-array-remove"),r=e("bencode"),s=e("bitfield").default,a=e("crypto"),o=e("debug")("bittorrent-protocol"),c=e("randombytes"),l=e("simple-sha1"),u=e("speedometer"),p=e("readable-stream"),d=e("rc4"),f=i.from("BitTorrent protocol"),h=i.from([0,0,0,0]),m=i.from([0,0,0,1,0]),b=i.from([0,0,0,1,1]),v=i.from([0,0,0,1,2]),g=i.from([0,0,0,1,3]),y=[0,0,0,0,0,0,0,0],x=[0,0,0,3,9,0,0],_=i.from([0,0,0,1,14]),w=i.from([0,0,0,1,15]),k=i.from([0,0,0,0,0,0,0,0]),E=i.from([0,0,1,2]),S=i.from([0,0,0,2]);function M(e,t){for(let i=e.length;i--;)e[i]^=t[i];return e}class A{constructor(e,t,i,n){this.piece=e,this.offset=t,this.length=i,this.callback=n}}class j{constructor(){this.buffer=new Uint8Array}get(e){return!0}set(e){}}class I extends p.Duplex{constructor(e=null,t=0,i=!1){super(),this._debugId=c(4).toString("hex"),this._debug("new wire"),this.peerId=null,this.peerIdBuffer=null,this.type=e,this.amChoking=!0,this.amInterested=!1,this.peerChoking=!0,this.peerInterested=!1,this.peerPieces=new s(0,{grow:4e5}),this.extensions={},this.peerExtensions={},this.requests=[],this.peerRequests=[],this.extendedMapping={},this.peerExtendedMapping={},this.extendedHandshake={},this.peerExtendedHandshake={},this.hasFast=!1,this.allowedFastSet=[],this.peerAllowedFastSet=[],this._ext={},this._nextExt=1,this.uploaded=0,this.downloaded=0,this.uploadSpeed=u(),this.downloadSpeed=u(),this._keepAliveInterval=null,this._timeout=null,this._timeoutMs=0,this._timeoutExpiresAt=null,this.destroyed=!1,this._finished=!1,this._parserSize=0,this._parser=null,this._buffer=[],this._bufferSize=0,this._peEnabled=i,i?(this._dh=a.createDiffieHellman("ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a36210000000000090563","hex",2),this._myPubKey=this._dh.generateKeys("hex")):this._myPubKey=null,this._peerPubKey=null,this._sharedSecret=null,this._peerCryptoProvide=[],this._cryptoHandshakeDone=!1,this._cryptoSyncPattern=null,this._waitMaxBytes=null,this._encryptionMethod=null,this._encryptGenerator=null,this._decryptGenerator=null,this._setGenerators=!1,this.once("finish",(()=>this._onFinish())),this.on("finish",this._onFinish),this._debug("type:",this.type),"tcpIncoming"===this.type&&this._peEnabled?this._determineHandshakeType():"tcpOutgoing"===this.type&&this._peEnabled&&0===t?this._parsePe2():this._parseHandshake(null)}setKeepAlive(e){this._debug("setKeepAlive %s",e),clearInterval(this._keepAliveInterval),!1!==e&&(this._keepAliveInterval=setInterval((()=>{this.keepAlive()}),55e3))}setTimeout(e,t){this._debug("setTimeout ms=%d unref=%s",e,t),this._timeoutMs=e,this._timeoutUnref=!!t,this._resetTimeout(!0)}destroy(){if(!this.destroyed)return this.destroyed=!0,this._debug("destroy"),this.emit("close"),this.end(),this}end(...e){return this._debug("end"),this._onUninterested(),this._onChoke(),super.end(...e)}use(e){const t=e.prototype.name;if(!t)throw new Error('Extension class requires a "name" property on the prototype');this._debug("use extension.name=%s",t);const i=this._nextExt,n=new e(this);function r(){}"function"!=typeof n.onHandshake&&(n.onHandshake=r),"function"!=typeof n.onExtendedHandshake&&(n.onExtendedHandshake=r),"function"!=typeof n.onMessage&&(n.onMessage=r),this.extendedMapping[i]=t,this._ext[t]=n,this[t]=n,this._nextExt+=1}keepAlive(){this._debug("keep-alive"),this._push(h)}sendPe1(){if(this._peEnabled){const e=Math.floor(513*Math.random()),t=c(e);this._push(i.concat([i.from(this._myPubKey,"hex"),t]))}}sendPe2(){const e=Math.floor(513*Math.random()),t=c(e);this._push(i.concat([i.from(this._myPubKey,"hex"),t]))}sendPe3(e){this.setEncrypt(this._sharedSecret,e);const t=i.from(l.sync(i.from(this._utfToHex("req1")+this._sharedSecret,"hex")),"hex"),n=M(i.from(l.sync(i.from(this._utfToHex("req2")+e,"hex")),"hex"),i.from(l.sync(i.from(this._utfToHex("req3")+this._sharedSecret,"hex")),"hex")),r=c(2).readUInt16BE(0)%512,s=c(r);let a=i.alloc(14+r+2);k.copy(a),E.copy(a,8),a.writeInt16BE(r,12),s.copy(a,14),a.writeInt16BE(0,14+r),a=this._encryptHandshake(a),this._push(i.concat([t,n,a]))}sendPe4(e){this.setEncrypt(this._sharedSecret,e);const t=c(2).readUInt16BE(0)%512,n=c(t);let r=i.alloc(14+t);k.copy(r),S.copy(r,8),r.writeInt16BE(t,12),n.copy(r,14),r=this._encryptHandshake(r),this._push(r),this._cryptoHandshakeDone=!0,this._debug("completed crypto handshake")}handshake(e,t,n){let r,s;if("string"==typeof e?(e=e.toLowerCase(),r=i.from(e,"hex")):(r=e,e=r.toString("hex")),"string"==typeof t?s=i.from(t,"hex"):(s=t,t=s.toString("hex")),this._infoHash=r,20!==r.length||20!==s.length)throw new Error("infoHash and peerId MUST have length 20");this._debug("handshake i=%s p=%s exts=%o",e,t,n);const a=i.from(y);this.extensions={extended:!0,dht:!(!n||!n.dht),fast:!(!n||!n.fast)},a[5]|=16,this.extensions.dht&&(a[7]|=1),this.extensions.fast&&(a[7]|=4),this.extensions.fast&&this.peerExtensions.fast&&(this._debug("fast extension is enabled"),thiLine truncated
|
||||
/*! blob-to-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
t.exports=function(t,i){if("undefined"==typeof Blob||!(t instanceof Blob))throw new Error("first argument must be a Blob");if("function"!=typeof i)throw new Error("second argument must be a function");const n=new FileReader;n.addEventListener("loadend",(function t(r){n.removeEventListener("loadend",t,!1),r.error?i(r.error):i(null,e.from(n.result))}),!1),n.readAsArrayBuffer(t)}}).call(this)}).call(this,e("buffer").Buffer)},{buffer:110}],48:[function(e,t,i){function n(e,t){if("string"==typeof e[0])return e.join("");if("number"==typeof e[0])return new Uint8Array(e);const i=new Uint8Array(t);let n=0;for(let t=0,r=e.length;t<r;t++){const r=e[t];i.set(r,n),n+=r.byteLength||r.length}return i}t.exports=async function*(e,t=512,i={}){"object"==typeof t&&(t=(i=t).size);let{nopad:r,zeroPadding:s=!0}=i;r&&(s=!1);let a=[],o=0;for await(const i of e)if(o+=i.byteLength||i.length||1,a.push(i),o>=t){const e=n(a,o);let i=0;for(;o>=t;)yield e.slice(i,i+t),o-=t,i+=t;a=[e.slice(i,e.length)]}o&&(yield n(a,s?t:o))}},{}],49:[function(e,t,i){(function(i){(function(){const{Transform:n}=e("readable-stream");t.exports=class extends n{constructor(e,t={}){super(t),"object"==typeof e&&(e=(t=e).size),this.size=e||512;const{nopad:i,zeroPadding:n=!0}=t;this._zeroPadding=!i&&!!n,this._buffered=[],this._bufferedBytes=0}_transform(e,t,n){for(this._bufferedBytes+=e.length,this._buffered.push(e);this._bufferedBytes>=this.size;){this._bufferedBytes-=this.size;const e=[];let t=0;for(;t<this.size;){const i=this._buffered.shift();if(t+i.length<=this.size)e.push(i),t+=i.length;else{const n=this.size-t;e.push(i.slice(0,n)),t+=n,this._buffered.unshift(i.slice(n))}}this.push(i.concat(e,this.size))}n()}_flush(){if(this._bufferedBytes&&this._zeroPadding){const e=i.alloc(this.size-this._bufferedBytes);this._buffered.push(e),this.push(i.concat(this._buffered)),this._buffered=null}else this._bufferedBytes&&(this.push(i.concat(this._buffered)),this._buffered=null);this.push(null)}}}).call(this)}).call(this,e("buffer").Buffer)},{buffer:110,"readable-stream":64}],50:[function(e,t,i){arguments[4][28][0].apply(i,arguments)},{dup:28}],51:[function(e,t,i){arguments[4][29][0].apply(i,arguments)},{"./_stream_readable":53,"./_stream_writable":55,_process:296,dup:29,inherits:217}],52:[function(e,t,i){arguments[4][30][0].apply(i,arguments)},{"./_stream_transform":54,dup:30,inherits:217}],53:[function(e,t,i){arguments[4][31][0].apply(i,arguments)},{"../errors":50,"./_stream_duplex":51,"./internal/streams/async_iterator":56,"./internal/streams/buffer_list":57,"./internal/streams/destroy":58,"./internal/streams/from":60,"./internal/streams/state":62,"./internal/streams/stream":63,_process:296,buffer:110,dup:31,events:178,inherits:217,"string_decoder/":427,util:67}],54:[function(e,t,i){arguments[4][32][0].apply(i,arguments)},{"../errors":50,"./_stream_duplex":51,dup:32,inherits:217}],55:[function(e,t,i){arguments[4][33][0].apply(i,arguments)},{"../errors":50,"./_stream_duplex":51,"./internal/streams/destroy":58,"./internal/streams/state":62,"./internal/streams/stream":63,_process:296,buffer:110,dup:33,inherits:217,"util-deprecate":440}],56:[function(e,t,i){arguments[4][34][0].apply(i,arguments)},{"./end-of-stream":59,_process:296,dup:34}],57:[function(e,t,i){arguments[4][35][0].apply(i,arguments)},{buffer:110,dup:35,util:67}],58:[function(e,t,i){arguments[4][36][0].apply(i,arguments)},{_process:296,dup:36}],59:[function(e,t,i){arguments[4][37][0].apply(i,arguments)},{"../../../errors":50,dup:37}],60:[function(e,t,i){arguments[4][38][0].apply(i,arguments)},{dup:38}],61:[function(e,t,i){arguments[4][39][0].apply(i,arguments)},{"../../../errors":50,"./end-of-stream":59,dup:39}],62:[function(e,t,i){arguments[4][40][0].apply(i,arguments)},{"../../../errors":50,dup:40}],63:[function(e,t,i){arguments[4][41][0].apply(i,arguments)},{dup:41,events:178}],64:[function(e,t,i){arguments[4][42][0].apply(i,arguments)},{"./lib/_stream_duplex.js":51,"./lib/_stream_passthrough.js":52,"./lib/_stream_readable.js":53,"./lib/_stream_transform.js":54,"./lib/_stream_writable.js":55,"./lib/internal/streams/end-of-stream.js":59,"./lib/internal/streams/pipeline.js":61,dup:42}],65:[function(e,t,i){!function(t,i){"use strict";function n(e,t){if(!e)throw new Error(t||"Assertion failed")}function r(e,t){e.super_=t;var i=function(){};i.prototype=t.prototype,e.prototype=new i,e.prototype.constructor=e}function s(e,t,i){if(s.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(i=t,t=10),this._init(e||0,t||10,i||"be"))}var a;"object"==typeof t?t.exports=s:i.BN=s,s.BN=s,s.wordSize=26;try{a="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:e("buffer").Buffer}catch(e){}function o(e,t){var i=e.charCodeAt(t);return i>=48&&i<=57?i-48:i>=65&&i<=70?i-55:i>=97&&i<=102?i-87:void n(!1,"Invalid character in "+e)}function c(e,t,i){var n=o(e,i);return i-1>=t&&(n|=o(e,i-1)<<4),n}function l(e,t,i,r){for(var s=0,a=0,o=Math.min(e.length,i),c=t;c<o;c++){var
Line truncated
|
||||
/*!
|
||||
* The buffer module from node.js, for the browser.
|
||||
*
|
||||
* @author Feross Aboukhadijeh <https://feross.org>
|
||||
* @license MIT
|
||||
*/
|
||||
"use strict";var t=e("base64-js"),n=e("ieee754");i.Buffer=a,i.SlowBuffer=function(e){+e!=e&&(e=0);return a.alloc(+e)},i.INSPECT_MAX_BYTES=50;var r=2147483647;function s(e){if(e>r)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return t.__proto__=a.prototype,t}function a(e,t,i){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return l(e)}return o(e,t,i)}function o(e,t,i){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!a.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var i=0|d(e,t),n=s(i),r=n.write(e,t);r!==i&&(n=n.slice(0,r));return n}(e,t);if(ArrayBuffer.isView(e))return u(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(D(e,ArrayBuffer)||e&&D(e.buffer,ArrayBuffer))return function(e,t,i){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(i||0))throw new RangeError('"length" is outside of buffer bounds');var n;n=void 0===t&&void 0===i?new Uint8Array(e):void 0===i?new Uint8Array(e,t):new Uint8Array(e,t,i);return n.__proto__=a.prototype,n}(e,t,i);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return a.from(n,t,i);var r=function(e){if(a.isBuffer(e)){var t=0|p(e.length),i=s(t);return 0===i.length||e.copy(i,0,0,t),i}if(void 0!==e.length)return"number"!=typeof e.length||z(e.length)?s(0):u(e);if("Buffer"===e.type&&Array.isArray(e.data))return u(e.data)}(e);if(r)return r;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return a.from(e[Symbol.toPrimitive]("string"),t,i);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function l(e){return c(e),s(e<0?0:0|p(e))}function u(e){for(var t=e.length<0?0:0|p(e.length),i=s(t),n=0;n<t;n+=1)i[n]=255&e[n];return i}function p(e){if(e>=r)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r.toString(16)+" bytes");return 0|e}function d(e,t){if(a.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||D(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var i=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===i)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":return U(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return q(e).length;default:if(r)return n?-1:U(e).length;t=(""+t).toLowerCase(),r=!0}}function f(e,t,i){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===i||i>this.length)&&(i=this.length),i<=0)return"";if((i>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return j(this,t,i);case"utf8":case"utf-8":return E(this,t,i);case"ascii":return M(this,t,i);case"latin1":case"binary":return A(this,t,i);case"base64":return k(this,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,t,i);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function h(e,t,i){var n=e[t];e[t]=e[i],e[i]=n}function m(e,t,i,n,r){if(0===e.length)return-1;if("string"==typeof i?(n=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),z(i=+i)&&(i=r?0:e.length-1),i<0&&(i=e.length+i),i>=e.length){if(r)return-1;i=e.length-1}else if(i<0){if(!r)return-1;i=0}if("string"==typeof t&&(t=a.from(t,n)),a.isBuffer(t))return 0===t.length?-1:b(e,t,i,n,r);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,i):Uint8Array.prototype.lastIndexOf.call(e,t,i):b(e,[t],i,n,r);throw new TypeError("val must be string, number or Buffer")}function b(e,t,i,n,r){var s,a=1,o=e.length,c=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,o/=2,c/=2,i/=2}function l(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(r){var u=-1;for(s=i;s<o;s++)if(l(e,s)===l(t,-1===u?0:s-u)){if(-1===u&&(u=s),s-u+1===c)return u*a}else-1!==u&&(s-=s-u),u=-1}else for(i+c>o&&(i=o-c),s=i;s>=0;s--){for(var p=!0,d=0;d<c;d++)if(l(e,s+d)!==l(t,d)){p=!1;break}if(p)return s}return-1}function v(e,t,i,n){i=Number(i)||0;var r=e.length-i;n?(n=Number(n))>r&&(n=r):n=r;var s=t.length;n>s/2&&(n=s/2);for(var a=0;a<n;++a){var o=parseInt(t.substr(2*a,2),16);if(z(o))return a;e[i+a]=o}return a}funcLine truncated
|
||||
/*!
|
||||
* bytes
|
||||
* Copyright(c) 2012-2014 TJ Holowaychuk
|
||||
* Copyright(c) 2015 Jed Watson
|
||||
* MIT Licensed
|
||||
*/
|
||||
"use strict";t.exports=function(e,t){if("string"==typeof e)return c(e);if("number"==typeof e)return o(e,t);return null},t.exports.format=o,t.exports.parse=c;var n=/\B(?=(\d{3})+(?!\d))/g,r=/(?:\.0*|(\.[^0]+)0+)$/,s={b:1,kb:1024,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},a=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function o(e,t){if(!Number.isFinite(e))return null;var i=Math.abs(e),a=t&&t.thousandsSeparator||"",o=t&&t.unitSeparator||"",c=t&&void 0!==t.decimalPlaces?t.decimalPlaces:2,l=Boolean(t&&t.fixedDecimals),u=t&&t.unit||"";u&&s[u.toLowerCase()]||(u=i>=s.pb?"PB":i>=s.tb?"TB":i>=s.gb?"GB":i>=s.mb?"MB":i>=s.kb?"KB":"B");var p=(e/s[u.toLowerCase()]).toFixed(c);return l||(p=p.replace(r,"$1")),a&&(p=p.split(".").map((function(e,t){return 0===t?e.replace(n,a):e})).join(".")),p+o+u}function c(e){if("number"==typeof e&&!isNaN(e))return e;if("string"!=typeof e)return null;var t,i=a.exec(e),n="b";return i?(t=parseFloat(i[1]),n=i[4].toLowerCase()):(t=parseInt(e,10),n="b"),isNaN(t)?null:Math.floor(s[n]*t)}},{}],117:[function(e,t,i){
|
||||
/*! cache-chunk-store. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
const n=e("lru"),r=e("queue-microtask");t.exports=class{constructor(e,t){if(this.store=e,this.chunkLength=e.chunkLength,this.inProgressGets=new Map,!this.store||!this.store.get||!this.store.put)throw new Error("First argument must be abstract-chunk-store compliant");this.cache=new n(t)}put(e,t,i=(()=>{})){if(!this.cache)return r((()=>i(new Error("CacheStore closed"))));this.cache.remove(e),this.store.put(e,t,i)}get(e,t,i=(()=>{})){if("function"==typeof t)return this.get(e,null,t);if(!this.cache)return r((()=>i(new Error("CacheStore closed"))));t||(t={});let n=this.cache.get(e);if(n){const e=t.offset||0,s=t.length||n.length-e;return 0===e&&s===n.length||(n=n.slice(e,s+e)),r((()=>i(null,n)))}let s=this.inProgressGets.get(e);const a=!!s;s||(s=[],this.inProgressGets.set(e,s)),s.push({opts:t,cb:i}),a||this.store.get(e,((t,i)=>{t||null==this.cache||this.cache.set(e,i);const n=this.inProgressGets.get(e);this.inProgressGets.delete(e);for(const{opts:e,cb:r}of n)if(t)r(t);else{const t=e.offset||0,n=e.length||i.length-t;let s=i;0===t&&n===i.length||(s=i.slice(t,n+t)),r(null,s)}}))}close(e=(()=>{})){if(!this.cache)return r((()=>e(new Error("CacheStore closed"))));this.cache=null,this.store.close(e)}destroy(e=(()=>{})){if(!this.cache)return r((()=>e(new Error("CacheStore closed"))));this.cache=null,this.store.destroy(e)}}},{lru:226,"queue-microtask":309}],118:[function(e,t,i){arguments[4][28][0].apply(i,arguments)},{dup:28}],119:[function(e,t,i){arguments[4][29][0].apply(i,arguments)},{"./_stream_readable":121,"./_stream_writable":123,_process:296,dup:29,inherits:217}],120:[function(e,t,i){arguments[4][30][0].apply(i,arguments)},{"./_stream_transform":122,dup:30,inherits:217}],121:[function(e,t,i){arguments[4][31][0].apply(i,arguments)},{"../errors":118,"./_stream_duplex":119,"./internal/streams/async_iterator":124,"./internal/streams/buffer_list":125,"./internal/streams/destroy":126,"./internal/streams/from":128,"./internal/streams/state":130,"./internal/streams/stream":131,_process:296,buffer:110,dup:31,events:178,inherits:217,"string_decoder/":427,util:67}],122:[function(e,t,i){arguments[4][32][0].apply(i,arguments)},{"../errors":118,"./_stream_duplex":119,dup:32,inherits:217}],123:[function(e,t,i){arguments[4][33][0].apply(i,arguments)},{"../errors":118,"./_stream_duplex":119,"./internal/streams/destroy":126,"./internal/streams/state":130,"./internal/streams/stream":131,_process:296,buffer:110,dup:33,inherits:217,"util-deprecate":440}],124:[function(e,t,i){arguments[4][34][0].apply(i,arguments)},{"./end-of-stream":127,_process:296,dup:34}],125:[function(e,t,i){arguments[4][35][0].apply(i,arguments)},{buffer:110,dup:35,util:67}],126:[function(e,t,i){arguments[4][36][0].apply(i,arguments)},{_process:296,dup:36}],127:[function(e,t,i){arguments[4][37][0].apply(i,arguments)},{"../../../errors":118,dup:37}],128:[function(e,t,i){arguments[4][38][0].apply(i,arguments)},{dup:38}],129:[function(e,t,i){arguments[4][39][0].apply(i,arguments)},{"../../../errors":118,"./end-of-stream":127,dup:39}],130:[function(e,t,i){arguments[4][40][0].apply(i,arguments)},{"../../../errors":118,dup:40}],131:[function(e,t,i){arguments[4][41][0].apply(i,arguments)},{dup:41,events:178}],132:[function(e,t,i){arguments[4][42][0].apply(i,arguments)},{"./lib/_stream_duplex.js":119,"./lib/_stream_passthrough.js":120,"./lib/_stream_readable.js":121,"./lib/_stream_transform.js":122,"./lib/_stream_writable.js":123,"./lib/internal/streams/end-of-stream.js":127,"./lib/internal/streams/pipeline.js":129,dup:42}],133:[function(e,t,i){const n=e("block-stream2"),r=e("readable-stream");class s extends r.Writable{constructor(e,t,i={}){if(super(i),!e||!e.put||!e.get)throw new Error("First argument must be an abstract-chunk-store compliant store");if(!(t=Number(t)))throw new Error("Second argument must be a chunk length");const r=void 0!==i.zeroPadding&&i.zeroPadding;this._blockstream=new n(t,{...i,zeroPadding:r}),this._outstandingPuts=0,this._storeMaxOutstandingPuts=i.storeMaxOutstandingPuts||16;let s=0;this._blockstream.on("data",(t=>{this.destroyed||(this._outstandingPuts+=1,this._outstandingPuts>=this._storeMaxOutstandingPuts&&this._blockstream.pause(),e.put(s,t,(e=>{if(e)return this.destroy(e);this._outstandingPuts-=1,this._outstandingPuts<this._storeMaxOutstandingPuts&&this._blockstream.resume(),0===this._outstandingPuts&&"function"==typeof this._finalCb&&(this._finalCb(null),this._finalCb=null)})),s+=1)})).on("error",(e=>{this.destroy(e)}))}_write(e,t,i){this._blockstream.write(e,t,i)}_final(e){this._blockstream.end(),this._blockstream.once("end",(()=>{0===this._outstandingPuts?e(null):this._finalCb=e}))}destroy(e){this.destroyed||(this.destroyed=!0,e&&this.emit("error",e),this.emit("close"))}}t.exports=s},{"block-stream2":49,"readable-stream":132}],134:[function(e,t,i){var n=e("safe-buffer").Buffer,r=e("stream").Transform,s=e("string_decoder").StringDecoder;function a(e){r.call(this),this.hashMode="string"==typeof e,this.hashMode?this[e]=this._finalOrDigestLine truncated
|
||||
/*!
|
||||
* clipboard.js v2.0.11
|
||||
* https://clipboardjs.com/
|
||||
*
|
||||
* Licensed MIT © Zeno Rocha
|
||||
*/
|
||||
var n,r;n=this,r=function(){return function(){var e={686:function(e,t,i){"use strict";i.d(t,{default:function(){return k}});var n=i(279),r=i.n(n),s=i(370),a=i.n(s),o=i(817),c=i.n(o);function l(e){try{return document.execCommand(e)}catch(e){return!1}}var u=function(e){var t=c()(e);return l("cut"),t},p=function(e,t){var i=function(e){var t="rtl"===document.documentElement.getAttribute("dir"),i=document.createElement("textarea");i.style.fontSize="12pt",i.style.border="0",i.style.padding="0",i.style.margin="0",i.style.position="absolute",i.style[t?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;return i.style.top="".concat(n,"px"),i.setAttribute("readonly",""),i.value=e,i}(e);t.container.appendChild(i);var n=c()(i);return l("copy"),i.remove(),n},d=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{container:document.body},i="";return"string"==typeof e?i=p(e,t):e instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(null==e?void 0:e.type)?i=p(e.value,t):(i=c()(e),l("copy")),i};function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}var h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.action,i=void 0===t?"copy":t,n=e.container,r=e.target,s=e.text;if("copy"!==i&&"cut"!==i)throw new Error('Invalid "action" value, use either "copy" or "cut"');if(void 0!==r){if(!r||"object"!==f(r)||1!==r.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===i&&r.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===i&&(r.hasAttribute("readonly")||r.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes')}return s?d(s,{container:n}):r?"cut"===i?u(r):d(r,{container:n}):void 0};function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}function b(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function v(e,t){return v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},v(e,t)}function g(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var i,n=x(e);if(t){var r=x(this).constructor;i=Reflect.construct(n,arguments,r)}else i=n.apply(this,arguments);return y(this,i)}}function y(e,t){return!t||"object"!==m(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function x(e){return x=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},x(e)}function _(e,t){var i="data-clipboard-".concat(e);if(t.hasAttribute(i))return t.getAttribute(i)}var w=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&v(e,t)}(s,e);var t,i,n,r=g(s);function s(e,t){var i;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,s),(i=r.call(this)).resolveOptions(t),i.listenClick(e),i}return t=s,i=[{key:"resolveOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText,this.container="object"===m(e.container)?e.container:document.body}},{key:"listenClick",value:function(e){var t=this;this.listener=a()(e,"click",(function(e){return t.onClick(e)}))}},{key:"onClick",value:function(e){var t=e.delegateTarget||e.currentTarget,i=this.action(t)||"copy",n=h({action:i,container:this.container,target:this.target(t),text:this.text(t)});this.emit(n?"success":"error",{action:i,text:n,trigger:t,clearSelection:function(){t&&t.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(e){return _("action",e)}},{key:"defaultTarget",value:function(e){var t=_("target",e);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(e){return _("text",e)}},{key:"destroy",value:function(){this.listener.destroy()}}],n=[{key:"copy",value:function(e){var t=arguments.length>Line truncated
|
||||
/*! create-torrent. MIT License. WebTorrent LLC <https://webtorrent.io/opensource> */
|
||||
const n=e("bencode"),r=e("block-iterator"),s=e("piece-length"),a=e("path"),o=e("is-file"),c=e("junk"),l=e("join-async-iterator"),u=e("run-parallel"),p=e("queue-microtask"),d=e("simple-sha1");e("fast-readable-async-iterator");const f=e("./get-files");const h=Symbol("itemPath");function m(e,t,n){var r;if(r=e,"undefined"!=typeof FileList&&r instanceof FileList&&(e=Array.from(e)),Array.isArray(e)||(e=[e]),0===e.length)throw new Error("invalid input type");e.forEach((e=>{if(null==e)throw new Error(`invalid input type: ${e}`)})),1!==(e=e.map((e=>g(e)&&"string"==typeof e.path&&"function"==typeof f?e.path:e))).length||"string"==typeof e[0]||e[0].name||(e[0].name=t.name);let s=null;e.forEach(((t,i)=>{if("string"==typeof t)return;let n=t.fullPath||t.name;n||(n=`Unknown File ${i+1}`,t.unknownName=!0),t[h]=n.split("/"),t[h][0]||t[h].shift(),t[h].length<2?s=null:0===i&&e.length>1?s=t[h][0]:t[h][0]!==s&&(s=null)}));(void 0===t.filterJunkFiles||t.filterJunkFiles)&&(e=e.filter((e=>"string"==typeof e||!b(e[h])))),s&&e.forEach((e=>{const t=(i.isBuffer(e)||y(e))&&!e[h];"string"==typeof e||t||e[h].shift()})),!t.name&&s&&(t.name=s),t.name||e.some((e=>"string"==typeof e?(t.name=a.basename(e),!0):!e.unknownName&&(t.name=e[h][e[h].length-1],!0))),t.name||(t.name=`Unnamed Torrent ${Date.now()}`);const c=e.reduce(((e,t)=>e+Number("string"==typeof t)),0);let l=1===e.length;if(1===e.length&&"string"==typeof e[0]){if("function"!=typeof f)throw new Error("filesystem paths do not work in the browser");o(e[0],((e,t)=>{if(e)return n(e);l=t,d()}))}else p(d);function d(){u(e.map((e=>t=>{const n={};if(g(e))n.getStream=e.stream(),n.length=e.size;else if(i.isBuffer(e))n.getStream=[e],n.length=e.length;else{if(!y(e)){if("string"==typeof e){if("function"!=typeof f)throw new Error("filesystem paths do not work in the browser");return void f(e,c>1||l,t)}throw new Error("invalid input type")}n.getStream=async function*(e,t){for await(const i of e)t.length+=i.length,yield i}(e,n),n.length=0}n.path=e[h],t(null,n)})),((e,t)=>{if(e)return n(e);t=t.flat(),n(null,t,l)}))}}function b(e){const t=e[e.length-1];return"."===t[0]&&c.is(t)}function v(e,t){return e+t.length}function g(e){return"undefined"!=typeof Blob&&e instanceof Blob}function y(e){return"object"==typeof e&&null!=e&&"function"==typeof e.pipe}t.exports=function(e,a,o){"function"==typeof a&&([a,o]=[o,a]),m(e,a=a?Object.assign({},a):{},((e,c,u)=>{if(e)return o(e);a.singleFileTorrent=u,function(e,a,o){let c=a.announceList;c||("string"==typeof a.announce?c=[[a.announce]]:Array.isArray(a.announce)&&(c=a.announce.map((e=>[e]))));c||(c=[]);globalThis.WEBTORRENT_ANNOUNCE&&("string"==typeof globalThis.WEBTORRENT_ANNOUNCE?c.push([[globalThis.WEBTORRENT_ANNOUNCE]]):Array.isArray(globalThis.WEBTORRENT_ANNOUNCE)&&(c=c.concat(globalThis.WEBTORRENT_ANNOUNCE.map((e=>[e])))));void 0===a.announce&&void 0===a.announceList&&(c=c.concat(t.exports.announceList));"string"==typeof a.urlList&&(a.urlList=[a.urlList]);const u={info:{name:a.name},"creation date":Math.ceil((Number(a.creationDate)||Date.now())/1e3),encoding:"UTF-8"};0!==c.length&&(u.announce=c[0][0],u["announce-list"]=c);void 0!==a.comment&&(u.comment=a.comment);void 0!==a.createdBy&&(u["created by"]=a.createdBy);void 0!==a.private&&(u.info.private=Number(a.private));void 0!==a.info&&Object.assign(u.info,a.info);void 0!==a.sslCert&&(u.info["ssl-cert"]=a.sslCert);void 0!==a.urlList&&(u["url-list"]=a.urlList);const p=e.reduce(v,0),f=a.pieceLength||s(p);u.info["piece length"]=f,async function(e,t,n,s,a){const o=[];let c=0,u=0;const p=e.map((e=>e.getStream)),f=s.onProgress;let h=0,m=0,b=!1;const v=r(l(p),t,{zeroPadding:!1});try{for await(const e of v)await new Promise((t=>{c+=e.length;const r=m;++m,++h<5&&t(),d(e,(s=>{o[r]=s,--h,u+=e.length,f&&f(u,n),t(),b&&0===h&&a(null,i.from(o.join(""),"hex"),c)}))}));if(0===h)return a(null,i.from(o.join(""),"hex"),c);b=!0}catch(e){a(e)}}(e,f,p,a,((t,i,r)=>{if(t)return o(t);u.info.pieces=i,e.forEach((e=>{delete e.getStream})),a.singleFileTorrent?u.info.length=r:u.info.files=e,o(null,n.encode(u))}))}(c,a,o)}))},t.exports.parseInput=function(e,t,i){"function"==typeof t&&([t,i]=[i,t]),m(e,t=t?Object.assign({},t):{},i)},t.exports.announceList=[["udp://tracker.leechers-paradise.org:6969"],["udp://tracker.coppersurfer.tk:6969"],["udp://tracker.opentrackr.org:1337"],["udp://explodie.org:6969"],["udp://tracker.empire-js.us:1337"],["wss://tracker.btorrent.xyz"],["wss://tracker.openwebtorrent.com"]],t.exports.isJunkPath=b}).call(this)}).call(this,e("buffer").Buffer)},{"./get-files":67,bencode:22,"block-iterator":48,buffer:110,"fast-readable-async-iterator":183,"is-file":67,"join-async-iterator":220,junk:221,path:288,"piece-length":295,"queue-microtask":309,"run-parallel":336,"simple-sha1":366}],145:[function(e,t,i){"use strict";i.randomBytes=i.rng=i.pseudoRandomBytes=i.prng=e("randombytes"),i.createHash=i.Hash=e("create-hash"),i.createHmac=i.Hmac=e("create-hmac");var n=e("browserify-sign/algos"),r=Object.keys(n),s=["sha1","sha224","shLine truncated
|
||||
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
i.read=function(e,t,i,n,r){var s,a,o=8*r-n-1,c=(1<<o)-1,l=c>>1,u=-7,p=i?r-1:0,d=i?-1:1,f=e[t+p];for(p+=d,s=f&(1<<-u)-1,f>>=-u,u+=o;u>0;s=256*s+e[t+p],p+=d,u-=8);for(a=s&(1<<-u)-1,s>>=-u,u+=n;u>0;a=256*a+e[t+p],p+=d,u-=8);if(0===s)s=1-l;else{if(s===c)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,n),s-=l}return(f?-1:1)*a*Math.pow(2,s-n)},i.write=function(e,t,i,n,r,s){var a,o,c,l=8*s-r-1,u=(1<<l)-1,p=u>>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:s-1,h=n?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,a=u):(a=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-a))<1&&(a--,c*=2),(t+=a+p>=1?d/c:d*Math.pow(2,1-p))*c>=2&&(a++,c/=2),a+p>=u?(o=0,a=u):a+p>=1?(o=(t*c-1)*Math.pow(2,r),a+=p):(o=t*Math.pow(2,p-1)*Math.pow(2,r),a=0));r>=8;e[i+f]=255&o,f+=h,o/=256,r-=8);for(a=a<<r|o,l+=r;l>0;e[i+f]=255&a,f+=h,a/=256,l-=8);e[i+f-h]|=128*m}},{}],216:[function(e,t,i){
|
||||
/*! immediate-chunk-store. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
const n=e("queue-microtask");t.exports=class{constructor(e){if(this.store=e,this.chunkLength=e.chunkLength,!this.store||!this.store.get||!this.store.put)throw new Error("First argument must be abstract-chunk-store compliant");this.mem=[]}put(e,t,i=(()=>{})){this.mem[e]=t,this.store.put(e,t,(t=>{this.mem[e]=null,i(t)}))}get(e,t,i=(()=>{})){if("function"==typeof t)return this.get(e,null,t);let r=this.mem[e];if(!r)return this.store.get(e,t,i);t||(t={});const s=t.offset||0,a=t.length||r.length-s;0===s&&a===r.length||(r=r.slice(s,a+s)),n((()=>i(null,r)))}close(e=(()=>{})){this.store.close(e)}destroy(e=(()=>{})){this.store.destroy(e)}}},{"queue-microtask":309}],217:[function(e,t,i){"function"==typeof Object.create?t.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(e,t){if(t){e.super_=t;var i=function(){};i.prototype=t.prototype,e.prototype=new i,e.prototype.constructor=e}}},{}],218:[function(e,t,i){t.exports=function(e){for(var t=0,i=e.length;t<i;++t)if(e.charCodeAt(t)>127)return!1;return!0}},{}],219:[function(e,t,i){function n(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}
|
||||
/*!
|
||||
* Determine if an object is a Buffer
|
||||
*
|
||||
* @author Feross Aboukhadijeh <https://feross.org>
|
||||
* @license MIT
|
||||
*/
|
||||
t.exports=function(e){return null!=e&&(n(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&n(e.slice(0,0))}(e)||!!e._isBuffer)}},{}],220:[function(e,t,i){t.exports=async function*(e){for(let t of e)"function"==typeof t&&(t=t()),yield*t}},{}],221:[function(e,t,i){"use strict";i.re=()=>{throw new Error("`junk.re` was renamed to `junk.regex`")},i.regex=new RegExp(["^npm-debug\\.log$","^\\..*\\.swp$","^\\.DS_Store$","^\\.AppleDouble$","^\\.LSOverride$","^Icon\\r$","^\\._.*","^\\.Spotlight-V100(?:$|\\/)","\\.Trashes","^__MACOSX$","~$","^Thumbs\\.db$","^ehthumbs\\.db$","^Desktop\\.ini$","@eaDir$"].join("|")),i.is=e=>i.regex.test(e),i.not=e=>!i.is(e),i.default=t.exports},{}],222:[function(e,t,i){i.RateLimiter=e("./lib/rateLimiter"),i.TokenBucket=e("./lib/tokenBucket")},{"./lib/rateLimiter":224,"./lib/tokenBucket":225}],223:[function(e,t,i){(function(e){(function(){t.exports=function(){if(void 0!==e&&e.hrtime){var t=e.hrtime(),i=t[0],n=t[1];return 1e3*i+Math.floor(n/1e6)}return(new Date).getTime()}}).call(this)}).call(this,e("_process"))},{_process:296}],224:[function(e,t,i){(function(i){(function(){var n=e("./tokenBucket"),r=e("./clock"),s=function(e,t,i){this.tokenBucket=new n(e,e,t,null),this.tokenBucket.content=e,this.curIntervalStart=r(),this.tokensThisInterval=0,this.fireImmediately=i};s.prototype={tokenBucket:null,curIntervalStart:0,tokensThisInterval:0,fireImmediately:!1,removeTokens:function(e,t){if(e>this.tokenBucket.bucketSize)return i.nextTick(t.bind(null,"Requested tokens "+e+" exceeds maximum tokens per interval "+this.tokenBucket.bucketSize,null)),!1;var n=this,s=r();if((s<this.curIntervalStart||s-this.curIntervalStart>=this.tokenBucket.interval)&&(this.curIntervalStart=s,this.tokensThisInterval=0),e>this.tokenBucket.tokensPerInterval-this.tokensThisInterval){if(this.fireImmediately)i.nextTick(t.bind(null,null,-1));else{var a=Math.ceil(this.curIntervalStart+this.tokenBucket.interval-s);setTimeout((function(){n.tokenBucket.removeTokens(e,o)}),a)}return!1}return this.tokenBucket.removeTokens(e,o);function o(i,r){if(i)return t(i,null);n.tokensThisInterval+=e,t(null,r)}},tryRemoveTokens:function(e){if(e>this.tokenBucket.bucketSize)return!1;var t=r();if((t<this.curIntervalStart||t-this.curIntervalStart>=this.tokenBucket.interval)&&(this.curIntervalStart=t,this.tokensThisInterval=0),e>this.tokenBucket.tokensPerInterval-this.tokensThisInterval)return!1;var i=this.tokenBucket.tryRemoveTokens(e);return i&&(this.tokensThisInterval+=e),i},getTokensRemaining:function(){return this.tokenBucket.drip(),this.tokenBucket.content}},t.exports=s}).call(this)}).call(this,e("_process"))},{"./clock":223,"./tokenBucket":225,_process:296}],225:[function(e,t,i){(function(e){(function(){var i=function(e,t,i,n){if(this.bucketSize=e,this.tokensPerInterval=t,"string"==typeof i)switch(i){case"sec":case"second":this.interval=1e3;break;case"min":case"minute":this.interval=6e4;break;case"hr":case"hour":this.interval=36e5;break;case"day":this.interval=864e5;break;default:throw new Error("Invaid interval "+i)}else this.interval=i;this.parentBucket=n,this.content=0,this.lastDrip=+new Date};i.prototype={bucketSize:1,tokensPerInterval:1,interval:1e3,parentBucket:null,content:0,lastDrip:0,removeTokens:function(t,i){var n=this;return this.bucketSize?t>this.bucketSize?(e.nextTick(i.bind(null,"Requested tokens "+t+" exceeds bucket size "+this.bucketSize,null)),!1):(this.drip(),t>this.content?r():this.parentBucket?this.parentBucket.removeTokens(t,(function(e,s){return e?i(e,null):t>n.content?r():(n.content-=t,void i(null,Math.min(s,n.content)))})):(this.content-=t,e.nextTick(i.bind(null,null,this.content)),!0)):(e.nextTick(i.bind(null,null,t,Number.POSITIVE_INFINITY)),!0);function r(){var e=Math.ceil((t-n.content)*(n.interval/n.tokensPerInterval));return setTimeout((function(){n.removeTokens(t,i)}),e),!1}},tryRemoveTokens:function(e){return!this.bucketSize||!(e>this.bucketSize)&&(this.drip(),!(e>this.content)&&(!(this.parentBucket&&!this.parentBucket.tryRemoveTokens(e))&&(this.content-=e,!0)))},drip:function(){if(this.tokensPerInterval){var e=+new Date,t=Math.max(e-this.lastDrip,0);this.lastDrip=e;var i=t*(this.tokensPerInterval/this.interval);this.content=Math.min(this.content+i,this.bucketSize)}else this.content=this.bucketSize}},t.exports=i}).call(this)}).call(this,e("_process"))},{_process:296}],226:[function(e,t,i){var n=e("events"),r=e("inherits");function s(e){if(!(this instanceof s))return new s(e);"number"==typeof e&&(e={max:e}),e||(e={}),n.EventEmitter.call(this),this.cache={},this.head=this.tail=null,this.length=0,this.max=e.max||1e3,this.maxAge=e.maxAge||0}t.exports=s,r(s,n.EventEmitter),Object.defineProperty(s.prototype,"keys",{get:function(){return Object.keys(this.cache)}}),s.prototype.clear=function(){this.cache={},this.head=this.tail=null,this.length=0},s.prototype.remove=function(e){if("string"!=typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){var t=this.cache[e];return delete this.cache[e],Line truncated
|
||||
/*! lt_donthave. MIT License. WebTorrent LLC <https://webtorrent.io/opensource> */
|
||||
const n=e("unordered-array-remove"),{EventEmitter:r}=e("events"),s=e("debug")("lt_donthave");t.exports=()=>{class e extends r{constructor(e){super(),this._peerSupports=!1,this._wire=e}onExtendedHandshake(){this._peerSupports=!0}onMessage(e){let t;try{t=e.readUInt32BE()}catch(e){return}this._wire.peerPieces.get(t)&&(s("got donthave %d",t),this._wire.peerPieces.set(t,!1),this.emit("donthave",t),this._failRequests(t))}donthave(e){if(!this._peerSupports)return;s("donthave %d",e);const t=i.alloc(4);t.writeUInt32BE(e),this._wire.extended("lt_donthave",t)}_failRequests(e){const t=this._wire.requests;for(let i=0;i<t.length;i++){const r=t[i];r.piece===e&&(n(t,i),i-=1,this._wire._callback(r,new Error("peer sent donthave"),null))}}}return e.prototype.name="lt_donthave",e}}).call(this)}).call(this,e("buffer").Buffer)},{buffer:110,debug:146,events:178,"unordered-array-remove":436}],228:[function(e,t,i){(function(i){(function(){
|
||||
/*! magnet-uri. MIT License. WebTorrent LLC <https://webtorrent.io/opensource> */
|
||||
t.exports=s,t.exports.decode=s,t.exports.encode=function(e){e=Object.assign({},e);let t=new Set;e.xt&&"string"==typeof e.xt&&t.add(e.xt);e.xt&&Array.isArray(e.xt)&&(t=new Set(e.xt));e.infoHashBuffer&&t.add(`urn:btih:${e.infoHashBuffer.toString("hex")}`);e.infoHash&&t.add(`urn:btih:${e.infoHash}`);e.infoHashV2Buffer&&t.add(e.xt=`urn:btmh:1220${e.infoHashV2Buffer.toString("hex")}`);e.infoHashV2&&t.add(`urn:btmh:1220${e.infoHashV2}`);const i=Array.from(t);1===i.length&&(e.xt=i[0]);i.length>1&&(e.xt=i);e.publicKeyBuffer&&(e.xs=`urn:btpk:${e.publicKeyBuffer.toString("hex")}`);e.publicKey&&(e.xs=`urn:btpk:${e.publicKey}`);e.name&&(e.dn=e.name);e.keywords&&(e.kt=e.keywords);e.announce&&(e.tr=e.announce);e.urlList&&(e.ws=e.urlList,delete e.as);e.peerAddresses&&(e["x.pe"]=e.peerAddresses);let n="magnet:?";return Object.keys(e).filter((e=>2===e.length||"x.pe"===e)).forEach(((t,i)=>{const s=Array.isArray(e[t])?e[t]:[e[t]];s.forEach(((e,r)=>{(i>0||r>0)&&("kt"!==t&&"so"!==t||0===r)&&(n+="&"),"dn"===t&&(e=encodeURIComponent(e).replace(/%20/g,"+")),"tr"!==t&&"as"!==t&&"ws"!==t||(e=encodeURIComponent(e)),"xs"!==t||e.startsWith("urn:btpk:")||(e=encodeURIComponent(e)),"kt"===t&&(e=encodeURIComponent(e)),"so"!==t&&(n+="kt"===t&&r>0?`+${e}`:`${t}=${e}`)})),"so"===t&&(n+=`${t}=${r.compose(s)}`)})),n};const n=e("thirty-two"),r=e("bep53-range");function s(e){const t={},s=e.split("magnet:?")[1];let a;if((s&&s.length>=0?s.split("&"):[]).forEach((e=>{const i=e.split("=");if(2!==i.length)return;const n=i[0];let s=i[1];"dn"===n&&(s=decodeURIComponent(s).replace(/\+/g," ")),"tr"!==n&&"xs"!==n&&"as"!==n&&"ws"!==n||(s=decodeURIComponent(s)),"kt"===n&&(s=decodeURIComponent(s).split("+")),"ix"===n&&(s=Number(s)),"so"===n&&(s=r.parse(decodeURIComponent(s).split(","))),t[n]?(Array.isArray(t[n])||(t[n]=[t[n]]),t[n].push(s)):t[n]=s})),t.xt){(Array.isArray(t.xt)?t.xt:[t.xt]).forEach((e=>{if(a=e.match(/^urn:btih:(.{40})/))t.infoHash=a[1].toLowerCase();else if(a=e.match(/^urn:btih:(.{32})/)){const e=n.decode(a[1]);t.infoHash=i.from(e,"binary").toString("hex")}else(a=e.match(/^urn:btmh:1220(.{64})/))&&(t.infoHashV2=a[1].toLowerCase())}))}if(t.xs){(Array.isArray(t.xs)?t.xs:[t.xs]).forEach((e=>{(a=e.match(/^urn:btpk:(.{64})/))&&(t.publicKey=a[1].toLowerCase())}))}return t.infoHash&&(t.infoHashBuffer=i.from(t.infoHash,"hex")),t.infoHashV2&&(t.infoHashV2Buffer=i.from(t.infoHashV2,"hex")),t.publicKey&&(t.publicKeyBuffer=i.from(t.publicKey,"hex")),t.dn&&(t.name=t.dn),t.kt&&(t.keywords=t.kt),t.announce=[],("string"==typeof t.tr||Array.isArray(t.tr))&&(t.announce=t.announce.concat(t.tr)),t.urlList=[],("string"==typeof t.as||Array.isArray(t.as))&&(t.urlList=t.urlList.concat(t.as)),("string"==typeof t.ws||Array.isArray(t.ws))&&(t.urlList=t.urlList.concat(t.ws)),t.peerAddresses=[],("string"==typeof t["x.pe"]||Array.isArray(t["x.pe"]))&&(t.peerAddresses=t.peerAddresses.concat(t["x.pe"])),t.announce=Array.from(new Set(t.announce)),t.urlList=Array.from(new Set(t.urlList)),t.peerAddresses=Array.from(new Set(t.peerAddresses)),t}}).call(this)}).call(this,e("buffer").Buffer)},{"bep53-range":24,buffer:110,"thirty-two":428}],229:[function(e,t,i){"use strict";var n=e("inherits"),r=e("hash-base"),s=e("safe-buffer").Buffer,a=new Array(16);function o(){r.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function c(e,t){return e<<t|e>>>32-t}function l(e,t,i,n,r,s,a){return c(e+(t&i|~t&n)+r+s|0,a)+t|0}function u(e,t,i,n,r,s,a){return c(e+(t&n|i&~n)+r+s|0,a)+t|0}function p(e,t,i,n,r,s,a){return c(e+(t^i^n)+r+s|0,a)+t|0}function d(e,t,i,n,r,s,a){return c(e+(i^(t|~n))+r+s|0,a)+t|0}n(o,r),o.prototype._update=function(){for(var e=a,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var i=this._a,n=this._b,r=this._c,s=this._d;i=l(i,n,r,s,e[0],3614090360,7),s=l(s,i,n,r,e[1],3905402710,12),r=l(r,s,i,n,e[2],606105819,17),n=l(n,r,s,i,e[3],3250441966,22),i=l(i,n,r,s,e[4],4118548399,7),s=l(s,i,n,r,e[5],1200080426,12),r=l(r,s,i,n,e[6],2821735955,17),n=l(n,r,s,i,e[7],4249261313,22),i=l(i,n,r,s,e[8],1770035416,7),s=l(s,i,n,r,e[9],2336552879,12),r=l(r,s,i,n,e[10],4294925233,17),n=l(n,r,s,i,e[11],2304563134,22),i=l(i,n,r,s,e[12],1804603682,7),s=l(s,i,n,r,e[13],4254626195,12),r=l(r,s,i,n,e[14],2792965006,17),i=u(i,n=l(n,r,s,i,e[15],1236535329,22),r,s,e[1],4129170786,5),s=u(s,i,n,r,e[6],3225465664,9),r=u(r,s,i,n,e[11],643717713,14),n=u(n,r,s,i,e[0],3921069994,20),i=u(i,n,r,s,e[5],3593408605,5),s=u(s,i,n,r,e[10],38016083,9),r=u(r,s,i,n,e[15],3634488961,14),n=u(n,r,s,i,e[4],3889429448,20),i=u(i,n,r,s,e[9],568446438,5),s=u(s,i,n,r,e[14],3275163606,9),r=u(r,s,i,n,e[3],4107603335,14),n=u(n,r,s,i,e[8],1163531501,20),i=u(i,n,r,s,e[13],2850285829,5),s=u(s,i,n,r,e[2],4243563512,9),r=u(r,s,i,n,e[7],1735328473,14),i=p(i,n=u(n,r,s,i,e[12],2368359562,20),r,s,e[5],4294588738,4),s=p(s,i,n,r,e[8],2272392833,11),r=p(r,s,i,n,e[11],1839030562,16),n=p(n,r,s,i,e[14],4259657740,23),i=p(i,n,r,s,e[1],2763975236,4),s=p(s,i,n,r,e[4],1272893353,11),r=p(r,s,i,n,e[7],4139469664,16),n=Line truncated
|
||||
/*! mediasource. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
t.exports=o;var n=e("inherits"),r=e("readable-stream"),s=e("to-arraybuffer"),a="undefined"!=typeof window&&window.MediaSource;function o(e,t){var i=this;if(!(i instanceof o))return new o(e,t);if(!a)throw new Error("web browser lacks MediaSource support");t||(t={}),i._debug=t.debug,i._bufferDuration=t.bufferDuration||60,i._elem=e,i._mediaSource=new a,i._streams=[],i.detailedError=null,i._errorHandler=function(){i._elem.removeEventListener("error",i._errorHandler),i._streams.slice().forEach((function(e){e.destroy(i._elem.error)}))},i._elem.addEventListener("error",i._errorHandler),i._elem.src=window.URL.createObjectURL(i._mediaSource)}function c(e,t){var i=this;if(r.Writable.call(i),i._wrapper=e,i._elem=e._elem,i._mediaSource=e._mediaSource,i._allStreams=e._streams,i._allStreams.push(i),i._bufferDuration=e._bufferDuration,i._sourceBuffer=null,i._debugBuffers=[],i._openHandler=function(){i._onSourceOpen()},i._flowHandler=function(){i._flow()},i._errorHandler=function(e){i.destroyed||i.emit("error",e)},"string"==typeof t)i._type=t,"open"===i._mediaSource.readyState?i._createSourceBuffer():i._mediaSource.addEventListener("sourceopen",i._openHandler);else if(null===t._sourceBuffer)t.destroy(),i._type=t._type,i._mediaSource.addEventListener("sourceopen",i._openHandler);else{if(!t._sourceBuffer)throw new Error("The argument to MediaElementWrapper.createWriteStream must be a string or a previous stream returned from that function");t.destroy(),i._type=t._type,i._sourceBuffer=t._sourceBuffer,i._debugBuffers=t._debugBuffers,i._sourceBuffer.addEventListener("updateend",i._flowHandler),i._sourceBuffer.addEventListener("error",i._errorHandler)}i._elem.addEventListener("timeupdate",i._flowHandler),i.on("error",(function(e){i._wrapper.error(e)})),i.on("finish",(function(){if(!i.destroyed&&(i._finished=!0,i._allStreams.every((function(e){return e._finished})))){i._wrapper._dumpDebugData();try{i._mediaSource.endOfStream()}catch(e){}}}))}o.prototype.createWriteStream=function(e){return new c(this,e)},o.prototype.error=function(e){var t=this;t.detailedError||(t.detailedError=e),t._dumpDebugData();try{t._mediaSource.endOfStream("decode")}catch(e){}try{window.URL.revokeObjectURL(t._elem.src)}catch(e){}},o.prototype._dumpDebugData=function(){var e=this;e._debug&&(e._debug=!1,e._streams.forEach((function(e,t){var i,n,r;i=e._debugBuffers,n="mediasource-stream-"+t,(r=document.createElement("a")).href=window.URL.createObjectURL(new window.Blob(i)),r.download=n,r.click()})))},n(c,r.Writable),c.prototype._onSourceOpen=function(){var e=this;e.destroyed||(e._mediaSource.removeEventListener("sourceopen",e._openHandler),e._createSourceBuffer())},c.prototype.destroy=function(e){var t=this;t.destroyed||(t.destroyed=!0,t._allStreams.splice(t._allStreams.indexOf(t),1),t._mediaSource.removeEventListener("sourceopen",t._openHandler),t._elem.removeEventListener("timeupdate",t._flowHandler),t._sourceBuffer&&(t._sourceBuffer.removeEventListener("updateend",t._flowHandler),t._sourceBuffer.removeEventListener("error",t._errorHandler),"open"===t._mediaSource.readyState&&t._sourceBuffer.abort()),e&&t.emit("error",e),t.emit("close"))},c.prototype._createSourceBuffer=function(){var e=this;if(!e.destroyed)if(a.isTypeSupported(e._type)){if(e._sourceBuffer=e._mediaSource.addSourceBuffer(e._type),e._sourceBuffer.addEventListener("updateend",e._flowHandler),e._sourceBuffer.addEventListener("error",e._errorHandler),e._cb){var t=e._cb;e._cb=null,t()}}else e.destroy(new Error("The provided type is not supported"))},c.prototype._write=function(e,t,i){var n=this;if(!n.destroyed)if(n._sourceBuffer){if(n._sourceBuffer.updating)return i(new Error("Cannot append buffer while source buffer updating"));var r=s(e);n._wrapper._debug&&n._debugBuffers.push(r);try{n._sourceBuffer.appendBuffer(r)}catch(e){return void n.destroy(e)}n._cb=i}else n._cb=function(r){if(r)return i(r);n._write(e,t,i)}},c.prototype._flow=function(){var e=this;if(!e.destroyed&&e._sourceBuffer&&!e._sourceBuffer.updating&&!("open"===e._mediaSource.readyState&&e._getBufferDuration()>e._bufferDuration)&&e._cb){var t=e._cb;e._cb=null,t()}};c.prototype._getBufferDuration=function(){for(var e=this._sourceBuffer.buffered,t=this._elem.currentTime,i=-1,n=0;n<e.length;n++){var r=e.start(n),s=e.end(n)+0;if(r>t)break;(i>=0||t<=s)&&(i=s)}var a=i-t;return a<0&&(a=0),a}},{inherits:217,"readable-stream":245,"to-arraybuffer":432}],231:[function(e,t,i){arguments[4][28][0].apply(i,arguments)},{dup:28}],232:[function(e,t,i){arguments[4][29][0].apply(i,arguments)},{"./_stream_readable":234,"./_stream_writable":236,_process:296,dup:29,inherits:217}],233:[function(e,t,i){arguments[4][30][0].apply(i,arguments)},{"./_stream_transform":235,dup:30,inherits:217}],234:[function(e,t,i){arguments[4][31][0].apply(i,arguments)},{"../errors":231,"./_stream_duplex":232,"./internal/streams/async_iterator":237,"./internal/streams/buffer_list":238,"./internal/streams/destroy":239,"./internal/streams/from":241,"./internal/streams/state":243Line truncated
|
||||
/*!
|
||||
* mime-db
|
||||
* Copyright(c) 2014 Jonathan Ong
|
||||
* Copyright(c) 2015-2022 Douglas Christopher Wilson
|
||||
* MIT Licensed
|
||||
*/
|
||||
t.exports=e("./db.json")},{"./db.json":249}],251:[function(e,t,i){
|
||||
/*!
|
||||
* mime-types
|
||||
* Copyright(c) 2014 Jonathan Ong
|
||||
* Copyright(c) 2015 Douglas Christopher Wilson
|
||||
* MIT Licensed
|
||||
*/
|
||||
"use strict";var n,r,s,a=e("mime-db"),o=e("path").extname,c=/^\s*([^;\s]*)(?:;|\s|$)/,l=/^text\//i;function u(e){if(!e||"string"!=typeof e)return!1;var t=c.exec(e),i=t&&a[t[1].toLowerCase()];return i&&i.charset?i.charset:!(!t||!l.test(t[1]))&&"UTF-8"}i.charset=u,i.charsets={lookup:u},i.contentType=function(e){if(!e||"string"!=typeof e)return!1;var t=-1===e.indexOf("/")?i.lookup(e):e;if(!t)return!1;if(-1===t.indexOf("charset")){var n=i.charset(t);n&&(t+="; charset="+n.toLowerCase())}return t},i.extension=function(e){if(!e||"string"!=typeof e)return!1;var t=c.exec(e),n=t&&i.extensions[t[1].toLowerCase()];if(!n||!n.length)return!1;return n[0]},i.extensions=Object.create(null),i.lookup=function(e){if(!e||"string"!=typeof e)return!1;var t=o("x."+e).toLowerCase().substr(1);if(!t)return!1;return i.types[t]||!1},i.types=Object.create(null),n=i.extensions,r=i.types,s=["nginx","apache",void 0,"iana"],Object.keys(a).forEach((function(e){var t=a[e],i=t.extensions;if(i&&i.length){n[e]=i;for(var o=0;o<i.length;o++){var c=i[o];if(r[c]){var l=s.indexOf(a[r[c]].source),u=s.indexOf(t.source);if("application/octet-stream"!==r[c]&&(l>u||l===u&&"application/"===r[c].substr(0,12)))continue}r[c]=e}}}))},{"mime-db":250,path:288}],252:[function(e,t,i){"use strict";function n(){this._types=Object.create(null),this._extensions=Object.create(null);for(let e=0;e<arguments.length;e++)this.define(arguments[e]);this.define=this.define.bind(this),this.getType=this.getType.bind(this),this.getExtension=this.getExtension.bind(this)}n.prototype.define=function(e,t){for(let i in e){let n=e[i].map((function(e){return e.toLowerCase()}));i=i.toLowerCase();for(let e=0;e<n.length;e++){const r=n[e];if("*"!==r[0]){if(!t&&r in this._types)throw new Error('Attempt to change mapping for "'+r+'" extension from "'+this._types[r]+'" to "'+i+'". Pass `force=true` to allow this, otherwise remove "'+r+'" from the list of extensions for "'+i+'".');this._types[r]=i}}if(t||!this._extensions[i]){const e=n[0];this._extensions[i]="*"!==e[0]?e:e.substr(1)}}},n.prototype.getType=function(e){let t=(e=String(e)).replace(/^.*[/\\]/,"").toLowerCase(),i=t.replace(/^.*\./,"").toLowerCase(),n=t.length<e.length;return(i.length<t.length-1||!n)&&this._types[i]||null},n.prototype.getExtension=function(e){return(e=/^\s*([^;\s]*)/.test(e)&&RegExp.$1)&&this._extensions[e.toLowerCase()]||null},t.exports=n},{}],253:[function(e,t,i){"use strict";let n=e("./Mime");t.exports=new n(e("./types/standard"),e("./types/other"))},{"./Mime":252,"./types/other":254,"./types/standard":255}],254:[function(e,t,i){t.exports={"application/prs.cww":["cww"],"application/vnd.1000minds.decision-model+xml":["1km"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.keynote":["key"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.numbers":["numbers"],"application/vnd.apple.pages":["pages"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.balsamiq.bmml+xml":["bmml"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.citationstyles.style+xml":["csl"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkpLine truncated
|
||||
/*! parse-torrent. MIT License. WebTorrent LLC <https://webtorrent.io/opensource> */
|
||||
const n=e("bencode"),r=e("blob-to-buffer"),s=e("fs"),a=e("simple-get"),o=e("magnet-uri"),c=e("path"),l=e("simple-sha1"),u=e("queue-microtask");function p(e){if("string"==typeof e&&/^(stream-)?magnet:/.test(e)){const t=o(e);if(!t.infoHash)throw new Error("Invalid torrent identifier");return t}if("string"==typeof e&&(/^[a-f0-9]{40}$/i.test(e)||/^[a-z2-7]{32}$/i.test(e)))return o(`magnet:?xt=urn:btih:${e}`);if(i.isBuffer(e)&&20===e.length)return o(`magnet:?xt=urn:btih:${e.toString("hex")}`);if(i.isBuffer(e))return function(e){i.isBuffer(e)&&(e=n.decode(e));f(e.info,"info"),f(e.info["name.utf-8"]||e.info.name,"info.name"),f(e.info["piece length"],"info['piece length']"),f(e.info.pieces,"info.pieces"),e.info.files?e.info.files.forEach((e=>{f("number"==typeof e.length,"info.files[0].length"),f(e["path.utf-8"]||e.path,"info.files[0].path")})):f("number"==typeof e.info.length,"info.length");const t={info:e.info,infoBuffer:n.encode(e.info),name:(e.info["name.utf-8"]||e.info.name).toString(),announce:[]};t.infoHash=l.sync(t.infoBuffer),t.infoHashBuffer=i.from(t.infoHash,"hex"),void 0!==e.info.private&&(t.private=!!e.info.private);e["creation date"]&&(t.created=new Date(1e3*e["creation date"]));e["created by"]&&(t.createdBy=e["created by"].toString());i.isBuffer(e.comment)&&(t.comment=e.comment.toString());Array.isArray(e["announce-list"])&&e["announce-list"].length>0?e["announce-list"].forEach((e=>{e.forEach((e=>{t.announce.push(e.toString())}))})):e.announce&&t.announce.push(e.announce.toString());i.isBuffer(e["url-list"])&&(e["url-list"]=e["url-list"].length>0?[e["url-list"]]:[]);t.urlList=(e["url-list"]||[]).map((e=>e.toString())),t.announce=Array.from(new Set(t.announce)),t.urlList=Array.from(new Set(t.urlList));const r=e.info.files||[e.info];t.files=r.map(((e,i)=>{const n=[].concat(t.name,e["path.utf-8"]||e.path||[]).map((e=>e.toString()));return{path:c.join.apply(null,[c.sep].concat(n)).slice(1),name:n[n.length-1],length:e.length,offset:r.slice(0,i).reduce(d,0)}})),t.length=r.reduce(d,0);const s=t.files[t.files.length-1];return t.pieceLength=e.info["piece length"],t.lastPieceLength=(s.offset+s.length)%t.pieceLength||t.pieceLength,t.pieces=function(e){const t=[];for(let i=0;i<e.length;i+=20)t.push(e.slice(i,i+20).toString("hex"));return t}(e.info.pieces),t}(e);if(e&&e.infoHash)return e.infoHash=e.infoHash.toLowerCase(),e.announce||(e.announce=[]),"string"==typeof e.announce&&(e.announce=[e.announce]),e.urlList||(e.urlList=[]),e;throw new Error("Invalid torrent identifier")}function d(e,t){return e+t.length}function f(e,t){if(!e)throw new Error(`Torrent is missing required field: ${t}`)}t.exports=p,t.exports.remote=function e(t,i,n){if("function"==typeof i)return e(t,{},i);if("function"!=typeof n)throw new Error("second argument must be a Function");let o;try{o=p(t)}catch(e){}o&&o.infoHash?u((()=>{n(null,o)})):(c=t,"undefined"!=typeof Blob&&c instanceof Blob?r(t,((e,t)=>{if(e)return n(new Error(`Error converting Blob: ${e.message}`));l(t)})):"function"==typeof a&&/^https?:/.test(t)?(i=Object.assign({url:t,timeout:3e4,headers:{"user-agent":"WebTorrent (https://webtorrent.io)"}},i),a.concat(i,((e,t,i)=>{if(e)return n(new Error(`Error downloading torrent: ${e.message}`));l(i)}))):"function"==typeof s.readFile&&"string"==typeof t?s.readFile(t,((e,t)=>{if(e)return n(new Error("Invalid torrent identifier"));l(t)})):u((()=>{n(new Error("Invalid torrent identifier"))})));var c;function l(e){try{o=p(e)}catch(e){return n(e)}o&&o.infoHash?n(null,o):n(new Error("Invalid torrent identifier"))}},t.exports.toMagnetURI=o.encode,t.exports.toTorrentFile=function(e){const t={info:e.info};t["announce-list"]=(e.announce||[]).map((e=>(t.announce||(t.announce=e),[e=i.from(e,"utf8")]))),t["url-list"]=e.urlList||[],void 0!==e.private&&(t.private=Number(e.private));e.created&&(t["creation date"]=e.created.getTime()/1e3|0);e.createdBy&&(t["created by"]=e.createdBy);e.comment&&(t.comment=e.comment);return n.encode(t)},i.alloc(0)}).call(this)}).call(this,e("buffer").Buffer)},{bencode:22,"blob-to-buffer":47,buffer:110,fs:67,"magnet-uri":228,path:288,"queue-microtask":309,"simple-get":349,"simple-sha1":366}],288:[function(e,t,i){(function(e){(function(){"use strict";function i(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var i,n="",r=0,s=-1,a=0,o=0;o<=e.length;++o){if(o<e.length)i=e.charCodeAt(o);else{if(47===i)break;i=47}if(47===i){if(s===o-1||1===a);else if(s!==o-1&&2===a){if(n.length<2||2!==r||46!==n.charCodeAt(n.length-1)||46!==n.charCodeAt(n.length-2))if(n.length>2){var c=n.lastIndexOf("/");if(c!==n.length-1){-1===c?(n="",r=0):r=(n=n.slice(0,c)).length-1-n.lastIndexOf("/"),s=o,a=0;continue}}else if(2===n.length||1===n.length){n="",r=0,s=o,a=0;continue}t&&(n.length>0?n+="/..":n="..",r=2)}else n.length>0?n+="/"+e.slice(s+1,o):n=e.slice(s+1,o),r=o-s-1;s=o,a=0}else 46===i&&-1!==a?++a:a=-1}return n}var r={resolve:function(){for(var t,r="",s=!1,a=arguments.length-1;a>=-1Line truncated
|
||||
/*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
let i;t.exports="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:e):e=>(i||(i=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0)))}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],310:[function(e,t,i){t.exports="function"==typeof queueMicrotask?queueMicrotask:e=>Promise.resolve().then(e)},{}],311:[function(e,t,i){t.exports=function(e){var t=0;return function(){if(t===e.length)return null;var i=e.length-t,n=Math.random()*i|0,r=e[t+n],s=e[t];return e[t]=r,e[t+n]=s,t++,r}}},{}],312:[function(e,t,i){(function(i,n){(function(){"use strict";var r=65536,s=4294967295;var a=e("safe-buffer").Buffer,o=n.crypto||n.msCrypto;o&&o.getRandomValues?t.exports=function(e,t){if(e>s)throw new RangeError("requested too many random bytes");var n=a.allocUnsafe(e);if(e>0)if(e>r)for(var c=0;c<e;c+=r)o.getRandomValues(n.slice(c,c+r));else o.getRandomValues(n);if("function"==typeof t)return i.nextTick((function(){t(null,n)}));return n}:t.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}}).call(this)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:296,"safe-buffer":338}],313:[function(e,t,i){(function(t,n){(function(){"use strict";function r(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var s=e("safe-buffer"),a=e("randombytes"),o=s.Buffer,c=s.kMaxLength,l=n.crypto||n.msCrypto,u=Math.pow(2,32)-1;function p(e,t){if("number"!=typeof e||e!=e)throw new TypeError("offset must be a number");if(e>u||e<0)throw new TypeError("offset must be a uint32");if(e>c||e>t)throw new RangeError("offset out of range")}function d(e,t,i){if("number"!=typeof e||e!=e)throw new TypeError("size must be a number");if(e>u||e<0)throw new TypeError("size must be a uint32");if(e+t>i||e>c)throw new RangeError("buffer too small")}function f(e,i,n,r){if(t.browser){var s=e.buffer,o=new Uint8Array(s,i,n);return l.getRandomValues(o),r?void t.nextTick((function(){r(null,e)})):e}if(!r)return a(n).copy(e,i),e;a(n,(function(t,n){if(t)return r(t);n.copy(e,i),r(null,e)}))}l&&l.getRandomValues||!t.browser?(i.randomFill=function(e,t,i,r){if(!(o.isBuffer(e)||e instanceof n.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof t)r=t,t=0,i=e.length;else if("function"==typeof i)r=i,i=e.length-t;else if("function"!=typeof r)throw new TypeError('"cb" argument must be a function');return p(t,e.length),d(i,t,e.length),f(e,t,i,r)},i.randomFillSync=function(e,t,i){void 0===t&&(t=0);if(!(o.isBuffer(e)||e instanceof n.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');p(t,e.length),void 0===i&&(i=e.length-t);return d(i,t,e.length),f(e,t,i)}):(i.randomFill=r,i.randomFillSync=r)}).call(this)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:296,randombytes:312,"safe-buffer":338}],314:[function(e,t,i){
|
||||
/*!
|
||||
* range-parser
|
||||
* Copyright(c) 2012-2014 TJ Holowaychuk
|
||||
* Copyright(c) 2015-2016 Douglas Christopher Wilson
|
||||
* MIT Licensed
|
||||
*/
|
||||
"use strict";function n(e,t){return{start:e.start,end:e.end,index:t}}function r(e){return{start:e.start,end:e.end}}function s(e,t){return e.index-t.index}function a(e,t){return e.start-t.start}t.exports=function(e,t,i){if("string"!=typeof t)throw new TypeError("argument str must be a string");var o=t.indexOf("=");if(-1===o)return-2;var c=t.slice(o+1).split(","),l=[];l.type=t.slice(0,o);for(var u=0;u<c.length;u++){var p=c[u].split("-"),d=parseInt(p[0],10),f=parseInt(p[1],10);isNaN(d)?(d=e-f,f=e-1):isNaN(f)&&(f=e-1),f>e-1&&(f=e-1),isNaN(d)||isNaN(f)||d>f||d<0||l.push({start:d,end:f})}if(l.length<1)return-1;return i&&i.combine?function(e){for(var t=e.map(n).sort(a),i=0,o=1;o<t.length;o++){var c=t[o],l=t[i];c.start>l.end+1?t[++i]=c:c.end>l.end&&(l.end=c.end,l.index=Math.min(l.index,c.index))}t.length=i+1;var u=t.sort(s).map(r);return u.type=e.type,u}(l):l}},{}],315:[function(e,t,i){const{Writable:n,PassThrough:r}=e("readable-stream");t.exports=class extends n{constructor(e,t={}){super(t),this.destroyed=!1,this._queue=[],this._position=e||0,this._cb=null,this._buffer=null,this._out=null}_write(e,t,i){let n=!0;for(;;){if(this.destroyed)return;if(0===this._queue.length)return this._buffer=e,void(this._cb=i);this._buffer=null;var r=this._queue[0];const t=Math.max(r.start-this._position,0),s=r.end-this._position;if(t>=e.length)return this._position+=e.length,i(null);let a;if(s>e.length){this._position+=e.length,a=0===t?e:e.slice(t),n=r.stream.write(a)&&n;break}this._position+=s,a=0===t&&s===e.length?e:e.slice(t,s),n=r.stream.write(a)&&n,r.last&&r.stream.end(),e=e.slice(s),this._queue.shift()}n?i(null):r.stream.once("drain",i.bind(null,null))}slice(e){if(this.destroyed)return null;Array.isArray(e)||(e=[e]);const t=new r;return e.forEach(((i,n)=>{this._queue.push({start:i.start,end:i.end,stream:t,last:n===e.length-1})})),this._buffer&&this._write(this._buffer,null,this._cb),t}destroy(e){this.destroyed||(this.destroyed=!0,e&&this.emit("error",e))}}},{"readable-stream":330}],316:[function(e,t,i){arguments[4][28][0].apply(i,arguments)},{dup:28}],317:[function(e,t,i){arguments[4][29][0].apply(i,arguments)},{"./_stream_readable":319,"./_stream_writable":321,_process:296,dup:29,inherits:217}],318:[function(e,t,i){arguments[4][30][0].apply(i,arguments)},{"./_stream_transform":320,dup:30,inherits:217}],319:[function(e,t,i){arguments[4][31][0].apply(i,arguments)},{"../errors":316,"./_stream_duplex":317,"./internal/streams/async_iterator":322,"./internal/streams/buffer_list":323,"./internal/streams/destroy":324,"./internal/streams/from":326,"./internal/streams/state":328,"./internal/streams/stream":329,_process:296,buffer:110,dup:31,events:178,inherits:217,"string_decoder/":427,util:67}],320:[function(e,t,i){arguments[4][32][0].apply(i,arguments)},{"../errors":316,"./_stream_duplex":317,dup:32,inherits:217}],321:[function(e,t,i){arguments[4][33][0].apply(i,arguments)},{"../errors":316,"./_stream_duplex":317,"./internal/streams/destroy":324,"./internal/streams/state":328,"./internal/streams/stream":329,_process:296,buffer:110,dup:33,inherits:217,"util-deprecate":440}],322:[function(e,t,i){arguments[4][34][0].apply(i,arguments)},{"./end-of-stream":325,_process:296,dup:34}],323:[function(e,t,i){arguments[4][35][0].apply(i,arguments)},{buffer:110,dup:35,util:67}],324:[function(e,t,i){arguments[4][36][0].apply(i,arguments)},{_process:296,dup:36}],325:[function(e,t,i){arguments[4][37][0].apply(i,arguments)},{"../../../errors":316,dup:37}],326:[function(e,t,i){arguments[4][38][0].apply(i,arguments)},{dup:38}],327:[function(e,t,i){arguments[4][39][0].apply(i,arguments)},{"../../../errors":316,"./end-of-stream":325,dup:39}],328:[function(e,t,i){arguments[4][40][0].apply(i,arguments)},{"../../../errors":316,dup:40}],329:[function(e,t,i){arguments[4][41][0].apply(i,arguments)},{dup:41,events:178}],330:[function(e,t,i){arguments[4][42][0].apply(i,arguments)},{"./lib/_stream_duplex.js":317,"./lib/_stream_passthrough.js":318,"./lib/_stream_readable.js":319,"./lib/_stream_transform.js":320,"./lib/_stream_writable.js":321,"./lib/internal/streams/end-of-stream.js":325,"./lib/internal/streams/pipeline.js":327,dup:42}],331:[function(e,t,i){"use strict";function n(e){return parseInt(e,10)===e}function r(e){function t(t){if(void 0===t){t=new Array(e);for(var i=0;i<e;i++)t[i]=Math.floor(Math.random()*e)}else if("string"==typeof t)t=(t=""+t).split("").map((function(t){return t.charCodeAt(0)%e}));else{if(!Array.isArray(t))throw new TypeError("invalid seed key specified");if(!t.every((function(e){return"number"==typeof e&&e===(0|e)})))throw new TypeError("invalid seed key specified: not array of integers")}for(var n=t.length,r=function(){for(var t=new Array(e),i=0;i<e;i++)t[i]=i;return t}(),s=0,a=0;a<e;a++){s=(s+r[a]+t[a%n])%e;var o=r[a];r[a]=r[s],r[s]=o}return r}function i(e){this.s=t(e),this.i=0,this.j=0}return i.prototype.randomNative=function(){this.i=(this.i+1)%e,this.j=(this.j+this.s[this.i])%e;var t=this.s[this.i];return this.s[this.i]=this.s[tLine truncated
|
||||
/*! render-media. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
i.render=function(e,t,i,n){"function"==typeof i&&(n=i,i={});i||(i={});n||(n=()=>{});y(e),x(i),"string"==typeof t&&(t=document.querySelector(t));v(e,(n=>{if(t.nodeName!==n.toUpperCase()){const i=a.extname(e.name).toLowerCase();throw new Error(`Cannot render "${i}" inside a "${t.nodeName.toLowerCase()}" element, expected "${n}"`)}return"video"!==n&&"audio"!==n||_(t,i),t}),i,n)},i.append=function(e,t,i,n){"function"==typeof i&&(n=i,i={});i||(i={});n||(n=()=>{});y(e),x(i),"string"==typeof t&&(t=document.querySelector(t));if(t&&("VIDEO"===t.nodeName||"AUDIO"===t.nodeName))throw new Error("Invalid video/audio node argument. Argument must be root element that video/audio tag will be appended to.");function r(e){const i=document.createElement(e);return t.appendChild(i),i}v(e,(function(e){return"video"===e||"audio"===e?function(e){const n=r(e);return _(n,i),t.appendChild(n),n}(e):r(e)}),i,(function(e,t){e&&t&&t.remove(),n(e,t)}))},i.mime=e("./lib/mime.json");const n=e("debug")("render-media"),r=e("is-ascii"),s=e("mediasource"),a=e("path"),o=e("stream-to-blob-url"),c=e("videostream"),l=[".m4a",".m4b",".m4p",".m4v",".mp4"],u=[".m4v",".mkv",".mp4",".webm"],p=[].concat(u,[".m4a",".m4b",".m4p",".mp3"]),d=[".mov",".ogv"],f=[".aac",".oga",".ogg",".wav",".flac"],h=[".bmp",".gif",".jpeg",".jpg",".png",".svg"],m=[".css",".html",".js",".md",".pdf",".srt",".txt"],b="undefined"!=typeof window&&window.MediaSource;function v(e,t,i,o){const v=a.extname(e.name).toLowerCase();let y,x=0;function _(){return!("number"==typeof e.length&&e.length>i.maxBlobLength)||(n("File length too large for Blob URL approach: %d (max: %d)",e.length,i.maxBlobLength),M(new Error(`File length too large for Blob URL approach: ${e.length} (max: ${i.maxBlobLength})`)),!1)}function w(i){_()&&(y=t(i),g(e,((e,t)=>{if(e)return M(e);y.addEventListener("error",M),y.addEventListener("loadstart",k),y.addEventListener("loadedmetadata",E),y.src=t})))}function k(){if(y.removeEventListener("loadstart",k),i.autoplay){const e=y.play();void 0!==e&&e.catch(M)}}function E(){y.removeEventListener("loadedmetadata",E),o(null,y)}function S(){g(e,((e,i)=>{if(e)return M(e);".pdf"!==v?(y=t("iframe"),y.sandbox="allow-forms allow-scripts",y.src=i):(y=t("object"),y.setAttribute("typemustmatch",!0),y.setAttribute("type","application/pdf"),y.setAttribute("data",i)),o(null,y)}))}function M(t){t.message=`Error rendering file "${e.name}": ${t.message}`,n(t.message),o(t)}p.includes(v)?function(){const i=u.includes(v)?"video":"audio";b?l.includes(v)?r():o():p();function r(){n(`Use \`videostream\` package for ${e.name}`),h(),y.addEventListener("error",d),y.addEventListener("loadstart",k),y.addEventListener("loadedmetadata",E),new c(e,y)}function o(){n(`Use MediaSource API for ${e.name}`),h(),y.addEventListener("error",f),y.addEventListener("loadstart",k),y.addEventListener("loadedmetadata",E);const t=new s(y).createWriteStream(function(e){const t=a.extname(e).toLowerCase();return{".m4a":'audio/mp4; codecs="mp4a.40.5"',".m4b":'audio/mp4; codecs="mp4a.40.5"',".m4p":'audio/mp4; codecs="mp4a.40.5"',".m4v":'video/mp4; codecs="avc1.640029, mp4a.40.5"',".mkv":'video/webm; codecs="avc1.640029, mp4a.40.5"',".mp3":"audio/mpeg",".mp4":'video/mp4; codecs="avc1.640029, mp4a.40.5"',".webm":'video/webm; codecs="vorbis, vp8"'}[t]}(e.name));e.createReadStream().pipe(t),x&&(y.currentTime=x)}function p(){n(`Use Blob URL for ${e.name}`),h(),y.addEventListener("error",M),y.addEventListener("loadstart",k),y.addEventListener("loadedmetadata",E),g(e,((e,t)=>{if(e)return M(e);y.src=t,x&&(y.currentTime=x)}))}function d(e){n("videostream error: fallback to MediaSource API: %o",e.message||e),y.removeEventListener("error",d),y.removeEventListener("loadedmetadata",E),o()}function f(e){n("MediaSource API error: fallback to Blob URL: %o",e.message||e),_()&&(y.removeEventListener("error",f),y.removeEventListener("loadedmetadata",E),p())}function h(){y||(y=t(i),y.addEventListener("progress",(()=>{x=y.currentTime})))}}():d.includes(v)?w("video"):f.includes(v)?w("audio"):h.includes(v)?(y=t("img"),g(e,((t,i)=>{if(t)return M(t);y.src=i,y.alt=e.name,o(null,y)}))):m.includes(v)?S():function(){n('Unknown file extension "%s" - will attempt to render into iframe',v);let t="";function i(){r(t)?(n('File extension "%s" appears ascii, so will render.',v),S()):(n('File extension "%s" appears non-ascii, will not render.',v),o(new Error(`Unsupported file type "${v}": Cannot append to DOM`)))}e.createReadStream({start:0,end:1e3}).setEncoding("utf8").on("data",(e=>{t+=e})).on("end",i).on("error",o)}()}function g(e,t){const n=a.extname(e.name).toLowerCase();o(e.createReadStream(),i.mime[n]).then((e=>t(null,e)),(e=>t(e)))}function y(e){if(null==e)throw new Error("file cannot be null or undefined");if("string"!=typeof e.name)throw new Error("missing or invalid file.name property");if("function"!=typeof e.createReadStream)throw new Error("missing or invalid file.createReadStream property")}function x(e){null==e.autoplay&&(e.autoplay=!1),null==e.mLine truncated
|
||||
/*! run-parallel-limit. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
t.exports=function(e,t,i){if("number"!=typeof t)throw new Error("second argument must be a Number");let r,s,a,o,c,l,u=!0;Array.isArray(e)?(r=[],a=s=e.length):(o=Object.keys(e),r={},a=s=o.length);function p(e){function t(){i&&i(e,r),i=null}u?n(t):t()}function d(t,i,n){if(r[t]=n,i&&(c=!0),0==--a||i)p(i);else if(!c&&l<s){let t;o?(t=o[l],l+=1,e[t]((function(e,i){d(t,e,i)}))):(t=l,l+=1,e[t]((function(e,i){d(t,e,i)})))}}l=t,a?o?o.some((function(i,n){return e[i]((function(e,t){d(i,e,t)})),n===t-1})):e.some((function(e,i){return e((function(e,t){d(i,e,t)})),i===t-1})):p(null);u=!1};const n=e("queue-microtask")},{"queue-microtask":309}],336:[function(e,t,i){
|
||||
/*! run-parallel. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
t.exports=function(e,t){let i,r,s,a=!0;Array.isArray(e)?(i=[],r=e.length):(s=Object.keys(e),i={},r=s.length);function o(e){function r(){t&&t(e,i),t=null}a?n(r):r()}function c(e,t,n){i[e]=n,(0==--r||t)&&o(t)}r?s?s.forEach((function(t){e[t]((function(e,i){c(t,e,i)}))})):e.forEach((function(e,t){e((function(e,i){c(t,e,i)}))})):o(null);a=!1};const n=e("queue-microtask")},{"queue-microtask":309}],337:[function(e,t,i){var n,r;n="undefined"!=typeof self?self:this,r=function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=3)}([function(e,t,i){var n=i(5),r=i(1),s=r.toHex,a=r.ceilHeapSize,o=i(6),c=function(e){for(e+=9;e%64>0;e+=1);return e},l=function(e,t){var i=new Int32Array(e,t+320,5),n=new Int32Array(5),r=new DataView(n.buffer);return r.setInt32(0,i[0],!1),r.setInt32(4,i[1],!1),r.setInt32(8,i[2],!1),r.setInt32(12,i[3],!1),r.setInt32(16,i[4],!1),n},u=function(){function e(t){if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),(t=t||65536)%64>0)throw new Error("Chunk size must be a multiple of 128 bit");this._offset=0,this._maxChunkLen=t,this._padMaxChunkLen=c(t),this._heap=new ArrayBuffer(a(this._padMaxChunkLen+320+20)),this._h32=new Int32Array(this._heap),this._h8=new Int8Array(this._heap),this._core=new n({Int32Array:Int32Array},{},this._heap)}return e.prototype._initState=function(e,t){this._offset=0;var i=new Int32Array(e,t+320,5);i[0]=1732584193,i[1]=-271733879,i[2]=-1732584194,i[3]=271733878,i[4]=-1009589776},e.prototype._padChunk=function(e,t){var i=c(e),n=new Int32Array(this._heap,0,i>>2);return function(e,t){var i=new Uint8Array(e.buffer),n=t%4,r=t-n;switch(n){case 0:i[r+3]=0;case 1:i[r+2]=0;case 2:i[r+1]=0;case 3:i[r+0]=0}for(var s=1+(t>>2);s<e.length;s++)e[s]=0}(n,e),function(e,t,i){e[t>>2]|=128<<24-(t%4<<3),e[14+(2+(t>>2)&-16)]=i/(1<<29)|0,e[15+(2+(t>>2)&-16)]=i<<3}(n,e,t),i},e.prototype._write=function(e,t,i,n){o(e,this._h8,this._h32,t,i,n||0)},e.prototype._coreCall=function(e,t,i,n,r){var s=i;this._write(e,t,i),r&&(s=this._padChunk(i,n)),this._core.hash(s,this._padMaxChunkLen)},e.prototype.rawDigest=function(e){var t=e.byteLength||e.length||e.size||0;this._initState(this._heap,this._padMaxChunkLen);var i=0,n=this._maxChunkLen;for(i=0;t>i+n;i+=n)this._coreCall(e,i,n,t,!1);return this._coreCall(e,i,t-i,t,!0),l(this._heap,this._padMaxChunkLen)},e.prototype.digest=function(e){return s(this.rawDigest(e).buffer)},e.prototype.digestFromString=function(e){return this.digest(e)},e.prototype.digestFromBuffer=function(e){return this.digest(e)},e.prototype.digestFromArrayBuffer=function(e){return this.digest(e)},e.prototype.resetState=function(){return this._initState(this._heap,this._padMaxChunkLen),this},e.prototype.append=function(e){var t=0,i=e.byteLength||e.length||e.size||0,n=this._offset%this._maxChunkLen,r=void 0;for(this._offset+=i;t<i;)r=Math.min(i-t,this._maxChunkLen-n),this._write(e,t,r,n),t+=r,(n+=r)===this._maxChunkLen&&(this._core.hash(this._maxChunkLen,this._padMaxChunkLen),n=0);return this},e.prototype.getState=function(){var e=void 0;if(this._offset%this._maxChunkLen)e=this._heap.slice(0);else{var t=new Int32Array(this._heap,this._padMaxChunkLen+320,5);e=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}return{offset:this._offset,heap:e}},e.prototype.setState=function(e){return this._offset=e.offset,20===e.heap.byteLength?new Int32Array(this._heap,this._padMaxChunkLen+320,5).set(new Int32Array(e.heap)):this._h32.set(new Int32Array(e.heap)),this},e.prototype.rawEnd=function(){var e=this._offset,t=e%this._maxChunkLen,i=this._padChunk(t,e);this._core.hash(i,this._padMaxChunkLen);var n=l(this._heap,this._padMaxChunkLen);return this._initState(this._heap,this._padMaxChunkLen),n},e.prototype.end=function(){return s(this.rawEnd().buffer)},e}();e.exports=u,e.exports._core=n},function(e,t){for(var i=new Array(256),n=0;n<256;n++)i[n]=(n<16?"0":"")+n.toString(16);e.exports.toHex=function(e){for(var t=new Uint8Array(e),n=new Array(e.byteLength),r=0;r<n.length;r++)n[r]=i[t[r]];return n.join("")},e.exports.ceilHeapSize=function(e){var t=0;if(e<=65536)return 65536;if(e<16777216)for(t=1;t<e;t<<=1);else for(t=16777216;t<e;t+=16777216);return t},e.exports.isDedicatedWorkerScope=function(e){var t="WorkerGlobalScope"in e&&e instanceof e.WorkerGlobalScope,i="SharedWorkerGlobalScope"in e&&e instanceof e.SharedWorkerGlobalScope,n="ServiceWorkerGlobalScope"in e&&e instanceof e.ServiceWorkerGlobalScope;return t&&!i&&!n}},function(e,t,i){e.exports=function(){var e=i(0),t=function(e,i,n,r,s){var a=new self.FileReader;a.onloadend=function(){if(a.erroLine truncated
|
||||
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
var n=e("buffer"),r=n.Buffer;function s(e,t){for(var i in e)t[i]=e[i]}function a(e,t,i){return r(e,t,i)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?t.exports=n:(s(n,i),i.Buffer=a),a.prototype=Object.create(r.prototype),s(r,a),a.from=function(e,t,i){if("number"==typeof e)throw new TypeError("Argument must not be a number");return r(e,t,i)},a.alloc=function(e,t,i){if("number"!=typeof e)throw new TypeError("Argument must be a number");var n=r(e);return void 0!==t?"string"==typeof i?n.fill(t,i):n.fill(t):n.fill(0),n},a.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r(e)},a.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}},{buffer:110}],339:[function(e,t,i){(function(i){(function(){"use strict";var n,r=e("buffer"),s=r.Buffer,a={};for(n in r)r.hasOwnProperty(n)&&"SlowBuffer"!==n&&"Buffer"!==n&&(a[n]=r[n]);var o=a.Buffer={};for(n in s)s.hasOwnProperty(n)&&"allocUnsafe"!==n&&"allocUnsafeSlow"!==n&&(o[n]=s[n]);if(a.Buffer.prototype=s.prototype,o.from&&o.from!==Uint8Array.from||(o.from=function(e,t,i){if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof e);if(e&&void 0===e.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);return s(e,t,i)}),o.alloc||(o.alloc=function(e,t,i){if("number"!=typeof e)throw new TypeError('The "size" argument must be of type number. Received type '+typeof e);if(e<0||e>=2*(1<<30))throw new RangeError('The value "'+e+'" is invalid for option "size"');var n=s(e);return t&&0!==t.length?"string"==typeof i?n.fill(t,i):n.fill(t):n.fill(0),n}),!a.kStringMaxLength)try{a.kStringMaxLength=i.binding("buffer").kStringMaxLength}catch(e){}a.constants||(a.constants={MAX_LENGTH:a.kMaxLength},a.kStringMaxLength&&(a.constants.MAX_STRING_LENGTH=a.kStringMaxLength)),t.exports=a}).call(this)}).call(this,e("_process"))},{_process:296,buffer:110}],340:[function(e,t,i){var n=e("safe-buffer").Buffer;function r(e,t){this._block=n.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}r.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=n.from(e,t));for(var i=this._block,r=this._blockSize,s=e.length,a=this._len,o=0;o<s;){for(var c=a%r,l=Math.min(s-o,r-c),u=0;u<l;u++)i[c+u]=e[o+u];o+=l,(a+=l)%r==0&&this._update(i)}return this._len+=s,this},r.prototype.digest=function(e){var t=this._len%this._blockSize;this._block[t]=128,this._block.fill(0,t+1),t>=this._finalSize&&(this._update(this._block),this._block.fill(0));var i=8*this._len;if(i<=4294967295)this._block.writeUInt32BE(i,this._blockSize-4);else{var n=(4294967295&i)>>>0,r=(i-n)/4294967296;this._block.writeUInt32BE(r,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var s=this._hash();return e?s.toString(e):s},r.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=r},{"safe-buffer":338}],341:[function(e,t,i){(i=t.exports=function(e){e=e.toLowerCase();var t=i[e];if(!t)throw new Error(e+" is not supported (we accept pull requests)");return new t}).sha=e("./sha"),i.sha1=e("./sha1"),i.sha224=e("./sha224"),i.sha256=e("./sha256"),i.sha384=e("./sha384"),i.sha512=e("./sha512")},{"./sha":342,"./sha1":343,"./sha224":344,"./sha256":345,"./sha384":346,"./sha512":347}],342:[function(e,t,i){var n=e("inherits"),r=e("./hash"),s=e("safe-buffer").Buffer,a=[1518500249,1859775393,-1894007588,-899497514],o=new Array(80);function c(){this.init(),this._w=o,r.call(this,64,56)}function l(e){return e<<30|e>>>2}function u(e,t,i,n){return 0===e?t&i|~t&n:2===e?t&i|t&n|i&n:t^i^n}n(c,r),c.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},c.prototype._update=function(e){for(var t,i=this._w,n=0|this._a,r=0|this._b,s=0|this._c,o=0|this._d,c=0|this._e,p=0;p<16;++p)i[p]=e.readInt32BE(4*p);for(;p<80;++p)i[p]=i[p-3]^i[p-8]^i[p-14]^i[p-16];for(var d=0;d<80;++d){var f=~~(d/20),h=0|((t=n)<<5|t>>>27)+u(f,r,s,o)+c+i[d]+a[f];c=o,o=s,s=l(r),r=n,n=h}this._a=n+this._a|0,this._b=r+this._b|0,this._c=s+this._c|0,this._d=o+this._d|0,this._e=c+this._e|0},c.prototype._hash=function(){var e=s.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},t.exports=c},{"./hash":340,inherits:217,"safe-buffer":338}],343:[function(e,t,i){var n=e("inherits"),r=e("./hash"),s=e("safe-buffer").Buffer,a=[1518500249,1859775393,-1894007588,-899497514],o=new Array(80);function c(){this.init(),this._w=o,r.call(this,64,56)}function l(e){return e<<5|e>>>27}function u(e){return e<<30|e>>>2}function p(e,t,i,n){return 0===e?t&i|~t&n:2===e?t&i|t&n|i&n:t^i^n}n(c,r),c.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._dLine truncated
|
||||
/*! simple-concat. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
t.exports=function(t,i){var n=[];t.on("data",(function(e){n.push(e)})),t.once("end",(function(){i&&i(null,e.concat(n)),i=null})),t.once("error",(function(e){i&&i(e),i=null}))}}).call(this)}).call(this,e("buffer").Buffer)},{buffer:110}],349:[function(e,t,i){(function(i){(function(){
|
||||
/*! simple-get. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
t.exports=p;const n=e("simple-concat"),r=e("decompress-response"),s=e("http"),a=e("https"),o=e("once"),c=e("querystring"),l=e("url"),u=e=>null!==e&&"object"==typeof e&&"function"==typeof e.pipe;function p(e,t){if(e=Object.assign({maxRedirects:10},"string"==typeof e?{url:e}:e),t=o(t),e.url){const{hostname:t,port:i,protocol:n,auth:r,path:s}=l.parse(e.url);delete e.url,t||i||n||r?Object.assign(e,{hostname:t,port:i,protocol:n,auth:r,path:s}):e.path=s}const n={"accept-encoding":"gzip, deflate"};let d;e.headers&&Object.keys(e.headers).forEach((t=>n[t.toLowerCase()]=e.headers[t])),e.headers=n,e.body?d=e.json&&!u(e.body)?JSON.stringify(e.body):e.body:e.form&&(d="string"==typeof e.form?e.form:c.stringify(e.form),e.headers["content-type"]="application/x-www-form-urlencoded"),d&&(e.method||(e.method="POST"),u(d)||(e.headers["content-length"]=i.byteLength(d)),e.json&&!e.form&&(e.headers["content-type"]="application/json")),delete e.body,delete e.form,e.json&&(e.headers.accept="application/json"),e.method&&(e.method=e.method.toUpperCase());const f=e.hostname,h=("https:"===e.protocol?a:s).request(e,(i=>{if(!1!==e.followRedirects&&i.statusCode>=300&&i.statusCode<400&&i.headers.location){e.url=i.headers.location,delete e.headers.host,i.resume();const n=l.parse(e.url).hostname;return null!==n&&n!==f&&(delete e.headers.cookie,delete e.headers.authorization),"POST"===e.method&&[301,302].includes(i.statusCode)&&(e.method="GET",delete e.headers["content-length"],delete e.headers["content-type"]),0==e.maxRedirects--?t(new Error("too many redirects")):p(e,t)}const n="function"==typeof r&&"HEAD"!==e.method;t(null,n?r(i):i)}));return h.on("timeout",(()=>{h.abort(),t(new Error("Request timed out"))})),h.on("error",t),u(d)?d.on("error",t).pipe(h):h.end(d),h}p.concat=(e,t)=>p(e,((i,r)=>{if(i)return t(i);n(r,((i,n)=>{if(i)return t(i);if(e.json)try{n=JSON.parse(n.toString())}catch(i){return t(i,r,n)}t(null,r,n)}))})),["get","post","put","patch","head","delete"].forEach((e=>{p[e]=(t,i)=>("string"==typeof t&&(t={url:t}),p(Object.assign({method:e.toUpperCase()},t),i))}))}).call(this)}).call(this,e("buffer").Buffer)},{buffer:110,"decompress-response":67,http:404,https:214,once:281,querystring:308,"simple-concat":348,url:437}],350:[function(e,t,i){
|
||||
/*! simple-peer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
const n=e("debug")("simple-peer"),r=e("get-browser-rtc"),s=e("randombytes"),a=e("readable-stream"),o=e("queue-microtask"),c=e("err-code"),{Buffer:l}=e("buffer"),u=65536;function p(e){return e.replace(/a=ice-options:trickle\s\n/g,"")}class d extends a.Duplex{constructor(e){if(super(e=Object.assign({allowHalfOpen:!1},e)),this._id=s(4).toString("hex").slice(0,7),this._debug("new peer %o",e),this.channelName=e.initiator?e.channelName||s(20).toString("hex"):null,this.initiator=e.initiator||!1,this.channelConfig=e.channelConfig||d.channelConfig,this.channelNegotiated=this.channelConfig.negotiated,this.config=Object.assign({},d.config,e.config),this.offerOptions=e.offerOptions||{},this.answerOptions=e.answerOptions||{},this.sdpTransform=e.sdpTransform||(e=>e),this.streams=e.streams||(e.stream?[e.stream]:[]),this.trickle=void 0===e.trickle||e.trickle,this.allowHalfTrickle=void 0!==e.allowHalfTrickle&&e.allowHalfTrickle,this.iceCompleteTimeout=e.iceCompleteTimeout||5e3,this.destroyed=!1,this.destroying=!1,this._connected=!1,this.remoteAddress=void 0,this.remoteFamily=void 0,this.remotePort=void 0,this.localAddress=void 0,this.localFamily=void 0,this.localPort=void 0,this._wrtc=e.wrtc&&"object"==typeof e.wrtc?e.wrtc:r(),!this._wrtc)throw"undefined"==typeof window?c(new Error("No WebRTC support: Specify `opts.wrtc` option in this environment"),"ERR_WEBRTC_SUPPORT"):c(new Error("No WebRTC support: Not a supported browser"),"ERR_WEBRTC_SUPPORT");this._pcReady=!1,this._channelReady=!1,this._iceComplete=!1,this._iceCompleteTimer=null,this._channel=null,this._pendingCandidates=[],this._isNegotiating=!1,this._firstNegotiation=!0,this._batchedNegotiation=!1,this._queuedNegotiation=!1,this._sendersAwaitingStable=[],this._senderMap=new Map,this._closingInterval=null,this._remoteTracks=[],this._remoteStreams=[],this._chunk=null,this._cb=null,this._interval=null;try{this._pc=new this._wrtc.RTCPeerConnection(this.config)}catch(e){return void this.destroy(c(e,"ERR_PC_CONSTRUCTOR"))}this._isReactNativeWebrtc="number"==typeof this._pc._peerConnectionId,this._pc.oniceconnectionstatechange=()=>{this._onIceStateChange()},this._pc.onicegatheringstatechange=()=>{this._onIceStateChange()},this._pc.onconnectionstatechange=()=>{this._onConnectionStateChange()},this._pc.onsignalingstatechange=()=>{this._onSignalingStateChange()},this._pc.onicecandidate=e=>{this._onIceCandidate(e)},"object"==typeof this._pc.peerIdentity&&this._pc.peerIdentity.catch((e=>{this.destroy(c(e,"ERR_PC_PEER_IDENTITY"))})),this.initiator||this.channelNegotiated?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=e=>{this._setupData(e)},this.streams&&this.streams.forEach((e=>{this.addStream(e)})),this._pc.ontrack=e=>{this._onTrack(e)},this._debug("initial negotiation"),this._needsNegotiation(),this._onFinishBound=()=>{this._onFinish()},this.once("finish",this._onFinishBound)}get bufferSize(){return this._channel&&this._channel.bufferedAmount||0}get connected(){return this._connected&&"open"===this._channel.readyState}address(){return{port:this.localPort,family:this.localFamily,address:this.localAddress}}signal(e){if(!this.destroying){if(this.destroyed)throw c(new Error("cannot signal after peer is destroyed"),"ERR_DESTROYED");if("string"==typeof e)try{e=JSON.parse(e)}catch(t){e={}}this._debug("signal()"),e.renegotiate&&this.initiator&&(this._debug("got request to renegotiate"),this._needsNegotiation()),e.transceiverRequest&&this.initiator&&(this._debug("got request for transceiver"),this.addTransceiver(e.transceiverRequest.kind,e.transceiverRequest.init)),e.candidate&&(this._pc.remoteDescription&&this._pc.remoteDescription.type?this._addIceCandidate(e.candidate):this._pendingCandidates.push(e.candidate)),e.sdp&&this._pc.setRemoteDescription(new this._wrtc.RTCSessionDescription(e)).then((()=>{this.destroyed||(this._pendingCandidates.forEach((e=>{this._addIceCandidate(e)})),this._pendingCandidates=[],"offer"===this._pc.remoteDescription.type&&this._createAnswer())})).catch((e=>{this.destroy(c(e,"ERR_SET_REMOTE_DESCRIPTION"))})),e.sdp||e.candidate||e.renegotiate||e.transceiverRequest||this.destroy(c(new Error("signal() called with invalid signal data"),"ERR_SIGNALING"))}}_addIceCandidate(e){const t=new this._wrtc.RTCIceCandidate(e);this._pc.addIceCandidate(t).catch((e=>{var i;!t.address||t.address.endsWith(".local")?(i="Ignoring unsupported ICE candidate.",console.warn(i)):this.destroy(c(e,"ERR_ADD_ICE_CANDIDATE"))}))}send(e){if(!this.destroying){if(this.destroyed)throw c(new Error("cannot send after peer is destroyed"),"ERR_DESTROYED");this._channel.send(e)}}addTransceiver(e,t){if(!this.destroying){if(this.destroyed)throw c(new Error("cannot addTransceiver after peer is destroyed"),"ERR_DESTROYED");if(this._debug("addTransceiver()"),this.initiator)try{this._pc.addTransceiver(e,t),this._needsNegotiation()}catch(e){this.destroy(c(e,"ERR_ADD_TRANSCEIVER"))}else this.emit("signal",{type:"transceiverRequest",transLine truncated
|
||||
/*! simple-websocket. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
const n=e("debug")("simple-websocket"),r=e("randombytes"),s=e("readable-stream"),a=e("queue-microtask"),o=e("ws"),c="function"!=typeof o?WebSocket:o;class l extends s.Duplex{constructor(e={}){if("string"==typeof e&&(e={url:e}),super(e=Object.assign({allowHalfOpen:!1},e)),null==e.url&&null==e.socket)throw new Error("Missing required `url` or `socket` option");if(null!=e.url&&null!=e.socket)throw new Error("Must specify either `url` or `socket` option, not both");if(this._id=r(4).toString("hex").slice(0,7),this._debug("new websocket: %o",e),this.connected=!1,this.destroyed=!1,this._chunk=null,this._cb=null,this._interval=null,e.socket)this.url=e.socket.url,this._ws=e.socket,this.connected=e.socket.readyState===c.OPEN;else{this.url=e.url;try{this._ws="function"==typeof o?new c(e.url,null,{...e,encoding:void 0}):new c(e.url)}catch(e){return void a((()=>this.destroy(e)))}}this._ws.binaryType="arraybuffer",e.socket&&this.connected?a((()=>this._handleOpen())):this._ws.onopen=()=>this._handleOpen(),this._ws.onmessage=e=>this._handleMessage(e),this._ws.onclose=()=>this._handleClose(),this._ws.onerror=e=>this._handleError(e),this._handleFinishBound=()=>this._handleFinish(),this.once("finish",this._handleFinishBound)}send(e){this._ws.send(e)}destroy(e){this._destroy(e,(()=>{}))}_destroy(e,t){if(!this.destroyed){if(this._debug("destroy (error: %s)",e&&(e.message||e)),this.readable=this.writable=!1,this._readableState.ended||this.push(null),this._writableState.finished||this.end(),this.connected=!1,this.destroyed=!0,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._handleFinishBound&&this.removeListener("finish",this._handleFinishBound),this._handleFinishBound=null,this._ws){const t=this._ws,i=()=>{t.onclose=null};if(t.readyState===c.CLOSED)i();else try{t.onclose=i,t.close()}catch(e){i()}t.onopen=null,t.onmessage=null,t.onerror=()=>{}}this._ws=null,e&&this.emit("error",e),this.emit("close"),t()}}_read(){}_write(e,t,i){if(this.destroyed)return i(new Error("cannot write after socket is destroyed"));if(this.connected){try{this.send(e)}catch(e){return this.destroy(e)}"function"!=typeof o&&this._ws.bufferedAmount>65536?(this._debug("start backpressure: bufferedAmount %d",this._ws.bufferedAmount),this._cb=i):i(null)}else this._debug("write before connect"),this._chunk=e,this._cb=i}_handleOpen(){if(!this.connected&&!this.destroyed){if(this.connected=!0,this._chunk){try{this.send(this._chunk)}catch(e){return this.destroy(e)}this._chunk=null,this._debug('sent chunk from "write before connect"');const e=this._cb;this._cb=null,e(null)}"function"!=typeof o&&(this._interval=setInterval((()=>this._onInterval()),150),this._interval.unref&&this._interval.unref()),this._debug("connect"),this.emit("connect")}}_handleMessage(e){if(this.destroyed)return;let t=e.data;t instanceof ArrayBuffer&&(t=i.from(t)),this.push(t)}_handleClose(){this.destroyed||(this._debug("on close"),this.destroy())}_handleError(e){this.destroy(new Error(`Error connecting to ${this.url}`))}_handleFinish(){if(this.destroyed)return;const e=()=>{setTimeout((()=>this.destroy()),1e3)};this.connected?e():this.once("connect",e)}_onInterval(){if(!this._cb||!this._ws||this._ws.bufferedAmount>65536)return;this._debug("ending backpressure: bufferedAmount %d",this._ws.bufferedAmount);const e=this._cb;this._cb=null,e(null)}_debug(){const e=[].slice.call(arguments);e[0]="["+this._id+"] "+e[0],n.apply(null,e)}}l.WEBSOCKET_SUPPORT=!!c,t.exports=l}).call(this)}).call(this,e("buffer").Buffer)},{buffer:110,debug:146,"queue-microtask":309,randombytes:312,"readable-stream":383,ws:67}],369:[function(e,t,i){arguments[4][28][0].apply(i,arguments)},{dup:28}],370:[function(e,t,i){arguments[4][29][0].apply(i,arguments)},{"./_stream_readable":372,"./_stream_writable":374,_process:296,dup:29,inherits:217}],371:[function(e,t,i){arguments[4][30][0].apply(i,arguments)},{"./_stream_transform":373,dup:30,inherits:217}],372:[function(e,t,i){arguments[4][31][0].apply(i,arguments)},{"../errors":369,"./_stream_duplex":370,"./internal/streams/async_iterator":375,"./internal/streams/buffer_list":376,"./internal/streams/destroy":377,"./internal/streams/from":379,"./internal/streams/state":381,"./internal/streams/stream":382,_process:296,buffer:110,dup:31,events:178,inherits:217,"string_decoder/":427,util:67}],373:[function(e,t,i){arguments[4][32][0].apply(i,arguments)},{"../errors":369,"./_stream_duplex":370,dup:32,inherits:217}],374:[function(e,t,i){arguments[4][33][0].apply(i,arguments)},{"../errors":369,"./_stream_duplex":370,"./internal/streams/destroy":377,"./internal/streams/state":381,"./internal/streams/stream":382,_process:296,buffer:110,dup:33,inherits:217,"util-deprecate":440}],375:[function(e,t,i){arguments[4][34][0].apply(i,arguments)},{"./end-of-stream":378,_process:296,dup:34}],376:[function(e,t,i){arguments[4][35][0].apply(i,arguments)},{buffer:110,dup:35,util:67}],377:[function(e,t,i){arguments[4][36][0].apply(i,arguments)},{_process:296,dup:36}],378:[fLine truncated
|
||||
/*! stream-to-blob-url. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
t.exports=async function(e,t){const i=await n(e,t);return URL.createObjectURL(i)};const n=e("stream-to-blob")},{"stream-to-blob":424}],424:[function(e,t,i){
|
||||
/*! stream-to-blob. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
t.exports=function(e,t){if(null!=t&&"string"!=typeof t)throw new Error("Invalid mimetype, expected string.");return new Promise(((i,n)=>{const r=[];e.on("data",(e=>r.push(e))).once("end",(()=>{const e=null!=t?new Blob(r,{type:t}):new Blob(r);i(e)})).once("error",n)}))}},{}],425:[function(e,t,i){(function(i){(function(){
|
||||
/*! stream-with-known-length-to-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
||||
var n=e("once");t.exports=function(e,t,r){r=n(r);var s=i.alloc(t),a=0;e.on("data",(function(e){e.copy(s,a),a+=e.length})).on("end",(function(){r(null,s)})).on("error",r)}}).call(this)}).call(this,e("buffer").Buffer)},{buffer:110,once:281}],426:[function(e,t,i){const{EventEmitter:n}=e("events"),r=new Error("Stream was destroyed"),s=new Error("Premature close"),a=e("queue-tick"),o=e("fast-fifo"),c=67108863,l=1^c,u=16,p=128,d=256,f=1024,h=2048,m=4096,b=8192,v=16384,g=32784,y=768^c,x=1<<17,_=2<<17,w=4<<17,k=8<<17,E=16<<17,S=32<<17,M=64<<17,A=129<<17,j=256<<17,I=66977791,T=66846719,C=131088,B=66977775,R=4210688,L=14,O=15,P=4210702,U=16941072,q=16809999,N=1179648,D=1179663,z=Symbol.asyncIterator||Symbol("asyncIterator");class H{constructor(e,{highWaterMark:t=16384,map:i=null,mapWritable:n,byteLength:r,byteLengthWritable:s}={}){this.stream=e,this.queue=new o,this.highWaterMark=t,this.buffered=0,this.error=null,this.pipeline=null,this.byteLength=s||r||le,this.map=n||i,this.afterWrite=X.bind(this),this.afterUpdateNextTick=J.bind(this)}get ended(){return 0!=(this.stream._duplexState&S)}push(e){return null!==this.map&&(e=this.map(e)),this.buffered+=this.byteLength(e),this.queue.push(e),this.buffered<this.highWaterMark?(this.stream._duplexState|=k,!0):(this.stream._duplexState|=3145728,!1)}shift(){const e=this.queue.shift(),t=this.stream;return this.buffered-=this.byteLength(e),0===this.buffered&&(t._duplexState&=66060287),e}end(e){"function"==typeof e?this.stream.once("finish",e):null!=e&&this.push(e),this.stream._duplexState=(this.stream._duplexState|j)&T}autoBatch(e,t){const i=[],n=this.stream;for(i.push(e);(n._duplexState&D)===N;)i.push(n._writableState.shift());if(0!=(n._duplexState&O))return t(null);n._writev(i,t)}update(){const e=this.stream;for(;(e._duplexState&D)===k;){const t=this.shift();e._duplexState|=655360,e._write(t,this.afterWrite),e._duplexState&=66584575}0==(393216&e._duplexState)&&this.updateNonPrimary()}updateNonPrimary(){const e=this.stream;if((38928399&e._duplexState)===j)return e._duplexState=33554431&(e._duplexState|x),void e._final($.bind(this));4!=(e._duplexState&L)?1==(e._duplexState&q)&&(e._duplexState=(e._duplexState|C)&l,e._open(Q.bind(this))):0==(e._duplexState&U)&&(e._duplexState|=C,e._destroy(G.bind(this)))}updateNextTick(){0==(this.stream._duplexState&A)&&(this.stream._duplexState|=A,a(this.afterUpdateNextTick))}}class F{constructor(e,{highWaterMark:t=16384,map:i=null,mapReadable:n,byteLength:r,byteLengthReadable:s}={}){this.stream=e,this.queue=new o,this.highWaterMark=t,this.buffered=0,this.error=null,this.pipeline=null,this.byteLength=s||r||le,this.map=n||i,this.pipeTo=null,this.afterRead=Y.bind(this),this.afterUpdateNextTick=Z.bind(this)}get ended(){return 0!=(this.stream._duplexState&v)}pipe(e,t){if(null!==this.pipeTo)throw new Error("Can only pipe to one destination");if("function"!=typeof t&&(t=null),this.stream._duplexState|=512,this.pipeTo=e,this.pipeline=new V(this.stream,e,t),t&&this.stream.on("error",ue),ce(e))e._writableState.pipeline=this.pipeline,t&&e.on("error",ue),e.on("finish",this.pipeline.finished.bind(this.pipeline));else{const t=this.pipeline.done.bind(this.pipeline,e),i=this.pipeline.done.bind(this.pipeline,e,null);e.on("error",t),e.on("close",i),e.on("finish",this.pipeline.finished.bind(this.pipeline))}e.on("drain",K.bind(this)),this.stream.emit("piping",e),e.emit("pipe",this.stream)}push(e){const t=this.stream;return null===e?(this.highWaterMark=0,t._duplexState=67043295&(t._duplexState|f),!1):(null!==this.map&&(e=this.map(e)),this.buffered+=this.byteLength(e),this.queue.push(e),t._duplexState=67043327&(t._duplexState|p),this.buffered<this.highWaterMark)}shift(){const e=this.queue.shift();return this.buffered-=this.byteLength(e),0===this.buffered&&(this.stream._duplexState&=67100543),e}unshift(e){let t;const i=[];for(;void 0!==(t=this.queue.shift());)i.push(t);this.push(e);for(let e=0;e<i.length;e++)this.queue.push(i[e])}read(){const e=this.stream;if((16527&e._duplexState)===p){const t=this.shift();return null!==this.pipeTo&&!1===this.pipeTo.write(t)&&(e._duplexState&=y),0!=(e._duplexState&h)&&e.emit("data",t),t}return null}drain(){const e=this.stream;for(;(16527&e._duplexState)===p&&0!=(768&e._duplexState);){const t=this.shift();null!==this.pipeTo&&!1===this.pipeTo.write(t)&&(e._duplexState&=y),0!=(e._duplexState&h)&&e.emit("data",t)}}update(){const e=this.stream;for(this.drain();this.buffered<this.highWaterMark&&0==(82975&e._duplexState);)e._duplexState|=65616,e._read(this.afterRead),e._duplexState&=67108799,0==(e._duplexState&u)&&this.drain();4224==(12431&e._duplexState)&&(e._duplexState|=b,e.emit("readable")),0==(48&e._duplexState)&&this.updateNonPrimary()}updateNonPrimary(){const e=this.stream;(1167&e._duplexState)===f&&(e._duplexState=67107839&(e._duplexState|v),e.emit("end"),(e._duplexState&P)===R&&(e._duplexState|=4),null!==this.pipeTo&&this.pipeTo.end()),4!=(e._duplexState&L)?1==(e._duplexState&q)&&(e._duplexState=(e._duplexState|C)&l,e._open(Q.bind(tLine truncated
|
||||
/**!
|
||||
* tippy.js v6.3.7
|
||||
* (c) 2017-2021 atomiks
|
||||
* MIT License
|
||||
*/
|
||||
"use strict";Object.defineProperty(i,"__esModule",{value:!0});var n=e("@popperjs/core"),r="tippy-content",s="tippy-backdrop",a="tippy-arrow",o="tippy-svg-arrow",c={passive:!0,capture:!0},l=function(){return document.body};function u(e,t,i){if(Array.isArray(e)){var n=e[t];return null==n?Array.isArray(i)?i[t]:i:n}return e}function p(e,t){var i={}.toString.call(e);return 0===i.indexOf("[object")&&i.indexOf(t+"]")>-1}function d(e,t){return"function"==typeof e?e.apply(void 0,t):e}function f(e,t){return 0===t?e:function(n){clearTimeout(i),i=setTimeout((function(){e(n)}),t)};var i}function h(e,t){var i=Object.assign({},e);return t.forEach((function(e){delete i[e]})),i}function m(e){return[].concat(e)}function b(e,t){-1===e.indexOf(t)&&e.push(t)}function v(e){return e.split("-")[0]}function g(e){return[].slice.call(e)}function y(e){return Object.keys(e).reduce((function(t,i){return void 0!==e[i]&&(t[i]=e[i]),t}),{})}function x(){return document.createElement("div")}function _(e){return["Element","Fragment"].some((function(t){return p(e,t)}))}function w(e){return p(e,"MouseEvent")}function k(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function E(e){return _(e)?[e]:function(e){return p(e,"NodeList")}(e)?g(e):Array.isArray(e)?e:g(document.querySelectorAll(e))}function S(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function M(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function A(e){var t,i=m(e)[0];return null!=i&&null!=(t=i.ownerDocument)&&t.body?i.ownerDocument:document}function j(e,t,i){var n=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[n](t,i)}))}function I(e,t){for(var i=t;i;){var n;if(e.contains(i))return!0;i=null==i.getRootNode||null==(n=i.getRootNode())?void 0:n.host}return!1}var T={isTouch:!1},C=0;function B(){T.isTouch||(T.isTouch=!0,window.performance&&document.addEventListener("mousemove",R))}function R(){var e=performance.now();e-C<20&&(T.isTouch=!1,document.removeEventListener("mousemove",R)),C=e}function L(){var e=document.activeElement;if(k(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var O,P=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto;function U(e){return[e+"() was called on a"+("destroy"===e?"n already-":" ")+"destroyed instance. This is a no-op but","indicates a potential memory leak."].join(" ")}function q(e){return e.replace(/[ \t]{2,}/g," ").replace(/^[ \t]*/gm,"").trim()}function N(e){return q("\n %ctippy.js\n\n %c"+q(e)+"\n\n %c👷 This is a development-only message. It will be removed in production.\n ")}function D(e){return[N(e),"color: #00C584; font-size: 1.3em; font-weight: bold;","line-height: 1.5","color: #a6a095;"]}function z(e,t){var i;e&&!O.has(t)&&(O.add(t),(i=console).warn.apply(i,D(t)))}function H(e,t){var i;e&&!O.has(t)&&(O.add(t),(i=console).error.apply(i,D(t)))}"production"!==t.env.NODE_ENV&&(O=new Set);var F={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},W=Object.assign({appendTo:l,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},F,{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),V=Object.keys(W);function K(e){var t=(e.plugins||[]).reduce((function(t,i){var n,r=i.name,s=i.defaultValue;r&&(t[r]=void 0!==e[r]?e[r]:null!=(n=W[r])?n:s);return t}),{});return Object.assign({},e,t)}function $(e,t){var i=Object.assign({},t,{content:d(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(K(Object.assign({},W,{plugins:t}))):V).reduce((function(t,i){var n=(e.getAttribute("data-tippy-"+i)||"").trim();if(!n)return t;if("content"===i)t[i]=n;else try{t[i]=JSON.parse(n)}catch(e){t[i]=n}return t}),{})}(e,t.plugins));return i.aria=Object.assign({},W.aria,i.aria),i.aria={expanded:"auto"===i.aria.expanded?t.interactive:i.aria.expanded,content:"auto"===i.aria.content?t.interactive?null:"describedby":i.aria.content},i}function G(e,t){void 0===e&&(e={}),void 0===t&&(t=[]),Object.keys(e).forEach((function(e){var i,n,r=h(W,Object.keys(F)),s=(i=r,n=e,!{}.hasOwnProperty.call(i,n));s&&(s=0===t.filter((function(t){return t.name===e})).length),z(s,["`"+e+"`","is not a valid prop. You may have spelled it incorrectly, or if it's","a plugin, forgot to pass it in an array as props.plugins.","\n\n","All props: https://atomiks.github.io/tippyjs/v6/all-props/\n","Plugins: https://atomiks.github.io/tippyjs/v6/pl
Line truncated
|
||||
/*! torrent-discovery. MIT License. WebTorrent LLC <https://webtorrent.io/opensource> */
|
||||
const n=e("debug")("torrent-discovery"),r=e("bittorrent-dht/client"),s=e("events").EventEmitter,a=e("run-parallel"),o=e("bittorrent-tracker/client"),c=e("bittorrent-lsd");t.exports=class extends s{constructor(e){if(super(),!e.peerId)throw new Error("Option `peerId` is required");if(!e.infoHash)throw new Error("Option `infoHash` is required");if(!i.browser&&!e.port)throw new Error("Option `port` is required");this.peerId="string"==typeof e.peerId?e.peerId:e.peerId.toString("hex"),this.infoHash="string"==typeof e.infoHash?e.infoHash.toLowerCase():e.infoHash.toString("hex"),this._port=e.port,this._userAgent=e.userAgent,this.destroyed=!1,this._announce=e.announce||[],this._intervalMs=e.intervalMs||9e5,this._trackerOpts=null,this._dhtAnnouncing=!1,this._dhtTimeout=!1,this._internalDHT=!1,this._onWarning=e=>{this.emit("warning",e)},this._onError=e=>{this.emit("error",e)},this._onDHTPeer=(e,t)=>{t.toString("hex")===this.infoHash&&this.emit("peer",`${e.host}:${e.port}`,"dht")},this._onTrackerPeer=e=>{this.emit("peer",e,"tracker")},this._onTrackerAnnounce=()=>{this.emit("trackerAnnounce")},this._onLSDPeer=(e,t)=>{this.emit("peer",e,"lsd")};const t=(e,t)=>{const i=new r(t);return i.on("warning",this._onWarning),i.on("error",this._onError),i.listen(e),this._internalDHT=!0,i};!1===e.tracker?this.tracker=null:e.tracker&&"object"==typeof e.tracker?(this._trackerOpts=Object.assign({},e.tracker),this.tracker=this._createTracker()):this.tracker=this._createTracker(),!1===e.dht||"function"!=typeof r?this.dht=null:e.dht&&"function"==typeof e.dht.addNode?this.dht=e.dht:e.dht&&"object"==typeof e.dht?this.dht=t(e.dhtPort,e.dht):this.dht=t(e.dhtPort),this.dht&&(this.dht.on("peer",this._onDHTPeer),this._dhtAnnounce()),!1===e.lsd||"function"!=typeof c?this.lsd=null:this.lsd=this._createLSD()}updatePort(e){e!==this._port&&(this._port=e,this.dht&&this._dhtAnnounce(),this.tracker&&(this.tracker.stop(),this.tracker.destroy((()=>{this.tracker=this._createTracker()}))))}complete(e){this.tracker&&this.tracker.complete(e)}destroy(e){if(this.destroyed)return;this.destroyed=!0,clearTimeout(this._dhtTimeout);const t=[];this.tracker&&(this.tracker.stop(),this.tracker.removeListener("warning",this._onWarning),this.tracker.removeListener("error",this._onError),this.tracker.removeListener("peer",this._onTrackerPeer),this.tracker.removeListener("update",this._onTrackerAnnounce),t.push((e=>{this.tracker.destroy(e)}))),this.dht&&this.dht.removeListener("peer",this._onDHTPeer),this._internalDHT&&(this.dht.removeListener("warning",this._onWarning),this.dht.removeListener("error",this._onError),t.push((e=>{this.dht.destroy(e)}))),this.lsd&&(this.lsd.removeListener("warning",this._onWarning),this.lsd.removeListener("error",this._onError),this.lsd.removeListener("peer",this._onLSDPeer),t.push((e=>{this.lsd.destroy(e)}))),a(t,e),this.dht=null,this.tracker=null,this.lsd=null,this._announce=null}_createTracker(){const e=Object.assign({},this._trackerOpts,{infoHash:this.infoHash,announce:this._announce,peerId:this.peerId,port:this._port,userAgent:this._userAgent}),t=new o(e);return t.on("warning",this._onWarning),t.on("error",this._onError),t.on("peer",this._onTrackerPeer),t.on("update",this._onTrackerAnnounce),t.setInterval(this._intervalMs),t.start(),t}_dhtAnnounce(){this._dhtAnnouncing||(n("dht announce"),this._dhtAnnouncing=!0,clearTimeout(this._dhtTimeout),this.dht.announce(this.infoHash,this._port,(e=>{this._dhtAnnouncing=!1,n("dht announce complete"),e&&this.emit("warning",e),this.emit("dhtAnnounce"),this.destroyed||(this._dhtTimeout=setTimeout((()=>{this._dhtAnnounce()}),this._intervalMs+Math.floor(Math.random()*this._intervalMs/5)),this._dhtTimeout.unref&&this._dhtTimeout.unref())})))}_createLSD(){const e=Object.assign({},{infoHash:this.infoHash,peerId:this.peerId,port:this._port}),t=new c(e);return t.on("warning",this._onWarning),t.on("error",this._onError),t.on("peer",this._onLSDPeer),t.start(),t}}}).call(this)}).call(this,e("_process"))},{_process:296,"bittorrent-dht/client":67,"bittorrent-lsd":67,"bittorrent-tracker/client":43,debug:146,events:178,"run-parallel":336}],434:[function(e,t,i){(function(e){(function(){
|
||||
/*! torrent-piece. MIT License. WebTorrent LLC <https://webtorrent.io/opensource> */
|
||||
const i=16384;class n{constructor(e){this.length=e,this.missing=e,this.sources=null,this._chunks=Math.ceil(e/i),this._remainder=e%i||i,this._buffered=0,this._buffer=null,this._cancellations=null,this._reservations=0,this._flushed=!1}chunkLength(e){return e===this._chunks-1?this._remainder:i}chunkLengthRemaining(e){return this.length-e*i}chunkOffset(e){return e*i}reserve(){return this.init()?this._cancellations.length?this._cancellations.pop():this._reservations<this._chunks?this._reservations++:-1:-1}reserveRemaining(){if(!this.init())return-1;if(this._cancellations.length||this._reservations<this._chunks){let e=this._reservations;for(;this._cancellations.length;)e=Math.min(e,this._cancellations.pop());return this._reservations=this._chunks,e}return-1}cancel(e){this.init()&&this._cancellations.push(e)}cancelRemaining(e){this.init()&&(this._reservations=e)}get(e){return this.init()?this._buffer[e]:null}set(e,t,n){if(!this.init())return!1;const r=t.length,s=Math.ceil(r/i);for(let r=0;r<s;r++)if(!this._buffer[e+r]){const s=r*i,a=t.slice(s,s+i);this._buffered++,this._buffer[e+r]=a,this.missing-=a.length,this.sources.includes(n)||this.sources.push(n)}return this._buffered===this._chunks}flush(){if(!this._buffer||this._chunks!==this._buffered)return null;const t=e.concat(this._buffer,this.length);return this._buffer=null,this._cancellations=null,this.sources=null,this._flushed=!0,t}init(){return!this._flushed&&(this._buffer||(this._buffer=new Array(this._chunks),this._cancellations=[],this.sources=[]),!0)}}Object.defineProperty(n,"BLOCK_LENGTH",{value:i}),t.exports=n}).call(this)}).call(this,e("buffer").Buffer)},{buffer:110}],435:[function(e,t,i){var n=e("buffer-alloc"),r=Math.pow(2,32);i.encodingLength=function(){return 8},i.encode=function(e,t,i){t||(t=n(8)),i||(i=0);var s=Math.floor(e/r),a=e-s*r;return t.writeUInt32BE(s,i),t.writeUInt32BE(a,i+4),t},i.decode=function(e,t){t||(t=0);var i=e.readUInt32BE(t),n=e.readUInt32BE(t+4);return i*r+n},i.encode.bytes=8,i.decode.bytes=8},{"buffer-alloc":112}],436:[function(e,t,i){t.exports=function(e,t){if(t>=e.length||t<0)return;var i=e.pop();if(t<e.length){var n=e[t];return e[t]=i,n}return i}},{}],437:[function(e,t,i){"use strict";var n=e("punycode"),r=e("./util");function s(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}i.parse=y,i.resolve=function(e,t){return y(e,!1,!0).resolve(t)},i.resolveObject=function(e,t){return e?y(e,!1,!0).resolveObject(t):t},i.format=function(e){r.isString(e)&&(e=y(e));return e instanceof s?e.format():s.prototype.format.call(e)},i.Url=s;var a=/^([a-z0-9.+-]+:)/i,o=/:[0-9]*$/,c=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,l=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),u=["'"].concat(l),p=["%","/","?",";","#"].concat(u),d=["/","?","#"],f=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},b={javascript:!0,"javascript:":!0},v={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},g=e("querystring");function y(e,t,i){if(e&&r.isObject(e)&&e instanceof s)return e;var n=new s;return n.parse(e,t,i),n}s.prototype.parse=function(e,t,i){if(!r.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var s=e.indexOf("?"),o=-1!==s&&s<e.indexOf("#")?"?":"#",l=e.split(o);l[0]=l[0].replace(/\\/g,"/");var y=e=l.join(o);if(y=y.trim(),!i&&1===e.split("#").length){var x=c.exec(y);if(x)return this.path=y,this.href=y,this.pathname=x[1],x[2]?(this.search=x[2],this.query=t?g.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var _=a.exec(y);if(_){var w=(_=_[0]).toLowerCase();this.protocol=w,y=y.substr(_.length)}if(i||_||y.match(/^\/\/[^@\/]+@[^@\/]+/)){var k="//"===y.substr(0,2);!k||_&&b[_]||(y=y.substr(2),this.slashes=!0)}if(!b[_]&&(k||_&&!v[_])){for(var E,S,M=-1,A=0;A<d.length;A++){-1!==(j=y.indexOf(d[A]))&&(-1===M||j<M)&&(M=j)}-1!==(S=-1===M?y.lastIndexOf("@"):y.lastIndexOf("@",M))&&(E=y.slice(0,S),y=y.slice(S+1),this.auth=decodeURIComponent(E)),M=-1;for(A=0;A<p.length;A++){var j;-1!==(j=y.indexOf(p[A]))&&(-1===M||j<M)&&(M=j)}-1===M&&(M=y.length),this.host=y.slice(0,M),y=y.slice(M),this.parseHost(),this.hostname=this.hostname||"";var I="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!I)for(var T=this.hostname.split(/\./),C=(A=0,T.length);A<C;A++){var B=T[A];if(B&&!B.match(f)){for(var R="",L=0,O=B.length;L<O;L++)B.charCodeAt(L)>127?R+="x":R+=B[L];if(!R.match(f)){var P=T.slice(0,A),U=T.slice(A+1),q=B.match(h);q&&(P.push(q[1]),U.unshift(q[2])),U.length&&(y="/"+U.join(".")+y),this.hostname=P.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),I||(this.hostname=n.toASCII(this.hostname));var N=this.port?":"+this.port:"",D=this.hostname||"";this.host=D+N,this.href+=this.host,I&&(thiLine truncated
|
||||
/*! ut_metadata. MIT License. WebTorrent LLC <https://webtorrent.io/opensource> */
|
||||
const{EventEmitter:n}=e("events"),r=e("bencode"),s=e("bitfield").default,a=e("debug")("ut_metadata"),o=e("simple-sha1"),c=16384;t.exports=e=>{class t extends n{constructor(t){super(),this._wire=t,this._fetching=!1,this._metadataComplete=!1,this._metadataSize=null,this._remainingRejects=null,this._bitfield=new s(0,{grow:1e3}),i.isBuffer(e)&&this.setMetadata(e)}onHandshake(e,t,i){this._infoHash=e}onExtendedHandshake(e){return e.m&&e.m.ut_metadata?e.metadata_size?"number"!=typeof e.metadata_size||1e7<e.metadata_size||e.metadata_size<=0?this.emit("warning",new Error("Peer gave invalid metadata size")):(this._metadataSize=e.metadata_size,this._numPieces=Math.ceil(this._metadataSize/c),this._remainingRejects=2*this._numPieces,void this._requestPieces()):this.emit("warning",new Error("Peer does not have metadata")):this.emit("warning",new Error("Peer does not support ut_metadata"))}onMessage(e){let t,i;try{const n=e.toString(),s=n.indexOf("ee")+2;t=r.decode(n.substring(0,s)),i=e.slice(s)}catch(e){return}switch(t.msg_type){case 0:this._onRequest(t.piece);break;case 1:this._onData(t.piece,i,t.total_size);break;case 2:this._onReject(t.piece)}}fetch(){this._metadataComplete||(this._fetching=!0,this._metadataSize&&this._requestPieces())}cancel(){this._fetching=!1}setMetadata(e){if(this._metadataComplete)return!0;a("set metadata");try{const t=r.decode(e).info;t&&(e=r.encode(t))}catch(e){}return(!this._infoHash||this._infoHash===o.sync(e))&&(this.cancel(),this.metadata=e,this._metadataComplete=!0,this._metadataSize=this.metadata.length,this._wire.extendedHandshake.metadata_size=this._metadataSize,this.emit("metadata",r.encode({info:r.decode(this.metadata)})),!0)}_send(e,t){let n=r.encode(e);i.isBuffer(t)&&(n=i.concat([n,t])),this._wire.extended("ut_metadata",n)}_request(e){this._send({msg_type:0,piece:e})}_data(e,t,i){const n={msg_type:1,piece:e};"number"==typeof i&&(n.total_size=i),this._send(n,t)}_reject(e){this._send({msg_type:2,piece:e})}_onRequest(e){if(!this._metadataComplete)return void this._reject(e);const t=e*c;let i=t+c;i>this._metadataSize&&(i=this._metadataSize);const n=this.metadata.slice(t,i);this._data(e,n,this._metadataSize)}_onData(e,t,i){t.length>c||!this._fetching||(t.copy(this.metadata,e*c),this._bitfield.set(e),this._checkDone())}_onReject(e){this._remainingRejects>0&&this._fetching?(this._request(e),this._remainingRejects-=1):this.emit("warning",new Error('Peer sent "reject" too much'))}_requestPieces(){if(this._fetching){this.metadata=i.alloc(this._metadataSize);for(let e=0;e<this._numPieces;e++)this._request(e)}}_checkDone(){let e=!0;for(let t=0;t<this._numPieces;t++)if(!this._bitfield.get(t)){e=!1;break}if(!e)return;this.setMetadata(this.metadata)||this._failedMetadata()}_failedMetadata(){this._bitfield=new s(0,{grow:1e3}),this._remainingRejects-=this._numPieces,this._remainingRejects>0?this._requestPieces():this.emit("warning",new Error("Peer sent invalid metadata"))}}return t.prototype.name="ut_metadata",t}}).call(this)}).call(this,e("buffer").Buffer)},{bencode:22,bitfield:26,buffer:110,debug:146,events:178,"simple-sha1":366}],440:[function(e,t,i){(function(e){(function(){function i(t){try{if(!e.localStorage)return!1}catch(e){return!1}var i=e.localStorage[t];return null!=i&&"true"===String(i).toLowerCase()}t.exports=function(e,t){if(i("noDeprecation"))return e;var n=!1;return function(){if(!n){if(i("throwDeprecation"))throw new Error(t);i("traceDeprecation")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],441:[function(e,t,i){(function(i){(function(){const n=e("binary-search"),r=e("events"),s=e("mp4-stream"),a=e("mp4-box-encoding"),o=e("range-slice-stream");class c{constructor(e,t){this._entries=e,this._countName=t||"count",this._index=0,this._offset=0,this.value=this._entries[0]}inc(){this._offset++,this._offset>=this._entries[this._index][this._countName]&&(this._index++,this._offset=0),this.value=this._entries[this._index]}}const l=1;t.exports=class extends r{constructor(e){super(),this._tracks=[],this._file=e,this._decoder=null,this._findMoov(0)}_findMoov(e){this._decoder&&this._decoder.destroy();let t=0;this._decoder=s.decode();const i=this._file.createReadStream({start:e});i.pipe(this._decoder);const n=r=>{"moov"===r.type?(this._decoder.removeListener("box",n),this._decoder.decode((e=>{i.destroy();try{this._processMoov(e)}catch(e){e.message=`Cannot parse mp4 file: ${e.message}`,this.emit("error",e)}}))):r.length<4096?(t+=r.length,this._decoder.ignore()):(this._decoder.removeListener("box",n),t+=r.length,i.destroy(),this._decoder.destroy(),this._findMoov(e+t))};this._decoder.on("box",n)}_processMoov(e){const t=e.traks;this._tracks=[],this._hasVideo=!1,this._hasAudio=!1;for(let i=0;i<t.length;i++){const r=t[i],s=r.mdia.minf.stbl,a=s.stsd.entries[0],o=r.mdia.hdlr.handlerType;let l,u;if("vide"===o&&"avc1"===a.type){if(this._hasVideo)contiLine truncated
|
||||
/*! webtorrent. MIT License. WebTorrent LLC <https://webtorrent.io/opensource> */
|
||||
const n=e("events"),r=e("path"),s=e("simple-concat"),a=e("create-torrent"),o=e("debug"),c=e("bittorrent-dht/client"),l=e("load-ip-set"),u=e("run-parallel"),p=e("parse-torrent"),d=e("simple-peer"),f=e("queue-microtask"),h=e("randombytes"),m=e("simple-sha1"),b=e("throughput"),{ThrottleGroup:v}=e("speed-limiter"),g=e("./lib/conn-pool.js"),y=e("./lib/torrent.js"),{version:x}=e("./package.json"),_=o("webtorrent"),w=x.replace(/\d*./g,(e=>("0"+e%100).slice(-2))).slice(0,4),k=`-WW${w}-`;class E extends n{constructor(t={}){super(),"string"==typeof t.peerId?this.peerId=t.peerId:i.isBuffer(t.peerId)?this.peerId=t.peerId.toString("hex"):this.peerId=i.from(k+h(9).toString("base64")).toString("hex"),this.peerIdBuffer=i.from(this.peerId,"hex"),"string"==typeof t.nodeId?this.nodeId=t.nodeId:i.isBuffer(t.nodeId)?this.nodeId=t.nodeId.toString("hex"):this.nodeId=h(20).toString("hex"),this.nodeIdBuffer=i.from(this.nodeId,"hex"),this._debugId=this.peerId.toString("hex").substring(0,7),this.destroyed=!1,this.listening=!1,this.torrentPort=t.torrentPort||0,this.dhtPort=t.dhtPort||0,this.tracker=void 0!==t.tracker?t.tracker:{},this.lsd=!1!==t.lsd,this.torrents=[],this.maxConns=Number(t.maxConns)||55,this.utp=E.UTP_SUPPORT&&!1!==t.utp,this._downloadLimit=Math.max("number"==typeof t.downloadLimit?t.downloadLimit:-1,-1),this._uploadLimit=Math.max("number"==typeof t.uploadLimit?t.uploadLimit:-1,-1),this.serviceWorker=null,this.workerKeepAliveInterval=null,this.workerPortCount=0,!0===t.secure&&e("./lib/peer").enableSecure(),this._debug("new webtorrent (peerId %s, nodeId %s, port %s)",this.peerId,this.nodeId,this.torrentPort),this.throttleGroups={down:new v({rate:Math.max(this._downloadLimit,0),enabled:this._downloadLimit>=0}),up:new v({rate:Math.max(this._uploadLimit,0),enabled:this._uploadLimit>=0})},this.tracker&&("object"!=typeof this.tracker&&(this.tracker={}),globalThis.WRTC&&!this.tracker.wrtc&&(this.tracker.wrtc=globalThis.WRTC)),"function"==typeof g?this._connPool=new g(this):f((()=>{this._onListening()})),this._downloadSpeed=b(),this._uploadSpeed=b(),!1!==t.dht&&"function"==typeof c?(this.dht=new c(Object.assign({},{nodeId:this.nodeId},t.dht)),this.dht.once("error",(e=>{this._destroy(e)})),this.dht.once("listening",(()=>{const e=this.dht.address();e&&(this.dhtPort=e.port)})),this.dht.setMaxListeners(0),this.dht.listen(this.dhtPort)):this.dht=!1,this.enableWebSeeds=!1!==t.webSeeds;const n=()=>{this.destroyed||(this.ready=!0,this.emit("ready"))};"function"==typeof l&&null!=t.blocklist?l(t.blocklist,{headers:{"user-agent":`WebTorrent/${x} (https://webtorrent.io)`}},((e,t)=>{if(e)return console.error(`Failed to load blocklist: ${e.message}`);this.blocked=t,n()})):f(n)}loadWorker(e,t=(()=>{})){if(!(e instanceof ServiceWorker))throw new Error("Invalid worker registration");if("activated"!==e.state)throw new Error("Worker isn't activated");this.serviceWorker=e,navigator.serviceWorker.addEventListener("message",(e=>{const{data:t}=e;if(!t.type||"webtorrent"===!t.type||!t.url)return null;let[i,...n]=t.url.slice(t.url.indexOf(t.scope+"webtorrent/")+11+t.scope.length).split("/");if(n=decodeURI(n.join("/")),!i||!n)return null;const[r]=e.ports,s=this.get(i)&&this.get(i).files.find((e=>e.path===n));if(!s)return null;const[a,o,c]=s._serve(t),l=o&&o[Symbol.asyncIterator](),u=()=>{r.onmessage=null,o&&o.destroy(),c&&c.destroy(),this.workerPortCount--,this.workerPortCount||(clearInterval(this.workerKeepAliveInterval),this.workerKeepAliveInterval=null)};r.onmessage=async e=>{if(e.data){let e;try{e=(await l.next()).value}catch(e){}r.postMessage(e),e||u(),this.workerKeepAliveInterval||(this.workerKeepAliveInterval=setInterval((()=>fetch(`${this.serviceWorker.scriptURL.slice(0,this.serviceWorker.scriptURL.lastIndexOf("/")+1).slice(window.location.origin.length)}webtorrent/keepalive/`)),2e4))}else u()},this.workerPortCount++,r.postMessage(a)})),fetch(`${this.serviceWorker.scriptURL.slice(0,this.serviceWorker.scriptURL.lastIndexOf("/")+1).slice(window.location.origin.length)}webtorrent/cancel/`).then((e=>{e.body.cancel()})),t(null,this.serviceWorker)}get downloadSpeed(){return this._downloadSpeed()}get uploadSpeed(){return this._uploadSpeed()}get progress(){const e=this.torrents.filter((e=>1!==e.progress));return e.reduce(((e,t)=>e+t.downloaded),0)/(e.reduce(((e,t)=>e+(t.length||0)),0)||1)}get ratio(){return this.torrents.reduce(((e,t)=>e+t.uploaded),0)/(this.torrents.reduce(((e,t)=>e+t.received),0)||1)}get(e){if(e instanceof y){if(this.torrents.includes(e))return e}else{let t;try{t=p(e)}catch(e){}if(!t)return null;if(!t.infoHash)throw new Error("Invalid torrent identifier");for(const e of this.torrents)if(e.infoHash===t.infoHash)return e}return null}add(e,t={},i=(()=>{})){if(this.destroyed)throw new Error("client is destroyed");"function"==typeof t&&([t,i]=[{},t]);const n=()=>{if(!this.destroyed)for(const e of this.torrents)if(e.infoHash===s.infoHash&&e!==s)return s._destroy(new Error(`Cannot add duplicate torrent ${s.infoHash}`)),void i(e)},r=()=>{thLine truncated
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Vendored
-2
@@ -1,2 +0,0 @@
|
||||
/*! Notyf 3.10.0 | MIT License | github.com/caroso1222/notyf */
|
||||
var Notyf=function(){"use strict";var e,o=function(){return(o=Object.assign||function(t){for(var i,e=1,n=arguments.length;e<n;e++)for(var o in i=arguments[e])Object.prototype.hasOwnProperty.call(i,o)&&(t[o]=i[o]);return t}).apply(this,arguments)},n=(t.prototype.on=function(t,i){var e=this.listeners[t]||[];this.listeners[t]=e.concat([i])},t.prototype.triggerEvent=function(t,i){var e=this;(this.listeners[t]||[]).forEach(function(t){return t({target:e,event:i})})},t);function t(t){this.options=t,this.listeners={}}(i=e=e||{})[i.Add=0]="Add",i[i.Remove=1]="Remove";var f,i,s=(a.prototype.push=function(t){this.notifications.push(t),this.updateFn(t,e.Add,this.notifications)},a.prototype.splice=function(t,i){i=this.notifications.splice(t,i)[0];return this.updateFn(i,e.Remove,this.notifications),i},a.prototype.indexOf=function(t){return this.notifications.indexOf(t)},a.prototype.onUpdate=function(t){this.updateFn=t},a);function a(){this.notifications=[]}(i=f=f||{}).Dismiss="dismiss";var r={types:[{type:"success",className:"notyf__toast--success",backgroundColor:"#3dc763",icon:{className:"notyf__icon--success",tagName:"i"}},{type:"error",className:"notyf__toast--error",backgroundColor:"#ed3d3d",icon:{className:"notyf__icon--error",tagName:"i"}}],duration:2e3,ripple:!0,position:{x:"right",y:"bottom"},dismissible:!(i.Click="click")},c=(p.prototype.on=function(t,i){var e;this.events=o(o({},this.events),((e={})[t]=i,e))},p.prototype.update=function(t,i){i===e.Add?this.addNotification(t):i===e.Remove&&this.removeNotification(t)},p.prototype.removeNotification=function(t){var i,e,n=this,t=this._popRenderedNotification(t);t&&((e=t.node).classList.add("notyf__toast--disappear"),e.addEventListener(this.animationEndEventName,i=function(t){t.target===e&&(e.removeEventListener(n.animationEndEventName,i),n.container.removeChild(e))}))},p.prototype.addNotification=function(t){var i=this._renderNotification(t);this.notifications.push({notification:t,node:i}),this._announce(t.options.message||"Notification")},p.prototype._renderNotification=function(t){var i=this._buildNotificationCard(t),e=t.options.className;return e&&(t=i.classList).add.apply(t,e.split(" ")),this.container.appendChild(i),i},p.prototype._popRenderedNotification=function(t){for(var i=-1,e=0;e<this.notifications.length&&i<0;e++)this.notifications[e].notification===t&&(i=e);if(-1!==i)return this.notifications.splice(i,1)[0]},p.prototype.getXPosition=function(t){return(null===(t=null==t?void 0:t.position)||void 0===t?void 0:t.x)||"right"},p.prototype.getYPosition=function(t){return(null===(t=null==t?void 0:t.position)||void 0===t?void 0:t.y)||"bottom"},p.prototype.adjustContainerAlignment=function(t){var i=this.X_POSITION_FLEX_MAP[this.getXPosition(t)],e=this.Y_POSITION_FLEX_MAP[this.getYPosition(t)],t=this.container.style;t.setProperty("justify-content",e),t.setProperty("align-items",i)},p.prototype._buildNotificationCard=function(n){var o=this,t=n.options,i=t.icon;this.adjustContainerAlignment(t);var e=this._createHTMLElement({tagName:"div",className:"notyf__toast"}),s=this._createHTMLElement({tagName:"div",className:"notyf__ripple"}),a=this._createHTMLElement({tagName:"div",className:"notyf__wrapper"}),r=this._createHTMLElement({tagName:"div",className:"notyf__message"});r.innerHTML=t.message||"";var c,p,d,l,u=t.background||t.backgroundColor;i&&(c=this._createHTMLElement({tagName:"div",className:"notyf__icon"}),("string"==typeof i||i instanceof String)&&(c.innerHTML=new String(i).valueOf()),"object"==typeof i&&(p=i.tagName,d=i.className,l=i.text,i=void 0===(i=i.color)?u:i,l=this._createHTMLElement({tagName:void 0===p?"i":p,className:d,text:l}),i&&(l.style.color=i),c.appendChild(l)),a.appendChild(c)),a.appendChild(r),e.appendChild(a),u&&(t.ripple?(s.style.background=u,e.appendChild(s)):e.style.background=u),t.dismissible&&(s=this._createHTMLElement({tagName:"div",className:"notyf__dismiss"}),u=this._createHTMLElement({tagName:"button",className:"notyf__dismiss-btn"}),s.appendChild(u),a.appendChild(s),e.classList.add("notyf__toast--dismissible"),u.addEventListener("click",function(t){var i,e;null!==(e=(i=o.events)[f.Dismiss])&&void 0!==e&&e.call(i,{target:n,event:t}),t.stopPropagation()})),e.addEventListener("click",function(t){var i,e;return null===(e=(i=o.events)[f.Click])||void 0===e?void 0:e.call(i,{target:n,event:t})});t="top"===this.getYPosition(t)?"upper":"lower";return e.classList.add("notyf__toast--"+t),e},p.prototype._createHTMLElement=function(t){var i=t.tagName,e=t.className,t=t.text,i=document.createElement(i);return e&&(i.className=e),i.textContent=t||null,i},p.prototype._createA11yContainer=function(){var t=this._createHTMLElement({tagName:"div",className:"notyf-announcer"});t.setAttribute("aria-atomic","true"),t.setAttribute("aria-live","polite"),t.style.border="0",t.style.clip="rect(0 0 0 0)",t.style.height="1px",t.style.margin="-1px",t.style.overflow="hidden",t.style.padding="0",t.style.position="absolute",t.style.width="1px",t.style.outline="0",docLine truncated
|
||||
+86
-63
@@ -36,12 +36,12 @@
|
||||
|
||||
<title>Torrent Parts | Inspect and edit what's in your Torrent file or Magnet link</title>
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/tippy.js@6/dist/tippy.css" rel="stylesheet" />
|
||||
<link href="https://cdn.jsdelivr.net/npm/tippy.js@6/animations/shift-away-subtle.css" rel="stylesheet" />
|
||||
<link href="https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.css" rel="stylesheet" />
|
||||
<link href="/src/style.css" rel="stylesheet" />
|
||||
<link href="/ext/alata-latin-400.woff2" rel="preload" as="style">
|
||||
<link href="/ext/alata-latin-400.woff" rel="preload" as="style">
|
||||
<script async src="/ext/fa.min.js"></script>
|
||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||
<script src="/ext/notyf.min.js"></script>
|
||||
|
||||
<script async defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "6f97f49b4c384ee197a2f319cebec274"}'></script>
|
||||
|
||||
@@ -51,37 +51,39 @@
|
||||
|
||||
<header>
|
||||
<h1 id="logo">Torrent<span id="originalSourceIcon"><span class="fad fa-magnet fa-fw" aria-hidden="true"></span></span>Parts</h1>
|
||||
<a class="github-button" href="https://github.com/leoherzog/TorrentParts" data-icon="octicon-star" data-show-count="true" aria-label="Star leoherzog/TorrentParts on GitHub">Star</a>
|
||||
<a class="github-button" href="https://github.com/leoherzog/TorrentParts" data-icon="octicon-star" data-show-count="true" aria-label="Star TorrentParts on GitHub">Star</a>
|
||||
</header>
|
||||
|
||||
<div id="startButtons">
|
||||
<form id="startForm">
|
||||
<div id="startButtons">
|
||||
|
||||
<input id="magnet" type="text" placeholder="Enter URL" aria-label="Enter URL and press enter" />
|
||||
<label for="magnet" class="sr-only">
|
||||
Enter URL and press enter
|
||||
</label>
|
||||
<input id="magnet" type="text" placeholder="Enter URL" aria-label="Enter URL and press enter" />
|
||||
<label for="magnet" class="sr-only">
|
||||
Enter URL and press enter
|
||||
</label>
|
||||
|
||||
<input id="torrent" type="file" accept=".torrent" aria-label="Select Torrent file" />
|
||||
<label for="torrent">
|
||||
<span class="fas fa-cloud-upload" aria-hidden="true"></span> Select Torrent File
|
||||
</label>
|
||||
<input id="torrent" type="file" accept=".torrent" aria-label="Select Torrent file" />
|
||||
<label for="torrent">
|
||||
<span class="fas fa-cloud-upload" aria-hidden="true"></span> Select Torrent File
|
||||
</label>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div id="examples">
|
||||
<section id="examples">
|
||||
<div>...or, try some examples!</div>
|
||||
<button id="example1" aria-label="Load Magnet Example"><span class="fal fa-magnet" aria-hidden="true"></span> Magnet URL</button>
|
||||
<button id="example2" aria-label="Load URL to Torrent File Example"><span class="fal fa-link" aria-hidden="true"></span> URL to Torrent File</button>
|
||||
<button id="example3" aria-label="Load Torrent File Example"><span class="fal fa-file-alt" aria-hidden="true"></span> Torrent File</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div id="properties" style="display:none">
|
||||
<main id="properties" style="display:none">
|
||||
|
||||
<button id="reset" aria-label="Reset the page">
|
||||
<span class="far fa-times"></span>
|
||||
</button>
|
||||
|
||||
<div id="share">
|
||||
<nav id="share">
|
||||
<a id="openURLWrapper" target="_blank">
|
||||
<button id="openURL" aria-label="Open this Magnet URL in your Torrent client">
|
||||
<span class="fas fa-arrow-up-right-from-square fa-2x"></span>
|
||||
@@ -102,37 +104,46 @@
|
||||
<span class="fas fa-file-download fa-2x"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="property">
|
||||
<fieldset class="property">
|
||||
<legend>
|
||||
<span class="info" data-tippy-content="This is the unique identifier that makes Torrents work. All of the files contained in this Torrent are run through an algorithm that generates a unique string, or “hash”."><span class="far fa-info-circle"></span></span>
|
||||
Unique Hash
|
||||
</legend>
|
||||
<div class="labels">
|
||||
<div>
|
||||
<span class="info" data-tippy-content="This is the unique identifier that makes Torrents work. All of the files contained in this Torrent are run through an algorithm that generates a unique string, or “hash”."><span class="far fa-info-circle"></span></span>
|
||||
<label for="hash">Unique Hash</label>
|
||||
<label for="hash" class="sr-only">Unique Hash</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<input id="hash" type="text" placeholder="" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="property">
|
||||
<fieldset class="property">
|
||||
<legend>
|
||||
<span class="info" data-tippy-content="An optional title specified by the creator"><span class="far fa-info-circle"></span></span>
|
||||
Torrent Name
|
||||
</legend>
|
||||
<div class="labels">
|
||||
<div>
|
||||
<span class="info" data-tippy-content="An optional title specified by the creator"><span class="far fa-info-circle"></span></span>
|
||||
<label for="name">Torrent Name</label>
|
||||
<label for="name" class="sr-only">Torrent Name</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<input id="name" type="text" placeholder="Unnamed" />
|
||||
<input id="name" type="text" placeholder="Unnamed" dir="auto" />
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="property">
|
||||
<fieldset class="property">
|
||||
<legend>
|
||||
<span class="info" data-tippy-content="Data embedded into a Torrent file that says what program created it and when. Not included in Magnet links."><span class="far fa-info-circle"></span></span>
|
||||
Created
|
||||
</legend>
|
||||
<div class="labels">
|
||||
<div>
|
||||
<span class="info" data-tippy-content="Data embedded into a Torrent file that says what program created it and when. Not included in Magnet links."><span class="far fa-info-circle"></span></span>
|
||||
<label for="created">Created</label>
|
||||
<label for="created" class="sr-only">Created</label>
|
||||
</div>
|
||||
<label for="createdBy" style="display:none">Created By</label>
|
||||
</div>
|
||||
@@ -141,28 +152,33 @@
|
||||
<br />
|
||||
<input id="createdBy" type="text" placeholder="Creation client unspecified" aria-label="Creation client" disabled />
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="property">
|
||||
<fieldset class="property">
|
||||
<legend>
|
||||
<span class="info" data-tippy-content="An optional description specified by the creator"><span class="far fa-info-circle"></span></span>
|
||||
Comment
|
||||
</legend>
|
||||
<div class="labels">
|
||||
<div>
|
||||
<span class="info" data-tippy-content="An optional description specified by the creator"><span class="far fa-info-circle"></span></span>
|
||||
<label for="comment">Comment</label>
|
||||
<label for="comment" class="sr-only">Comment</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<input id="comment" type="text" placeholder="Not included in the URL/File provided" />
|
||||
<input id="comment" type="text" placeholder="Not included in the URL/File provided" dir="auto" />
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="property">
|
||||
<fieldset class="property">
|
||||
<legend>
|
||||
<span class="info" data-tippy-content="Servers that keep track of other users who are actively downloading this Torrent, called “peers”. Your client will contact these servers first to find out who else is available to download the files from."><span class="far fa-info-circle"></span></span>
|
||||
Tracker URLs
|
||||
</legend>
|
||||
<div class="labels">
|
||||
<div>
|
||||
<span class="info" data-tippy-content="Servers that keep track of other users who are actively downloading this Torrent, called “peers”. Your client will contact these servers first to find out who else is available to download the files from."><span class="far fa-info-circle"></span></span>
|
||||
<label for="announce">Tracker URLs</label>
|
||||
<div class="label-actions">
|
||||
<a id="addTrackers">Add Known Working Trackers</a>
|
||||
<a id="removeTrackers">Remove All</a>
|
||||
</div>
|
||||
<a id="addTrackers">Add Known Working Trackers</a>
|
||||
<a id="removeTrackers">Remove All</a>
|
||||
</div>
|
||||
<div class="content">
|
||||
<button id="addTracker" data-type="announce">
|
||||
@@ -170,15 +186,17 @@
|
||||
</button>
|
||||
<div id="announce"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="property">
|
||||
<fieldset class="property">
|
||||
<legend>
|
||||
<span class="info" data-tippy-content="A list of webservers on the internet that also have a copy of the file(s) in this Torrent, to use in case no peers are available"><span class="far fa-info-circle"></span></span>
|
||||
Webseed URLs
|
||||
</legend>
|
||||
<div class="labels">
|
||||
<div>
|
||||
<span class="info" data-tippy-content="A list of webservers on the internet that also have a copy of the file(s) in this Torrent, to use in case no peers are available"><span class="far fa-info-circle"></span></span>
|
||||
<label for="urlList">Webseed URLs</label>
|
||||
<div class="label-actions">
|
||||
<a id="removeWebseeds">Remove All</a>
|
||||
</div>
|
||||
<a id="removeWebseeds">Remove All</a>
|
||||
</div>
|
||||
<div class="content">
|
||||
<button id="addWebseed" data-type="urlList">
|
||||
@@ -186,40 +204,45 @@
|
||||
</button>
|
||||
<div id="urlList"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="property">
|
||||
<fieldset class="property">
|
||||
<legend>
|
||||
<span class="info" data-tippy-content="Torrents take files and split them into equal size pieces to make them easy to share. Piece size is configurable when a Torrent file is made."><span class="far fa-info-circle"></span></span>
|
||||
Pieces
|
||||
</legend>
|
||||
<div class="labels">
|
||||
<div>
|
||||
<span class="info" data-tippy-content="Torrents take files and split them into equal size pieces to make them easy to share. Piece size is configurable when a Torrent file is made."><span class="far fa-info-circle"></span></span>
|
||||
<label for="pieces">Pieces</label>
|
||||
<label for="pieces" class="sr-only">Pieces</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<input id="pieces" type="text" placeholder="Not included in the URL/File provided" aria-label="Piece size and length" disabled required />
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="property">
|
||||
<fieldset class="property">
|
||||
<legend>
|
||||
<span class="info" data-tippy-content="The files listed in this Torrent file. Not included in Magnet links."><span class="far fa-info-circle"></span></span>
|
||||
Files
|
||||
</legend>
|
||||
<div class="labels">
|
||||
<div>
|
||||
<span class="info" data-tippy-content="The files listed in this Torrent file. Not included in Magnet links."><span class="far fa-info-circle"></span></span>
|
||||
<label for="files">Files</label>
|
||||
<div class="label-actions">
|
||||
<a id="getFiles">Fetch Files List from WebTorrent</a>
|
||||
</div>
|
||||
<a id="getFiles">Fetch Files List from WebTorrent</a>
|
||||
</div>
|
||||
<table id="files">
|
||||
<tbody id="filesBody"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<a href="https://github.com/leoherzog/TorrentParts/releases" target="_blank" rel="noopener">v1.2</a>
|
||||
<a href="https://github.com/leoherzog/TorrentParts/releases" target="_blank" rel="noopener">v2.0.2</a>
|
||||
</footer>
|
||||
|
||||
<script src="/bin/bundle.min.js"></script>
|
||||
<script type="module" src="/src/parse.js"></script>
|
||||
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
{
|
||||
"name": "torrentparts",
|
||||
"version": "1.2",
|
||||
"description": "📑 A website to inspect and edit Torrent files and Magnet URLs",
|
||||
"main": "bin/bundle.js",
|
||||
"dependencies": {
|
||||
"browserify": "^17.0.0",
|
||||
"bytes": "^3.1.2",
|
||||
"clipboard": "^2.0.10",
|
||||
"magnet-uri": "^6.2.0",
|
||||
"mime-types": "^2.1.35",
|
||||
"parse-torrent": "^9.1.4",
|
||||
"tippy.js": "^6.3.7",
|
||||
"webtorrent": "^1.8.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"buffer": "^6.0.3",
|
||||
"notyf": "^3.10.0",
|
||||
"terser": "^5.12.1",
|
||||
"watchify": "^4.0.0"
|
||||
},
|
||||
"scripts": {
|
||||
"watch": "watchify src/parse.js -o bin/bundle.js",
|
||||
"compile": "browserify src/parse.js -o bin/bundle.js",
|
||||
"minify": "terser bin/bundle.js -c -m -o bin/bundle.min.js",
|
||||
"build": "npm run compile && npm run minify",
|
||||
"update": "npm update -g && npm update && npm run build"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/leoherzog/TorrentParts.git"
|
||||
},
|
||||
"glitch": {
|
||||
"projectType": "generated_static"
|
||||
},
|
||||
"author": "Leo Herzog",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/leoherzog/TorrentParts/issues"
|
||||
},
|
||||
"homepage": "https://github.com/leoherzog/TorrentParts"
|
||||
}
|
||||
+124
-111
@@ -1,10 +1,11 @@
|
||||
require('buffer');
|
||||
const clipboard = require('clipboard');
|
||||
const parser = require('parse-torrent');
|
||||
const bytes = require('bytes');
|
||||
const mime = require('mime-types');
|
||||
const WebTorrent = require('webtorrent');
|
||||
const tippy = require('tippy.js').default;
|
||||
import { Buffer } from 'https://cdn.jsdelivr.net/npm/buffer@6/+esm';
|
||||
import clipboard from 'https://cdn.jsdelivr.net/npm/clipboard@2/+esm';
|
||||
import parseTorrent, { toMagnetURI, toTorrentFile, remote as parseTorrentRemote } from 'https://cdn.jsdelivr.net/npm/parse-torrent@11/+esm';
|
||||
import bytes from 'https://cdn.jsdelivr.net/npm/bytes@3/+esm';
|
||||
import mime from 'https://cdn.jsdelivr.net/npm/mime-types@2/+esm';
|
||||
import WebTorrent from 'https://cdn.jsdelivr.net/npm/webtorrent@2/dist/webtorrent.min.js';
|
||||
import tippy from 'https://cdn.jsdelivr.net/npm/tippy.js@6/+esm';
|
||||
import { Notyf } from 'https://cdn.jsdelivr.net/npm/notyf@3/+esm';
|
||||
|
||||
var examples = document.getElementById('examples');
|
||||
var example1 = document.getElementById('example1');
|
||||
@@ -13,7 +14,7 @@ var example3 = document.getElementById('example3');
|
||||
var properties = document.getElementById('properties');
|
||||
var originalSourceIcon = document.getElementById('originalSourceIcon');
|
||||
var source;
|
||||
var sourceTooltip = tippy(originalSourceIcon, {"theme": "torrent-parts", "animation": "shift-away-subtle"});
|
||||
var sourceTooltip = tippy(originalSourceIcon, { theme: 'torrent-parts', animation: 'shift-away-subtle' });
|
||||
var name = document.getElementById('name');
|
||||
var reset = document.getElementById('reset');
|
||||
var created = document.getElementById('created');
|
||||
@@ -36,45 +37,45 @@ var copyURL = document.getElementById('copyURL');
|
||||
var copyMagnet = document.getElementById('copyMagnet');
|
||||
var downloadTorrentWrapper = document.getElementById('downloadTorrentWrapper');
|
||||
var downloadTorrent = document.getElementById('downloadTorrent');
|
||||
var openURLTooltip = tippy(openURL, {"theme": "torrent-parts", "animation": "shift-away-subtle", "content": "Open this Magnet URL in your Torrent client"});
|
||||
var copyURLTooltip = tippy(copyURL, {"theme": "torrent-parts", "animation": "shift-away-subtle", "content": "Copy torrent.parts link to clipboard"});
|
||||
var copyMagnetTooltip = tippy(copyMagnet, {"theme": "torrent-parts", "animation": "shift-away-subtle", "content": "Copy Magnet link to clipboard"});
|
||||
var downloadTorrentTooltip = tippy(downloadTorrentWrapper, {"theme": "torrent-parts", "animation": "shift-away-subtle", "content": "Download Torrent file"});
|
||||
var openURLTooltip = tippy(openURL, { theme: 'torrent-parts', animation: 'shift-away-subtle', content: 'Open this Magnet URL in your Torrent client' });
|
||||
var copyURLTooltip = tippy(copyURL, { theme: 'torrent-parts', animation: 'shift-away-subtle', content: 'Copy torrent.parts link to clipboard' });
|
||||
var copyMagnetTooltip = tippy(copyMagnet, { theme: 'torrent-parts', animation: 'shift-away-subtle', content: 'Copy Magnet link to clipboard' });
|
||||
var downloadTorrentTooltip = tippy(downloadTorrentWrapper, { theme: 'torrent-parts', animation: 'shift-away-subtle', content: 'Download Torrent file' });
|
||||
var parsed;
|
||||
var client = new WebTorrent();
|
||||
var notyf = new Notyf({
|
||||
"duration": 8000,
|
||||
"dismissible": true,
|
||||
"ripple": false,
|
||||
"position": {
|
||||
"x": "right",
|
||||
"y": "top",
|
||||
duration: 8000,
|
||||
dismissible: true,
|
||||
ripple: false,
|
||||
position: {
|
||||
x: 'right',
|
||||
y: 'top',
|
||||
},
|
||||
"types": [
|
||||
types: [
|
||||
{
|
||||
"type": "success",
|
||||
"background": "#46835C",
|
||||
"icon": false
|
||||
type: 'success',
|
||||
background: '#46835C',
|
||||
icon: false,
|
||||
},
|
||||
{
|
||||
"type": "error",
|
||||
"background": "#A60A0A",
|
||||
"icon": false
|
||||
}
|
||||
]
|
||||
type: 'error',
|
||||
background: '#A60A0A',
|
||||
icon: false,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
function placeDownloadTooltips(e) {
|
||||
if (window.innerWidth > 1080) {
|
||||
openURLTooltip.setProps({"placement": "right"});
|
||||
copyURLTooltip.setProps({"placement": "right"});
|
||||
copyMagnetTooltip.setProps({"placement": "right"});
|
||||
downloadTorrentTooltip.setProps({"placement": "right"});
|
||||
openURLTooltip.setProps({ placement: 'right' });
|
||||
copyURLTooltip.setProps({ placement: 'right' });
|
||||
copyMagnetTooltip.setProps({ placement: 'right' });
|
||||
downloadTorrentTooltip.setProps({ placement: 'right' });
|
||||
} else {
|
||||
openURLTooltip.setProps({"placement": "top"});
|
||||
copyURLTooltip.setProps({"placement": "top"});
|
||||
copyMagnetTooltip.setProps({"placement": "top"});
|
||||
downloadTorrentTooltip.setProps({"placement": "top"});
|
||||
openURLTooltip.setProps({ placement: 'top' });
|
||||
copyURLTooltip.setProps({ placement: 'top' });
|
||||
copyMagnetTooltip.setProps({ placement: 'top' });
|
||||
downloadTorrentTooltip.setProps({ placement: 'top' });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,22 +85,26 @@ placeDownloadTooltips();
|
||||
document.addEventListener('DOMContentLoaded', start);
|
||||
|
||||
function start() {
|
||||
// form submission prevention
|
||||
document.getElementById('startForm').addEventListener('submit', function (event) {
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
// magnet input
|
||||
document.getElementById('magnet').addEventListener('keyup', function(event) {
|
||||
document.getElementById('magnet').addEventListener('keyup', function (event) {
|
||||
event.preventDefault();
|
||||
if (event.key === 'Enter') {
|
||||
source = 'magnet';
|
||||
originalSourceIcon.innerHTML = '<span class="fad fa-magnet fa-fw"></span>';
|
||||
sourceTooltip.setContent('Currently loaded information sourced from Magnet URL');
|
||||
parse(magnet.value);
|
||||
parse(this.value);
|
||||
}
|
||||
});
|
||||
|
||||
// torrent select button
|
||||
document.getElementById('torrent').addEventListener('change', function(event) {
|
||||
document.getElementById('torrent').addEventListener('change', function (event) {
|
||||
event.preventDefault();
|
||||
event.target.files[0].arrayBuffer().then(function(arrayBuffer) {
|
||||
event.target.files[0].arrayBuffer().then(function (arrayBuffer) {
|
||||
source = 'torrent-file';
|
||||
originalSourceIcon.innerHTML = '<span class="fad fa-file-alt fa-fw"></span>';
|
||||
sourceTooltip.setContent('Currently loaded information sourced from Torrent file');
|
||||
@@ -108,13 +113,17 @@ function start() {
|
||||
});
|
||||
|
||||
// body drag-and-drop torrent file support
|
||||
document.addEventListener('dragover', function(event) {
|
||||
document.addEventListener('dragover', function (event) {
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
document.addEventListener('drop', function(event) {
|
||||
document.addEventListener('drop', function (event) {
|
||||
event.preventDefault();
|
||||
event.dataTransfer.items[0].getAsFile().arrayBuffer().then(function(arrayBuffer) {
|
||||
if (event.dataTransfer.items.length === 0) return;
|
||||
if (event.dataTransfer.items[0].kind !== 'file') return;
|
||||
const file = event.dataTransfer.items[0].getAsFile();
|
||||
if (!file) return;
|
||||
file.arrayBuffer().then(function (arrayBuffer) {
|
||||
source = 'torrent-file';
|
||||
originalSourceIcon.innerHTML = '<span class="fad fa-file-alt fa-fw"></span>';
|
||||
sourceTooltip.setContent('Currently loaded information sourced from Torrent file');
|
||||
@@ -123,16 +132,16 @@ function start() {
|
||||
});
|
||||
|
||||
// example buttons
|
||||
example1.addEventListener('click', function(event) {
|
||||
example1.addEventListener('click', function (event) {
|
||||
event.preventDefault();
|
||||
notyf.success('Parsing Ubuntu 22.04 Magnet URL');
|
||||
notyf.success('Parsing Ubuntu 24.04 Magnet URL');
|
||||
source = 'magnet';
|
||||
originalSourceIcon.innerHTML = '<span class="fad fa-magnet fa-fw"></span>';
|
||||
sourceTooltip.setContent('Currently loaded information sourced from Magnet URL');
|
||||
parse('magnet:?xt=urn:btih:2c6b6858d61da9543d4231a71db4b1c9264b0685&dn=ubuntu-22.04-desktop-amd64.iso&tr=https%3A%2F%2Ftorrent.ubuntu.com%2Fannounce&tr=https%3A%2F%2Fipv6.torrent.ubuntu.com%2Fannounce');
|
||||
parse('magnet:?xt=urn:btih:2aa4f5a7e209e54b32803d43670971c4c8caaa05&dn=ubuntu-24.04-desktop-amd64.iso&tr=https%3A%2F%2Ftorrent.ubuntu.com%2Fannounce&tr=https%3A%2F%2Fipv6.torrent.ubuntu.com%2Fannounce');
|
||||
});
|
||||
|
||||
example2.addEventListener('click', async function(event) {
|
||||
example2.addEventListener('click', async function (event) {
|
||||
event.preventDefault();
|
||||
notyf.success('Fetching and Parsing “The WIRED CD” Torrent File...');
|
||||
source = 'remote-torrent-file';
|
||||
@@ -141,7 +150,7 @@ function start() {
|
||||
parseRemote('https://webtorrent.io/torrents/wired-cd.torrent');
|
||||
});
|
||||
|
||||
example3.addEventListener('click', async function(event) {
|
||||
example3.addEventListener('click', async function (event) {
|
||||
event.preventDefault();
|
||||
notyf.success('Parsing Jack Johnson Archive.org Torrent File');
|
||||
let response = await fetch('/ext/jj2008-06-14.mk4_archive.torrent');
|
||||
@@ -154,20 +163,20 @@ function start() {
|
||||
|
||||
// share buttons
|
||||
let copyurl = new clipboard('#copyURL');
|
||||
copyurl.on('success', function(e) {
|
||||
copyurl.on('success', function (e) {
|
||||
notyf.success('Copied site URL to clipboard!');
|
||||
console.info(e);
|
||||
});
|
||||
copyurl.on('failure', function(e) {
|
||||
copyurl.on('failure', function (e) {
|
||||
notyf.error('Problem copying to clipboard');
|
||||
console.warn(e);
|
||||
});
|
||||
|
||||
let copymagnet = new clipboard('#copyMagnet');
|
||||
copymagnet.on('success', function(e) {
|
||||
copymagnet.on('success', function (e) {
|
||||
notyf.success('Copied Magnet URL to clipboard!');
|
||||
});
|
||||
copymagnet.on('failure', function(e) {
|
||||
copymagnet.on('failure', function (e) {
|
||||
notyf.error('Problem copying to clipboard');
|
||||
console.warn(e);
|
||||
});
|
||||
@@ -189,7 +198,7 @@ function start() {
|
||||
removeWebseeds.addEventListener('click', () => removeAllRows('urlList'));
|
||||
getFiles.addEventListener('click', getFilesFromPeers);
|
||||
|
||||
tippy('[data-tippy-content]', {"theme": "torrent-parts", "animation": "shift-away-subtle"}); // all element-defined tooltips
|
||||
tippy('[data-tippy-content]', { theme: 'torrent-parts', animation: 'shift-away-subtle' }); // all element-defined tooltips
|
||||
sourceTooltip.disable();
|
||||
|
||||
if (window.location.hash) {
|
||||
@@ -198,50 +207,55 @@ function start() {
|
||||
sourceTooltip.setContent('Currently loaded information sourced from shared torrent.parts link');
|
||||
parse(window.location.hash.split('#')[1]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function parse(toLoad) {
|
||||
async function parse(toLoad) {
|
||||
resetProperties();
|
||||
try {
|
||||
console.info('Attempting parse');
|
||||
parsed = parser(toLoad);
|
||||
parsed = await parseTorrent(toLoad);
|
||||
display();
|
||||
if (parsed.xs) {
|
||||
console.info('Magnet includes xs, attempting remote parse');
|
||||
parseRemote(parsed.xs);
|
||||
}
|
||||
}
|
||||
catch(e) { // maybe they put a URL to a torrent file in the magnet box?
|
||||
} catch (e) {
|
||||
// maybe they put a URL to a torrent file in the magnet box?
|
||||
console.warn(e);
|
||||
if (source == 'magnet') {
|
||||
console.info('Attempting remote parse');
|
||||
parseRemote(toLoad);
|
||||
} else { // probably not. Just a bad file.
|
||||
} else {
|
||||
// probably not. Just a bad file.
|
||||
notyf.error('Problem parsing input. Is this a .torrent file?');
|
||||
console.error('Problem parsing input');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function parseRemote(toLoad) {
|
||||
parser.remote(toLoad, function(err, result) {
|
||||
if (err) {
|
||||
notyf.error('Problem remotely fetching that file or parsing result');
|
||||
console.warn(err);
|
||||
resetProperties();
|
||||
return;
|
||||
}
|
||||
async function parseRemote(toLoad) {
|
||||
try {
|
||||
parsed = await new Promise((resolve, reject) => {
|
||||
parseTorrentRemote(toLoad, (err, result) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(result);
|
||||
}
|
||||
});
|
||||
});
|
||||
source = 'remote-torrent-file';
|
||||
originalSourceIcon.innerHTML = '<span class="fad fa-file-alt fa-fw"></span>';
|
||||
sourceTooltip.setContent('Currently loaded information sourced from remotely fetched Torrent file');
|
||||
parsed = result;
|
||||
display();
|
||||
});
|
||||
} catch (err) {
|
||||
console.warn(err);
|
||||
notyf.error('Problem remotely fetching that file or parsing result');
|
||||
resetProperties();
|
||||
}
|
||||
}
|
||||
|
||||
function display() {
|
||||
|
||||
console.log(parsed);
|
||||
|
||||
hash.value = parsed.infoHash;
|
||||
@@ -254,7 +268,7 @@ function display() {
|
||||
}
|
||||
createdBy.value = parsed.createdBy ? ' by ' + parsed.createdBy : '';
|
||||
comment.value = parsed.comment ? parsed.comment : '';
|
||||
pieces.value = parsed.pieces ? parsed.pieces.length.toLocaleString() + ' ' + bytes.format(parsed.pieceLength, {"decimalPlaces": 1, "unitSeparator": " "}) + ' pieces (last piece ' + bytes.format(parsed.lastPieceLength, {"decimalPlaces": 1, "unitSeparator": " "}) + ')' : '';
|
||||
pieces.value = parsed.pieces ? parsed.pieces.length.toLocaleString() + ' ' + bytes.format(parsed.pieceLength, { decimalPlaces: 1, unitSeparator: ' ' }) + ' pieces (last piece ' + bytes.format(parsed.lastPieceLength, { decimalPlaces: 1, unitSeparator: ' ' }) + ')' : '';
|
||||
|
||||
announce.innerHTML = '';
|
||||
if (parsed.announce && parsed.announce.length) {
|
||||
@@ -270,16 +284,18 @@ function display() {
|
||||
tracker.setAttribute('aria-label', 'Tracker URL #' + i);
|
||||
tracker.addEventListener('input', propertyChange);
|
||||
row.appendChild(tracker);
|
||||
let remove = document.createElement('a');
|
||||
let remove = document.createElement('button');
|
||||
remove.type = 'button';
|
||||
remove.className = 'remove';
|
||||
remove.dataset.index = i;
|
||||
remove.innerHTML = '<span class="far fa-trash"></span>';
|
||||
remove.setAttribute('aria-label', 'Remove tracker #' + i);
|
||||
remove.addEventListener('click', removeRow);
|
||||
row.appendChild(remove);
|
||||
announce.appendChild(row);
|
||||
}
|
||||
// } else {
|
||||
// announce.innerHTML = '<em>No trackers specified in the URL/File provided</em>';
|
||||
// } else {
|
||||
// announce.innerHTML = '<em>No trackers specified in the URL/File provided</em>';
|
||||
}
|
||||
|
||||
urlList.innerHTML = '';
|
||||
@@ -296,16 +312,18 @@ function display() {
|
||||
webseed.setAttribute('aria-label', 'Webseed URL #' + i);
|
||||
webseed.addEventListener('input', propertyChange);
|
||||
row.appendChild(webseed);
|
||||
let remove = document.createElement('a');
|
||||
let remove = document.createElement('button');
|
||||
remove.type = 'button';
|
||||
remove.className = 'remove';
|
||||
remove.dataset.index = i;
|
||||
remove.innerHTML = '<span class="far fa-trash"></span>';
|
||||
remove.setAttribute('aria-label', 'Remove webseed #' + i);
|
||||
remove.addEventListener('click', removeRow);
|
||||
row.appendChild(remove);
|
||||
urlList.appendChild(row);
|
||||
}
|
||||
// } else {
|
||||
// urlList.innerHTML = '<em>No webseed URLs in the URL/File provided</em>';
|
||||
// } else {
|
||||
// urlList.innerHTML = '<em>No webseed URLs in the URL/File provided</em>';
|
||||
}
|
||||
|
||||
files.innerHTML = '';
|
||||
@@ -324,39 +342,38 @@ function display() {
|
||||
files.appendChild(createFileRow('', '...and another ' + (parsed.files.length - 100) + ' more files', ''));
|
||||
}
|
||||
files.appendChild(createFileRow('folder-tree', '', parsed.length));
|
||||
openURLWrapper.href = parser.toMagnetURI(parsed);
|
||||
openURLWrapper.href = toMagnetURI(parsed);
|
||||
downloadTorrentTooltip.setContent('Download Torrent file');
|
||||
downloadTorrent.addEventListener('click', saveTorrent);
|
||||
downloadTorrent.disabled = false;
|
||||
} else {
|
||||
if (client.torrents.length > 0) {
|
||||
getFiles.style.display = 'none';
|
||||
files.innerHTML = '<input type="text" placeholder="Attempting fetching of files from Webtorrent..." aria-label="Attempting fetching of files from Webtorrent..." disabled>';
|
||||
files.innerHTML = '<output>Attempting fetching of files from Webtorrent...</output>';
|
||||
} else {
|
||||
getFiles.style.display = 'block';
|
||||
files.innerHTML = '<input type="text" placeholder="Not included in the URL/File provided" aria-label="Files information not included in the URL/File provided" disabled>';
|
||||
files.innerHTML = '<output>Not included in the URL/File provided</output>';
|
||||
}
|
||||
downloadTorrentTooltip.setContent('Files metadata is required to generate a Torrent file. Try fetching files list from WebTorrent.');
|
||||
downloadTorrent.removeEventListener('click', saveTorrent);
|
||||
downloadTorrent.disabled = true;
|
||||
}
|
||||
|
||||
copyURL.setAttribute('data-clipboard-text', window.location.origin + '#' + parser.toMagnetURI(parsed));
|
||||
copyMagnet.setAttribute('data-clipboard-text', parser.toMagnetURI(parsed));
|
||||
copyURL.setAttribute('data-clipboard-text', window.location.origin + '#' + toMagnetURI(parsed));
|
||||
copyMagnet.setAttribute('data-clipboard-text', toMagnetURI(parsed));
|
||||
|
||||
examples.style.display = 'none';
|
||||
properties.style.display = 'flex';
|
||||
|
||||
window.location.hash = parser.toMagnetURI(parsed);
|
||||
window.location.hash = toMagnetURI(parsed);
|
||||
|
||||
if (parsed.name) {
|
||||
document.title = 'Torrent Parts | ' + parsed.name;
|
||||
} else {
|
||||
document.title = 'Torrent Parts | Inspect and edit what\'s in your Torrent file or Magnet link';
|
||||
document.title = "Torrent Parts | Inspect and edit what's in your Torrent file or Magnet link";
|
||||
}
|
||||
|
||||
sourceTooltip.enable();
|
||||
|
||||
}
|
||||
|
||||
function createFileRow(icon, name, size) {
|
||||
@@ -365,10 +382,10 @@ function createFileRow(icon, name, size) {
|
||||
if (icon) iconcell.innerHTML = '<span class="far fa-' + icon + '"></span>';
|
||||
row.appendChild(iconcell);
|
||||
let namecell = document.createElement('td');
|
||||
namecell.innerHTML = name;
|
||||
namecell.textContent = name;
|
||||
row.appendChild(namecell);
|
||||
let totalcell = document.createElement('td');
|
||||
totalcell.innerHTML = bytes.format(size, {"decimalPlaces": 1, "unitSeparator": " "});
|
||||
totalcell.innerHTML = bytes.format(size, { decimalPlaces: 1, unitSeparator: ' ' });
|
||||
row.appendChild(totalcell);
|
||||
return row;
|
||||
}
|
||||
@@ -383,10 +400,10 @@ function getFontAwesomeIconForMimetype(mimetype) {
|
||||
return 'file-word';
|
||||
case mimetype.includes('ms-excel'):
|
||||
case mimetype.includes('spreadsheet'):
|
||||
return 'file-powerpoint';
|
||||
return 'file-spreadsheet';
|
||||
case mimetype.includes('powerpoint'):
|
||||
case mimetype.includes('presentation'):
|
||||
return 'file-powerpoint';
|
||||
return 'file-powerpoint';
|
||||
case mimetype.includes('7z-'):
|
||||
case mimetype.includes('iso9660'):
|
||||
case mimetype.includes('zip'):
|
||||
@@ -419,7 +436,7 @@ function propertyChange(e) {
|
||||
} else {
|
||||
parsed[this.id] = this.value ? this.value : '';
|
||||
}
|
||||
window.location.hash = parser.toMagnetURI(parsed);
|
||||
window.location.hash = toMagnetURI(parsed);
|
||||
updateModified();
|
||||
}
|
||||
|
||||
@@ -435,13 +452,13 @@ function resetProperties() {
|
||||
hash.value = '';
|
||||
announce.innerHTML = '';
|
||||
urlList.innerHTML = '';
|
||||
client.torrents.forEach(torrent => torrent.destroy());
|
||||
client.torrents.forEach((torrent) => torrent.destroy());
|
||||
getFiles.style.display = 'block';
|
||||
files.innerHTML = '';
|
||||
window.location.hash = '';
|
||||
copyURL.setAttribute('data-clipboard-text', '');
|
||||
copyMagnet.setAttribute('data-clipboard-text', '');
|
||||
document.title = 'Torrent Parts | Inspect and edit what\'s in your Torrent file or Magnet link';
|
||||
document.title = "Torrent Parts | Inspect and edit what's in your Torrent file or Magnet link";
|
||||
sourceTooltip.disable();
|
||||
}
|
||||
|
||||
@@ -451,14 +468,13 @@ async function addCurrentTrackers() {
|
||||
try {
|
||||
let response = await fetch('https://newtrackon.com/api/stable'); // get trackers with 95% uptime
|
||||
let trackers = await response.text();
|
||||
parsed.announce = parsed.announce.concat(trackers.split('\n\n'));
|
||||
parsed.announce = (parsed.announce || []).concat(trackers.split('\n\n'));
|
||||
parsed.announce.push('http://bt1.archive.org:6969/announce');
|
||||
parsed.announce.push('http://bt2.archive.org:6969/announce');
|
||||
parsed.announce = parsed.announce.filter((v,i) => v && parsed.announce.indexOf(v) === i); // remove duplicates and empties
|
||||
parsed.announce = parsed.announce.filter((v, i) => v && parsed.announce.indexOf(v) === i); // remove duplicates and empties
|
||||
notyf.success('Added known working trackers from newTrackon');
|
||||
updateModified();
|
||||
}
|
||||
catch(e) {
|
||||
} catch (e) {
|
||||
notyf.error('Problem fetching trackers from newTrackon');
|
||||
console.warn(e);
|
||||
}
|
||||
@@ -498,12 +514,14 @@ function updateModified() {
|
||||
function getFilesFromPeers() {
|
||||
console.info('Attempting fetching files from Webtorrent...');
|
||||
getFiles.style.display = 'none';
|
||||
parsed.announce.push('wss://tracker.webtorrent.io');
|
||||
parsed.announce = parsed.announce || [];
|
||||
parsed.announce.push('wss://tracker.webtorrent.dev');
|
||||
parsed.announce.push('wss://tracker.openwebtorrent.com');
|
||||
parsed.announce.push('wss://tracker.btorrent.xyz');
|
||||
parsed.announce.push('wss://tracker.fastcast.nz');
|
||||
parsed.announce = parsed.announce.filter((v,i) => v && parsed.announce.indexOf(v) === i); // remove duplicates and empties
|
||||
client.add(parser.toMagnetURI(parsed), (torrent) => {
|
||||
parsed.announce.push('wss://tracker.files.fm:7073/announce');
|
||||
parsed.announce = parsed.announce.filter((v, i) => v && parsed.announce.indexOf(v) === i); // remove duplicates and empties
|
||||
client.add(toMagnetURI(parsed), (torrent) => {
|
||||
parsed.info = Object.assign({}, torrent.info); // clone object
|
||||
parsed.files = torrent.files;
|
||||
parsed.infoBuffer = torrent.infoBuffer;
|
||||
@@ -517,18 +535,13 @@ function getFilesFromPeers() {
|
||||
display();
|
||||
}
|
||||
|
||||
// https://stackoverflow.com/a/36899900/2700296
|
||||
function saveTorrent() {
|
||||
let data = parser.toTorrentFile(parsed);
|
||||
if (data !== null && navigator.msSaveBlob)
|
||||
return navigator.msSaveBlob(new Blob([data], { "type": "application/x-bittorrent" }), parsed.name + '.torrent');
|
||||
let a = document.createElement('a');
|
||||
a.style.display = 'none';
|
||||
let url = window.URL.createObjectURL(new Blob([data], { "type": "application/x-bittorrent" }));
|
||||
a.setAttribute('href', url);
|
||||
a.setAttribute('download', parsed.name + '.torrent');
|
||||
document.body.appendChild(a);
|
||||
const data = toTorrentFile(parsed);
|
||||
const blob = new Blob([data], { type: 'application/x-bittorrent' });
|
||||
const url = URL.createObjectURL(blob);
|
||||
const a = document.createElement('a');
|
||||
a.href = url;
|
||||
a.download = parsed.name + '.torrent';
|
||||
a.click();
|
||||
window.URL.revokeObjectURL(url);
|
||||
a.remove();
|
||||
}
|
||||
URL.revokeObjectURL(url);
|
||||
}
|
||||
+88
-18
@@ -1,12 +1,6 @@
|
||||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
|
||||
html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}
|
||||
|
||||
/*! Tippy v6.3.7 | MIT License | github.com/atomiks/tippyjs */
|
||||
.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}
|
||||
|
||||
/* Tippy shift-away-subtle theme */
|
||||
.tippy-box[data-animation=shift-away-subtle][data-state=hidden]{opacity:0}.tippy-box[data-animation=shift-away-subtle][data-state=hidden][data-placement^=top]{transform:translateY(5px)}.tippy-box[data-animation=shift-away-subtle][data-state=hidden][data-placement^=bottom]{transform:translateY(-5px)}.tippy-box[data-animation=shift-away-subtle][data-state=hidden][data-placement^=left]{transform:translateX(5px)}.tippy-box[data-animation=shift-away-subtle][data-state=hidden][data-placement^=right]{transform:translateX(-5px)}
|
||||
|
||||
/* Custom Tippy Theme */
|
||||
.tippy-box[data-theme~="torrent-parts"] {
|
||||
background-color: var(--accent);
|
||||
@@ -32,9 +26,6 @@ html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:b
|
||||
fill: var(--accent);
|
||||
}
|
||||
|
||||
/*! Notyf v3.10.0 | MIT License | github.com/caroso1222/notyf */
|
||||
@-webkit-keyframes notyf-fadeinup{0%{opacity:0;transform:translateY(25%)}to{opacity:1;transform:translateY(0)}}@keyframes notyf-fadeinup{0%{opacity:0;transform:translateY(25%)}to{opacity:1;transform:translateY(0)}}@-webkit-keyframes notyf-fadeinleft{0%{opacity:0;transform:translateX(25%)}to{opacity:1;transform:translateX(0)}}@keyframes notyf-fadeinleft{0%{opacity:0;transform:translateX(25%)}to{opacity:1;transform:translateX(0)}}@-webkit-keyframes notyf-fadeoutright{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(25%)}}@keyframes notyf-fadeoutright{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(25%)}}@-webkit-keyframes notyf-fadeoutdown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(25%)}}@keyframes notyf-fadeoutdown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(25%)}}@-webkit-keyframes ripple{0%{transform:scale(0) translateY(-45%) translateX(13%)}to{transform:scale(1) translateY(-45%) translateX(13%)}}@keyframes ripple{0%{transform:scale(0) translateY(-45%) translateX(13%)}to{transform:scale(1) translateY(-45%) translateX(13%)}}.notyf{position:fixed;top:0;left:0;height:100%;width:100%;color:#fff;z-index:9999;display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-end;pointer-events:none;box-sizing:border-box;padding:20px}.notyf__icon--error,.notyf__icon--success{height:21px;width:21px;background:#fff;border-radius:50%;display:block;margin:0 auto;position:relative}.notyf__icon--error:after,.notyf__icon--error:before{content:"";background:currentColor;display:block;position:absolute;width:3px;border-radius:3px;left:9px;height:12px;top:5px}.notyf__icon--error:after{transform:rotate(-45deg)}.notyf__icon--error:before{transform:rotate(45deg)}.notyf__icon--success:after,.notyf__icon--success:before{content:"";background:currentColor;display:block;position:absolute;width:3px;border-radius:3px}.notyf__icon--success:after{height:6px;transform:rotate(-45deg);top:9px;left:6px}.notyf__icon--success:before{height:11px;transform:rotate(45deg);top:5px;left:10px}.notyf__toast{display:block;overflow:hidden;pointer-events:auto;-webkit-animation:notyf-fadeinup .3s ease-in forwards;animation:notyf-fadeinup .3s ease-in forwards;box-shadow:0 3px 7px 0 rgba(0,0,0,.25);position:relative;padding:0 15px;border-radius:2px;max-width:300px;transform:translateY(25%);box-sizing:border-box;flex-shrink:0}.notyf__toast--disappear{transform:translateY(0);-webkit-animation:notyf-fadeoutdown .3s forwards;animation:notyf-fadeoutdown .3s forwards;-webkit-animation-delay:.25s;animation-delay:.25s}.notyf__toast--disappear .notyf__icon,.notyf__toast--disappear .notyf__message{-webkit-animation:notyf-fadeoutdown .3s forwards;animation:notyf-fadeoutdown .3s forwards;opacity:1;transform:translateY(0)}.notyf__toast--disappear .notyf__dismiss{-webkit-animation:notyf-fadeoutright .3s forwards;animation:notyf-fadeoutright .3s forwards;opacity:1;transform:translateX(0)}.notyf__toast--disappear .notyf__message{-webkit-animation-delay:.05s;animation-delay:.05s}.notyf__toast--upper{margin-bottom:20px}.notyf__toast--lower{margin-top:20px}.notyf__toast--dismissible .notyf__wrapper{padding-right:30px}.notyf__ripple{height:400px;width:400px;position:absolute;transform-origin:bottom right;right:0;top:0;border-radius:50%;transform:scale(0) translateY(-51%) translateX(13%);z-index:5;-webkit-animation:ripple .4s ease-out forwards;animation:ripple .4s ease-out forwards}.notyf__wrapper{display:flex;align-items:center;padding-top:17px;padding-bottom:17px;padding-right:15px;border-radius:3px;position:relative;z-index:10}.notyf__icon{width:22px;text-align:center;font-size:1.3em;opacity:0;-webkit-animation:notyf-fadeinup .3s forwards;animation:notyf-fadeinup .3s forwards;-webkit-animation-delay:.3s;animation-delay:.3s;margin-right:13px}.notyf__dismiss{position:absolute;top:0;right:0;height:100%;width:26px;margin-right:-15px;-webkit-animation:notyf-fadeinleft .3s forwards;animation:notyf-fadeinleft .3s forwards;-webkit-animation-delay:.35s;animation-delay:.35s;opacity:0}.notyf__dismiss-btn{background-color:rgba(0,0,0,.25);border:none;cursor:pointer;transition:opacity .2s ease,background-color .2s ease;outline:none;opacity:.35;height:100%;width:100%}.notyf__dismiss-btn:after,.notyf__dismiss-btn:before{content:"";background:#fff;height:12px;width:2px;border-radius:3px;position:absolute;left:calc(50% - 1px);top:calc(50% - 5px)}.notyf__dismiss-btn:after{transform:rotate(-45deg)}.notyf__dismiss-btn:before{transform:rotate(45deg)}.notyf__dismiss-btn:hover{opacity:.7;background-color:rgba(0,0,0,.15)}.notyf__dismiss-btn:active{opacity:.8}.notyf__message{vertical-align:middle;position:relative;opacity:0;-webkit-animation:notyf-fadeinup .3s forwards;animation:notyf-fadeinup .3s forwards;-webkit-animation-delay:.25s;animation-delay:.25s;line-height:1.5em}@media only screen and (max-width:480px){.notyf{padding:0}.notyf__ripple{height:600px;width:600px;-webkit-animation-Line truncated
|
||||
|
||||
/* Fix Notyf dismiss button */
|
||||
.notyf__dismiss-btn{border-radius: 0;}
|
||||
|
||||
@@ -44,12 +35,11 @@ html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:b
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: local(''),
|
||||
url('/ext/alata-latin-400.woff2') format('woff2'),
|
||||
url('/ext/alata-latin-400.woff') format('woff');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
src: url('/ext/alata-v9-latin-regular.woff2') format('woff2'),
|
||||
url('/ext/alata-v9-latin-regular.ttf') format('truetype');
|
||||
}
|
||||
|
||||
|
||||
/* begin custom stuff */
|
||||
|
||||
.sr-only {
|
||||
@@ -78,7 +68,7 @@ html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:b
|
||||
body {
|
||||
color: var(--white);
|
||||
background: var(--gradient);
|
||||
font-family: 'Alata', sans-serif;
|
||||
font-family: 'Alata', Seravek, 'Gill Sans Nova', Ubuntu, Calibri, 'DejaVu Sans', source-sans-pro, sans-serif;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
overflow-x: hidden;
|
||||
@@ -265,12 +255,29 @@ label[for="torrent"] {
|
||||
display: flex;
|
||||
align-content: flex-start;
|
||||
justify-content: space-between;
|
||||
border: none;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.property:first-child {
|
||||
width: 240px;
|
||||
}
|
||||
|
||||
.property > legend {
|
||||
position: absolute;
|
||||
top: 8px;
|
||||
left: 0;
|
||||
width: 280px;
|
||||
text-align: right;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-transform: uppercase;
|
||||
font-size: inherit;
|
||||
font-weight: inherit;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.labels {
|
||||
width: 280px;
|
||||
text-align: right;
|
||||
@@ -279,7 +286,14 @@ label[for="torrent"] {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.labels > a {
|
||||
.label-actions {
|
||||
margin-top: 26px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.labels > a, .label-actions > a {
|
||||
font-size: 80%;
|
||||
margin-top: 6px;
|
||||
}
|
||||
@@ -316,10 +330,35 @@ input {
|
||||
|
||||
#announce > *, #urlList > * {
|
||||
margin: 0 0 16px 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.remove {
|
||||
margin-left: 6px;
|
||||
background: transparent;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
width: auto;
|
||||
height: auto;
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
display: inline;
|
||||
color: var(--grey);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
output {
|
||||
color: rgb(120, 126, 133) !important;
|
||||
-webkit-text-fill-color: rgb(120, 126, 133) !important;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
padding: 8px 0;
|
||||
font-style: normal;
|
||||
display: block;
|
||||
width: 440px;
|
||||
height: 40px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (max-width: 1080px) {
|
||||
@@ -367,8 +406,12 @@ input {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.property > label {
|
||||
margin: 12px 0;
|
||||
.property > legend {
|
||||
position: static;
|
||||
left: auto;
|
||||
width: auto;
|
||||
text-align: center;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
input, button {
|
||||
@@ -381,6 +424,13 @@ input {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.label-actions {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.labels, .content, #files {
|
||||
width: auto;
|
||||
display: flex;
|
||||
@@ -388,8 +438,28 @@ input {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
output {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#announce, #urlList {
|
||||
text-align: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#announce > *, #urlList > * {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 80vw;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
#announce > * > input, #urlList > * > input {
|
||||
width: calc(80vw - 40px);
|
||||
flex: none;
|
||||
}
|
||||
|
||||
#announce > * > *, #urlList > * > *, #addTracker, #addWebseed, #examples > button {
|
||||
|
||||
@@ -1,33 +1,38 @@
|
||||
const assets = [
|
||||
const CACHE_NAME = 'torrent-parts-v2';
|
||||
const ASSETS = [
|
||||
'/',
|
||||
'/index.html',
|
||||
'/bin/bundle.min.js',
|
||||
'/src/parse.js',
|
||||
'/src/style.css',
|
||||
'/ext/alata-latin-400.woff2',
|
||||
'/ext/alata-latin-400.woff',
|
||||
'/ext/alata-v9-latin-regular.woff2',
|
||||
'/ext/fa.min.js',
|
||||
'/ext/notyf.min.js',
|
||||
'/ext/jj2008-06-14.mk4_archive.torrent'
|
||||
'/ext/jj2008-06-14.mk4_archive.torrent',
|
||||
'/favicon.ico',
|
||||
'/manifest.webmanifest',
|
||||
];
|
||||
|
||||
self.addEventListener('install', function(event) {
|
||||
event.waitUntil(
|
||||
caches.open('assets')
|
||||
.then(function(cache) {
|
||||
return cache.addAll(assets);
|
||||
})
|
||||
self.addEventListener('install', (e) => {
|
||||
self.skipWaiting();
|
||||
e.waitUntil(caches.open(CACHE_NAME).then((cache) => cache.addAll(ASSETS)));
|
||||
});
|
||||
|
||||
self.addEventListener('activate', (e) => {
|
||||
e.waitUntil(
|
||||
Promise.all([
|
||||
self.clients.claim(),
|
||||
caches.keys().then((keys) => Promise.all(keys.filter((k) => k !== CACHE_NAME).map((k) => caches.delete(k)))),
|
||||
])
|
||||
);
|
||||
});
|
||||
|
||||
self.addEventListener('fetch', function(event) {
|
||||
event.respondWith(
|
||||
caches.match(event.request)
|
||||
.then(function(response) {
|
||||
if (response) {
|
||||
return response;
|
||||
}
|
||||
return fetch(event.request);
|
||||
}
|
||||
)
|
||||
);
|
||||
});
|
||||
self.addEventListener('fetch', (e) => {
|
||||
if (e.request.method !== 'GET') return;
|
||||
|
||||
const url = new URL(e.request.url);
|
||||
|
||||
// Only cache same-origin requests
|
||||
if (url.origin !== self.location.origin) return;
|
||||
|
||||
// Cache-first for local assets
|
||||
e.respondWith(caches.match(e.request).then((cached) => cached || fetch(e.request)));
|
||||
});
|
||||
Reference in new issue
Block a user