Path: blob/master/views/assets/js/register-sw.js
10586 views
(() => {1const swRoutes = {2uv: ['{{route}}{{/uv/sw.js}}', '{{route}}{{/uv/sw-blacklist.js}}'],3sj: [4'{{route}}{{/scram/scramjet.sw.js}}',5'{{route}}{{/scram/scramjet.sw-blacklist.js}}'6],7},8swAllowedHostnames = ['localhost', '127.0.0.1'],9wispUrl =10(location.protocol === 'https:' ? 'wss' : 'ws') +11'://' +12location.host +13'{{route}}{{/wisp/}}',14proxyUrl = {15tor: 'socks5h://localhost:9050',16eu: 'socks5h://localhost:7000',17jp: 'socks5h://localhost:7001',18},19transports = {20'{{epoxy}}': '{{route}}{{/epoxy/index.mjs}}',21'{{libcurl}}': '{{route}}{{/libcurl/index.mjs}}',22},23storageId = '{{hu-lts}}-storage',24storageObject = () => JSON.parse(localStorage.getItem(storageId)) || {},25readStorage = (name) => storageObject()[name],26defaultMode = '{{libcurl}}';2728transports.default = transports[defaultMode];2930Object.freeze(transports);3132const registerSW = async () => {33if (!navigator.serviceWorker) {34if (35location.protocol !== 'https:' &&36!swAllowedHostnames.includes(location.hostname)37)38throw new Error('Service workers cannot be registered without https.');3940throw new Error("Your browser doesn't support service workers.");41}4243// Set the transport mode44const transportMode =45transports[readStorage('Transport')] || transports.default;46let transportOptions = { wisp: wispUrl };4748// Socks5 proxy options49if ('string' === typeof readStorage('UseSocks5'))50transportOptions.proxy = proxyUrl[readStorage('UseSocks5')];5152console.log('Using proxy:', transportOptions.proxy);53console.log('Transport mode:', transportMode);5455const connection = new BareMux.BareMuxConnection('{{route}}{{/baremux/worker.js}}');56await connection.setTransport(transportMode, [transportOptions]);5758const registrations = await navigator.serviceWorker.getRegistrations(),59usedSW = swRoutes.uv[readStorage('HideAds') !== false ? 1 : 0];6061console.log('Service Worker being registered:', usedSW);6263// Unregister outdated service workers64for (const registration of registrations)65if (66registration.active &&67new URL(registration.active.scriptURL).pathname !==68new URL(usedSW, location.origin).pathname69)70await registration.unregister();7172await navigator.serviceWorker.register(usedSW);73};7475const initializeScramjet = async () => {76try {77const { ScramjetController } = await $scramjetLoadController();7879const scramjet = new ScramjetController({80prefix: '{{route}}{{/scram/network/}}',81files: {82wasm: '{{route}}{{/scram/scramjet.wasm.wasm}}',83all: '{{route}}{{/scram/scramjet.all.js}}',84sync: '{{route}}{{/scram/scramjet.sync.js}}',85},86flags: {87rewriterLogs: false,88naiiveRewriter: false,89scramitize: false,90},91});9293console.log('Initializing ScramjetController');94scramjet.init();95navigator.serviceWorker.register(96swRoutes.sj[readStorage('HideAds') !== false ? 1 : 0]97);98} catch (err) {99console.error('Scramjet initialization failed:', err);100}101};102103const initialize = async () => {104try {105await registerSW();106107await initializeScramjet();108} catch (err) {109console.error('Initialization failed:', err);110}111};112113initialize();114})();115116117