diff --git a/src/rewrite/rewrite.html.js b/src/rewrite/rewrite.html.js index dcd94328..6300f2f7 100644 --- a/src/rewrite/rewrite.html.js +++ b/src/rewrite/rewrite.html.js @@ -209,16 +209,12 @@ export function injectHead(ctx) { } export function createJsInject( - bareURL = '', - bareData = {}, cookies = '', referrer = '' ) { return ( - `self.__uv$bareData = ${JSON.stringify(bareData)};` + `self.__uv$cookies = ${JSON.stringify(cookies)};` + - `self.__uv$referrer = ${JSON.stringify(referrer)};` + - `self.__uv$bareURL = ${JSON.stringify(bareURL)}; ` + `self.__uv$referrer = ${JSON.stringify(referrer)};` ); } @@ -227,8 +223,6 @@ export function createHtmlInject( bundleScript, clientScript, configScript, - bareURL, - bareData, cookies, referrer ) { @@ -239,7 +233,7 @@ export function createHtmlInject( childNodes: [ { nodeName: '#text', - value: createJsInject(bareURL, bareData, cookies, referrer), + value: createJsInject(cookies, referrer), }, ], attrs: [ diff --git a/src/sw.js b/src/sw.js index 370e7a6f..7a1a45dd 100644 --- a/src/sw.js +++ b/src/sw.js @@ -14,7 +14,7 @@ const uv = new UVServiceWorker(); self.addEventListener('fetch', event => { event.respondWith( (async ()=>{ - if(event.request.url.startsWith(location.origin + __uv$config.prefix)) { + if (uv.route(event)) { return await uv.fetch(event); } return await fetch(event.request); diff --git a/src/uv.handler.js b/src/uv.handler.js index 5f429732..21e56be7 100644 --- a/src/uv.handler.js +++ b/src/uv.handler.js @@ -13,15 +13,6 @@ const UVClient = self.UVClient; */ const __uv$config = self.__uv$config; -/** - * @type {import('@mercuryworkshop/bare-mux').BareManifest} - */ -const __uv$bareData = self.__uv$bareData; - -/** - * @type {string} - */ -const __uv$bareURL = self.__uv$bareURL; /** * @type {string} @@ -29,8 +20,6 @@ const __uv$bareURL = self.__uv$bareURL; const __uv$cookies = self.__uv$cookies; if ( - typeof __uv$bareData !== 'object' || - typeof __uv$bareURL !== 'string' || typeof __uv$cookies !== 'string' ) throw new TypeError('Unable to load global UV data'); @@ -572,8 +561,6 @@ function __uvHook(window) { __uv.bundleScript, __uv.clientScript, __uv.configScript, - __uv$bareURL, - __uv$bareData, cookieStr, window.location.href ), @@ -780,8 +767,6 @@ function __uvHook(window) { __uv.bundleScript, __uv.clientScript, __uv.configScript, - __uv$bareURL, - __uv$bareData, cookieStr, window.location.href ), @@ -892,8 +877,6 @@ function __uvHook(window) { __uv.bundleScript, __uv.clientScript, __uv.configScript, - __uv$bareURL, - __uv$bareData, cookieStr, window.location.href ), diff --git a/src/uv.sw.js b/src/uv.sw.js index 1bcd6e94..8aeedfad 100644 --- a/src/uv.sw.js +++ b/src/uv.sw.js @@ -30,18 +30,22 @@ const emptyMethods = ['GET', 'HEAD']; class UVServiceWorker extends Ultraviolet.EventEmitter { constructor(config = __uv$config) { super(); - if (!config.bare) config.bare = '/bare/'; if (!config.prefix) config.prefix = '/service/'; this.config = config; - const addresses = ( - Array.isArray(config.bare) ? config.bare : [config.bare] - ).map((str) => new URL(str, location).toString()); - this.address = addresses[~~(Math.random() * addresses.length)]; /** * @type {InstanceType} */ this.bareClient = new Ultraviolet.BareClient(); } + /** + * + * @param {Event & {request: Request}} param0 + * @returns + */ + route({ request }) { + if (request.url.startsWith(location.origin + this.config.prefix)) return true; + else return false; + } /** * * @param {Event & {request: Request}} param0 @@ -57,7 +61,7 @@ class UVServiceWorker extends Ultraviolet.EventEmitter { if (!request.url.startsWith(location.origin + this.config.prefix)) return await fetch(request); - const ultraviolet = new Ultraviolet(this.config, this.address); + const ultraviolet = new Ultraviolet(this.config); if (typeof this.config.construct === 'function') { this.config.construct(ultraviolet, 'service'); @@ -72,7 +76,6 @@ class UVServiceWorker extends Ultraviolet.EventEmitter { const requestCtx = new RequestContext( request, - this, ultraviolet, !emptyMethods.includes(request.method.toUpperCase()) ? await request.blob() @@ -130,10 +133,7 @@ class UVServiceWorker extends Ultraviolet.EventEmitter { method: requestCtx.method, body: requestCtx.body, credentials: requestCtx.credentials, - mode: - location.origin !== requestCtx.address.origin - ? 'cors' - : requestCtx.mode, + mode: requestCtx.mode, cache: requestCtx.cache, redirect: requestCtx.redirect, }); @@ -212,8 +212,6 @@ class UVServiceWorker extends Ultraviolet.EventEmitter { .map((script) => JSON.stringify(script)) .join(','); responseCtx.body = `if (!self.__uv && self.importScripts) { ${ultraviolet.createJsInject( - this.address, - this.bareClient.manifest, ultraviolet.cookie.serialize( cookies, ultraviolet.meta, @@ -248,8 +246,6 @@ class UVServiceWorker extends Ultraviolet.EventEmitter { ultraviolet.bundleScript, ultraviolet.clientScript, ultraviolet.configScript, - this.address, - this.bareClient.manifest, ultraviolet.cookie.serialize( cookies, ultraviolet.meta, @@ -326,16 +322,14 @@ class RequestContext { /** * * @param {Request} request - * @param {UVServiceWorker} worker * @param {Ultraviolet} ultraviolet * @param {BodyInit} body */ - constructor(request, worker, ultraviolet, body = null) { + constructor(request, ultraviolet, body = null) { this.ultraviolet = ultraviolet; this.request = request; this.headers = Object.fromEntries(request.headers.entries()); this.method = request.method; - this.address = worker.address; this.body = body || null; this.cache = request.cache; this.redirect = request.redirect;