1 Star 0 Fork 5

mingzhiwei/webtorrent

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
sw.min.js 2.23 KB
一键复制 编辑 原始数据 按行查看 历史
semantic-release-bot 提交于 2022-06-23 19:07 . chore(release): 1.8.24
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module){async function serve({request}){const{url,method,headers,destination}=request,clientlist=await clients.matchAll({type:"window",includeUncontrolled:!0}),[data,port]=await new Promise(resolve=>{for(const client of clientlist){const messageChannel=new MessageChannel,{port1,port2}=messageChannel;port1.onmessage=({data})=>{resolve([data,port1])},client.postMessage({url,method,headers:Object.fromEntries(headers.entries()),scope:self.registration.scope,destination,type:"webtorrent"},[port2])}});if("STREAM"!==data.body&&"DOWNLOAD"!==data.body)return new Response(data.body,data);let timeOut=null;return new Response(new ReadableStream({pull(controller){return new Promise(resolve=>{port.onmessage=({data})=>{data?controller.enqueue(data):(clearTimeout(timeOut),controller.close(),port.onmessage=null),resolve()},cancellable||(clearTimeout(timeOut),"STREAM"===data.body&&(timeOut=setTimeout(()=>{controller.close(),port.postMessage(!1),port.onmessage=null,resolve()},portTimeoutDuration))),port.postMessage(!0)})},cancel(){port.postMessage(!1),clearTimeout(timeOut),port.onmessage=null}}),data)}const portTimeoutDuration=5e3;let cancellable=!1;module.exports=event=>{const{url}=event.request;return url.includes(self.registration.scope+"webtorrent/")?url.includes(self.registration.scope+"webtorrent/keepalive/")?new Response:url.includes(self.registration.scope+"webtorrent/cancel/")?new Response(new ReadableStream({cancel(){cancellable=!0}})):serve(event):null}},{}],2:[function(require){const fileResponse=require("./worker-server.js");self.addEventListener("install",()=>{self.skipWaiting()}),self.addEventListener("fetch",event=>{const res=fileResponse(event);res&&event.respondWith(res)}),self.addEventListener("activate",()=>{self.clients.claim()})},{"./worker-server.js":1}]},{},[2]);
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/mingzhiwei/webtorrent.git
git@gitee.com:mingzhiwei/webtorrent.git
mingzhiwei
webtorrent
webtorrent
master

搜索帮助