11import {
22 ScramjetHeaders ,
3- ScramjetServiceWorker ,
4- type ScramjetInitConfig ,
53 type ScramjetFetchContext ,
6- ScramjetController ,
74 type ScramjetFetchResponse ,
85 CookieStore ,
96 handleFetch ,
107 rewriteUrl ,
11- config ,
12- ScramjetClient ,
138 setConfig ,
149 unrewriteUrl ,
1510 type URLMeta ,
11+ BareClient ,
1612} from "@mercuryworkshop/scramjet/bundled" ;
1713import * as tldts from "tldts" ;
1814
1915const ISOLATION_ORIGIN = import . meta. env . VITE_ISOLATION_ORIGIN ;
2016
21- const tgt = new EventTarget ( ) ;
22-
23- const cookiestore = new CookieStore ( ) ;
24-
25- let client = new ScramjetClient ( self ) ;
26-
2717const cfg = {
2818 wisp : "ws://localhost:1337/" ,
2919 prefix : "/scramjet/" ,
@@ -77,9 +67,11 @@ const cfg = {
7767} ;
7868
7969setConfig ( cfg ) ;
70+ const bare = new BareClient ( ) ;
8071
8172type Controller = {
8273 controllerframe : HTMLIFrameElement ;
74+ cookiestore : CookieStore ;
8375 rootdomain : string ;
8476 baseurl : URL ;
8577 prefix : URL ;
@@ -123,6 +115,7 @@ function makeController(url: URL): Controller {
123115 } ) ;
124116
125117 const prefix = new URL ( baseurl . protocol + baseurl . host + cfg . prefix ) ;
118+ const cookiestore = new CookieStore ( ) ;
126119
127120 const controller = {
128121 controllerframe : frame ,
@@ -132,6 +125,7 @@ function makeController(url: URL): Controller {
132125 prefix,
133126 ready,
134127 readyResolve : readyResolve ! ,
128+ cookiestore,
135129 } ;
136130 controllers . push ( controller ) ;
137131
@@ -169,14 +163,17 @@ const methods = {
169163 data : ScramjetFetchContext ,
170164 controller : Controller
171165 ) : Promise < [ ScramjetFetchResponse , Transferable [ ] | undefined ] > {
172- data . cookieStore = cookiestore ;
166+ // repopulate fetchcontext fields with the items that weren't cloned over postMessage
167+ data . cookieStore = controller . cookiestore ;
173168 data . rawUrl = new URL ( data . rawUrl ) ;
174169 if ( data . rawClientUrl ) data . rawClientUrl = new URL ( data . rawClientUrl ) ;
175170 let headers = new ScramjetHeaders ( ) ;
176171 for ( let [ k , v ] of Object . entries ( data . initialHeaders ) ) {
177172 headers . set ( k , v ) ;
178173 }
179174 data . initialHeaders = headers ;
175+
176+ // handle scramjet.all.js and scramjet.wasm.js requests
180177 if ( data . rawUrl . pathname === cfg . files . wasm ) {
181178 return [ await makeWasmResponse ( ) , undefined ] ;
182179 } else if ( data . rawUrl . pathname === cfg . files . all ) {
@@ -221,15 +218,17 @@ const methods = {
221218 }
222219 }
223220
221+ // TODO fix eventtarget jank
222+ const tgt = new EventTarget ( ) ;
224223 const fetchresponse = await handleFetch . call (
225224 tgt as any ,
226225 data ,
227226 cfg ,
228- client . bare ,
227+ bare ,
229228 controller . prefix
230229 ) ;
231230
232- let transfer = undefined ;
231+ let transfer : any [ ] | undefined = undefined ;
233232 if (
234233 fetchresponse . body instanceof ArrayBuffer ||
235234 fetchresponse . body instanceof ReadableStream
0 commit comments