From a8af665f3afdc01c82ed26a535eed574e7dd0026 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Sat, 3 Dec 2022 18:37:01 +0100 Subject: [PATCH] fix: update webtorrent, fix loading error, fixes infinite loops --- package.json | 4 +- pnpm-lock.yaml | 92 +++++++++++++++------------ src/index.js | 9 ++- src/renderer/public/lib/webtorrent.js | 7 +- 4 files changed, 64 insertions(+), 48 deletions(-) diff --git a/package.json b/package.json index e1b2bd7..dfa8469 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Miru", - "version": "3.3.2", + "version": "3.3.3", "author": "ThaUnknown_ ", "description": "Stream anime torrents, real-time with no waiting for downloads.", "main": "src/index.js", @@ -119,6 +119,6 @@ "range-parser": "^1.2.1", "svelte-keybinds": "1.0.5", "svelte-miniplayer": "1.0.3", - "webtorrent": "^1.8.26" + "webtorrent": "^1.9.5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 357e0cf..19ae019 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,7 +25,7 @@ specifiers: svelte-miniplayer: 1.0.3 vite: 3.2.4 vite-plugin-commonjs: ^0.5.2 - webtorrent: ^1.8.26 + webtorrent: ^1.9.5 dependencies: anitomyscript: github.com/ThaUnknown/anitomyscript/42290c4b3f256893be08a4e89051f448ff5e9d00 @@ -44,7 +44,7 @@ dependencies: range-parser: 1.2.1 svelte-keybinds: 1.0.5 svelte-miniplayer: 1.0.3 - webtorrent: 1.8.26 + webtorrent: 1.9.5 devDependencies: '@sveltejs/vite-plugin-svelte': 1.0.1_svelte@3.49.0+vite@3.2.4 @@ -448,6 +448,7 @@ packages: /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true /base64-arraybuffer/1.0.2: resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} @@ -481,8 +482,8 @@ packages: engines: {node: '>=8'} dev: false - /bittorrent-dht/10.0.4: - resolution: {integrity: sha512-Yx5cZXU4R+mUbxR2PbKdvOVTizOrePPF8NT3WGCXX5qzJVt8gF8gq9GMBWcmNjHUBYHVigDaRf030hxQ2dJWUg==} + /bittorrent-dht/10.0.6: + resolution: {integrity: sha512-Odmfmo36/vr0E4PWicans0fesjCfRib2daGaYfB8WHljPTO/U2820EFOA9HBhzdzekGBhBHlSPVi6Jf9vu7/yQ==} engines: {node: '>=10'} dependencies: bencode: 2.0.3 @@ -541,7 +542,7 @@ packages: debug: 4.3.4 ip: 1.1.8 lru: 3.1.0 - minimist: 1.2.6 + minimist: 1.2.7 once: 1.4.0 queue-microtask: 1.2.3 random-iterate: 1.0.1 @@ -566,6 +567,10 @@ packages: resolution: {integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==} dev: false + /block-iterator/1.1.1: + resolution: {integrity: sha512-DrjdVWZemVO4iBf4tiOXjUrY5cNesjzy0t7sIiu2rdl8cOCHRxAgKjSJFc3vBZYYMMmshUAxajl8QQh/uxXTKQ==} + dev: false + /block-stream2/2.1.0: resolution: {integrity: sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==} dependencies: @@ -614,6 +619,7 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + dev: true /brace-expansion/2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -887,6 +893,7 @@ packages: /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true /concurrently/7.3.0: resolution: {integrity: sha512-IiDwm+8DOcFEInca494A8V402tNTQlJaYq78RF2rijOrKEk/AOHTxhN4U1cp7GYKYX5Q6Ymh1dLTBlzIMN0ikA==} @@ -946,22 +953,20 @@ packages: dev: true optional: true - /create-torrent/5.0.4: - resolution: {integrity: sha512-59brGxFHoWWXzpFKAwD/vB/BYTALDuf+1Wmajxq2ZYnllJtg8SwfcmP7PHCKas5mDTZLD4om1cneC1YMZFuPUA==} + /create-torrent/5.0.9: + resolution: {integrity: sha512-WQ/bMe+aCBSa5EonIkgw7CTM/1JnJDQuLJhA78omSWvuEbXDwaUy0rG3a+IYt+EiO+rdTLxdsBwrsn/wfWOMQA==} engines: {node: '>=12'} hasBin: true dependencies: bencode: 2.0.3 - block-stream2: 2.1.0 - fast-blob-stream: 1.1.1 + block-iterator: 1.1.1 + fast-readable-async-iterator: 1.1.1 is-file: 1.0.0 + join-async-iterator: 1.1.1 junk: 3.1.0 - minimist: 1.2.6 - multistream: 4.1.0 - once: 1.4.0 + minimist: 1.2.7 piece-length: 2.0.1 queue-microtask: 1.2.3 - readable-stream: 3.6.0 run-parallel: 1.2.0 simple-sha1: 3.1.0 dev: false @@ -1528,7 +1533,7 @@ packages: resolution: {integrity: sha512-wdRazMMeM2pl8hq1lFG8fzix8p1VLAJunTTE2RADiFBwbUfZwybUm6IwPrmMS7qTthiayr166NoXeqWe3hfR5w==} dependencies: fast-readable-async-iterator: 1.1.1 - streamx: 2.12.4 + streamx: 2.12.5 dev: false /fast-deep-equal/3.1.3: @@ -1603,13 +1608,12 @@ packages: resolution: {integrity: sha512-Ji7fEnMdZDGbS5oXElpRJsn9jPvBR8h/037D3bzreNmS8809cISq/2D9//JbA/TaZmkkN8cmecXwmQHmM+NHhg==} dev: false - /fs-chunk-store/2.0.5: - resolution: {integrity: sha512-z3c2BmyaHdQTtIVXJDQOvwZVWN2gNU//0IYKK2LuPr+cZyGoIrgDwI4iDASaTUyQbOBtyg/k6GuDZepB6jQIPw==} + /fs-chunk-store/3.0.1: + resolution: {integrity: sha512-YrOFuXtUJQBkOZ2QBXBoIrjLJ/TNTpEaGnxV+TmL1qaW5J4ah6lxMh/X9pb3To+hbaoT/pRuBXLkkqoavQoQFw==} dependencies: queue-microtask: 1.2.3 random-access-file: 2.2.1 randombytes: 2.1.0 - rimraf: 3.0.2 run-parallel: 1.2.0 thunky: 1.1.0 dev: false @@ -1650,6 +1654,7 @@ packages: /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} @@ -1716,6 +1721,7 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true /global-agent/3.0.0: resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} @@ -1892,6 +1898,7 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: true /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -2038,6 +2045,10 @@ packages: rvfc-polyfill: 1.0.4 dev: false + /join-async-iterator/1.1.1: + resolution: {integrity: sha512-ATse+nuNeKZ9K1y27LKdvPe/GCe9R/u9dw9vI248e+vILeRK3IcJP4JUPAlSmKRCDK0cKhEwfmiw4Skqx7UnGQ==} + dev: false + /js-levenshtein/1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} engines: {node: '>=0.10.0'} @@ -2293,6 +2304,7 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 + dev: true /minimatch/5.1.0: resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} @@ -2303,6 +2315,11 @@ packages: /minimist/1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + dev: true + + /minimist/1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + dev: false /minipass/3.3.4: resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} @@ -2351,13 +2368,6 @@ packages: /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /multistream/4.1.0: - resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} - dependencies: - once: 1.4.0 - readable-stream: 3.6.0 - dev: false - /nanoid/3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -2466,6 +2476,7 @@ packages: /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + dev: true /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -2699,6 +2710,7 @@ packages: hasBin: true dependencies: glob: 7.2.3 + dev: true /roarr/2.15.4: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} @@ -2918,7 +2930,7 @@ packages: resolution: {integrity: sha512-Ax+TbUOho84bWUc3AKqWtkIvAIVws7d6QI4oJkgH4yQ5Yil+lR3vjd/7qd51dHKGzS5bFxg0++QwyNRN7s6rZA==} dependencies: limiter: 1.1.5 - streamx: 2.12.4 + streamx: 2.12.5 dev: false /speedometer/1.1.0: @@ -2958,8 +2970,8 @@ packages: once: 1.4.0 dev: false - /streamx/2.12.4: - resolution: {integrity: sha512-K3xdIp8YSkvbdI0PrCcP0JkniN8cPCyeKlcZgRFSl1o1xKINCYM93FryvTSOY57x73pz5/AjO5B8b9BYf21wWw==} + /streamx/2.12.5: + resolution: {integrity: sha512-Y+nkFw57Z5JHT3zLlqFm3GccOy2FeYdUrrqita6Dd8kr/8enPn9GKa8IYf3/DmEKfZl/E2sWoSKUnd4qhonrgg==} dependencies: fast-fifo: 1.1.0 queue-tick: 1.0.0 @@ -3132,10 +3144,10 @@ packages: is-number: 7.0.0 dev: true - /torrent-discovery/9.4.13: - resolution: {integrity: sha512-HZD8nAxIejcGnzUyXRMhBnK0rYQCQ85vaaCzmzl2r3/vmj0M/b6JuO6yNhe1vyLOU3ZngzDYaHxCJjmAIa4wwg==} + /torrent-discovery/9.4.14: + resolution: {integrity: sha512-IyzlrHctvqqKtN8Y2BMxNL3d2FLazs6pC2yzKOHJlXWYUFkLpZhZSaSZcAkfmZXgdjwq59N2umr1przsRDMzkA==} dependencies: - bittorrent-dht: 10.0.4 + bittorrent-dht: 10.0.6 bittorrent-lsd: 1.1.1 bittorrent-tracker: 9.19.0 debug: 4.3.4 @@ -3376,30 +3388,31 @@ packages: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: false - /webtorrent/1.8.26: - resolution: {integrity: sha512-1bbCIDtbk4OA7xXmT87t6jDhnng6RNC9d7HNpRyvxF0GQTrIz1fB3oDnNcbOim9Upjy1GDqxAOe0Mejmc86TUg==} - engines: {node: '>=12'} + /webtorrent/1.9.5: + resolution: {integrity: sha512-H73oGe73g3XHTmhAdCkqytxBnZ69gqSA/ba/TObDyfhy6jrE2fPNC/BFKccJkXXsB2oiTDRyu1g7mpM0HoY67A==} + engines: {node: '>=14'} dependencies: '@webtorrent/http-node': 1.3.0 addr-to-ip-port: 1.5.4 bitfield: 4.1.0 - bittorrent-dht: 10.0.4 + bittorrent-dht: 10.0.6 bittorrent-protocol: 3.5.5 cache-chunk-store: 3.2.2 chrome-net: 3.3.4 chunk-store-stream: 4.3.0 cpus: 1.0.3 - create-torrent: 5.0.4 + create-torrent: 5.0.9 debug: 4.3.4 end-of-stream: 1.4.4 escape-html: 1.0.3 - fs-chunk-store: 2.0.5 + fast-blob-stream: 1.1.1 + fs-chunk-store: 3.0.1 immediate-chunk-store: 2.2.0 + join-async-iterator: 1.1.1 load-ip-set: 2.2.1 lt_donthave: 1.0.1 memory-chunk-store: 1.3.5 mime: 3.0.0 - multistream: 4.1.0 package-json-versionify: 1.0.4 parse-torrent: 9.1.5 pump: 3.0.0 @@ -3415,11 +3428,10 @@ packages: simple-peer: 9.11.1 simple-sha1: 3.1.0 speed-limiter: 1.0.2 - stream-to-blob: 2.0.1 - stream-to-blob-url: 3.0.2 stream-with-known-length-to-buffer: 1.0.4 + streamx: 2.12.5 throughput: 1.0.1 - torrent-discovery: 9.4.13 + torrent-discovery: 9.4.14 torrent-piece: 2.0.1 unordered-array-remove: 1.0.2 ut_metadata: 3.5.2 diff --git a/src/index.js b/src/index.js index 85bb8ba..0e6c5ff 100644 --- a/src/index.js +++ b/src/index.js @@ -141,14 +141,16 @@ function createWindow () { callback(headers) }) + let torrentLoad = null + if (process.env.NODE_ENV !== 'development ') { // Load production build - webtorrentWindow.loadFile(path.join(__dirname, '/renderer/dist/webtorrent.html')) + torrentLoad = webtorrentWindow.loadFile(path.join(__dirname, '/renderer/dist/webtorrent.html')) mainWindow.loadFile(path.join(__dirname, '/renderer/dist/index.html')) } else { // Load vite dev server page console.log('Development mode') - webtorrentWindow.loadURL('http://localhost:5173/webtorrent.html') + torrentLoad = webtorrentWindow.loadURL('http://localhost:5173/webtorrent.html') webtorrentWindow.webContents.openDevTools() mainWindow.loadURL('http://localhost:5173/') mainWindow.webContents.openDevTools() @@ -183,8 +185,9 @@ function createWindow () { mainWindow.once('ready-to-show', () => { mainWindow.show() }) - ipcMain.on('portRequest', ({ sender }) => { + ipcMain.on('portRequest', async ({ sender }) => { const { port1, port2 } = new MessageChannelMain() + await torrentLoad webtorrentWindow.webContents.postMessage('port', null, [port1]) sender.postMessage('port', null, [port2]) }) diff --git a/src/renderer/public/lib/webtorrent.js b/src/renderer/public/lib/webtorrent.js index 0786e1e..8d1f88a 100644 --- a/src/renderer/public/lib/webtorrent.js +++ b/src/renderer/public/lib/webtorrent.js @@ -220,10 +220,11 @@ let message = null ipcRenderer.on('port', (e) => { e.ports[0].onmessage = ({ data }) => { - if (!client && data.type === 'settings') window.client = client = new TorrentClient(data.data) - if (data.type === 'destroy') client?.predestroy() + const cloned = structuredClone(data) + if (!client && cloned.type === 'settings') window.client = client = new TorrentClient(cloned.data) + if (cloned.type === 'destroy') client?.predestroy() - client.handleMessage({ data }) + client.handleMessage({ data: cloned }) } message = e.ports[0].postMessage.bind(e.ports[0]) })