diff --git a/dist/bundle_entry.js b/dist/bundle_entry.js
index 172685b..085ad67 100644
--- a/dist/bundle_entry.js
+++ b/dist/bundle_entry.js
@@ -1,3 +1,3 @@
-var pe=Object.defineProperty;var _e=(e,t)=>{for(var r in t)pe(e,r,{get:t[r],enumerable:!0})};var p=Object.getPrototypeOf,b,L,S,A,Q={isConnected:1},me=1e3,O,we={},Se=p(Q),U=p(p),_,Y=(e,t,r,l)=>(e??(setTimeout(r,l),new Set)).add(t),Z=(e,t,r)=>{let l=S;S=t;try{return e(r)}catch(n){return console.error(n),r}finally{S=l}},D=e=>e.filter(t=>t._dom?.isConnected),q=e=>O=Y(O,e,()=>{for(let t of O)t._bindings=D(t._bindings),t._listeners=D(t._listeners);O=_},me),$={get val(){return S?._getters?.add(this),this.rawVal},get oldVal(){return S?._getters?.add(this),this._oldVal},set val(e){S?._setters?.add(this),e!==this.rawVal&&(this.rawVal=e,this._bindings.length+this._listeners.length?(L?.add(this),b=Y(b,this,ve)):this._oldVal=e)}},j=e=>({__proto__:$,rawVal:e,_oldVal:e,_bindings:[],_listeners:[]}),V=(e,t)=>{let r={_getters:new Set,_setters:new Set},l={f:e},n=A;A=[];let a=Z(e,r,t);a=(a??document).nodeType?a:new Text(a);for(let o of r._getters)r._setters.has(o)||(q(o),o._bindings.push(l));for(let o of A)o._dom=a;return A=n,l._dom=a},M=(e,t=j(),r)=>{let l={_getters:new Set,_setters:new Set},n={f:e,s:t};n._dom=r??A?.push(n)??Q,t.val=Z(e,l,t.rawVal);for(let a of l._getters)l._setters.has(a)||(q(a),a._listeners.push(n));return t},ee=(e,...t)=>{for(let r of t.flat(1/0)){let l=p(r??0),n=l===$?V(()=>r.val):l===U?V(r):r;n!=_&&e.append(n)}return e},te=(e,t,...r)=>{let[{is:l,...n},...a]=p(r[0]??0)===Se?r:[{},...r],o=e?document.createElementNS(e,t,{is:l}):document.createElement(t,{is:l});for(let[d,h]of Object.entries(n)){let y=u=>u?Object.getOwnPropertyDescriptor(u,d)??y(p(u)):_,P=t+","+d,c=we[P]??=y(p(o))?.set??0,i=d.startsWith("on")?(u,g)=>{let f=d.slice(2);o.removeEventListener(f,g),o.addEventListener(f,u)}:c?c.bind(o):o.setAttribute.bind(o,d),s=p(h??0);d.startsWith("on")||s===U&&(h=M(h),s=$),s===$?V(()=>(i(h.val,h._oldVal),o)):i(h)}return ee(o,a)},z=e=>({get:(t,r)=>te.bind(_,e,r)}),re=(e,t)=>t?t!==e&&e.replaceWith(t):e.remove(),ve=()=>{let e=0,t=[...b].filter(l=>l.rawVal!==l._oldVal);do{L=new Set;for(let l of new Set(t.flatMap(n=>n._listeners=D(n._listeners))))M(l.f,l.s,l._dom),l._dom=_}while(++e<100&&(t=[...L]).length);let r=[...b].filter(l=>l.rawVal!==l._oldVal);b=_;for(let l of new Set(r.flatMap(n=>n._bindings=D(n._bindings))))re(l._dom,V(l.f,l._dom)),l._dom=_;for(let l of r)l._oldVal=l.rawVal},N={tags:new Proxy(e=>new Proxy(te,z(e)),z()),hydrate:(e,t)=>re(e,V(t,e)),add:ee,state:j,derive:M};var R={};_e(R,{calc:()=>De,compact:()=>B,list:()=>Fe,noreactive:()=>Ne,raw:()=>ce,reactive:()=>K,replace:()=>ge,stateFields:()=>xe});var{fromEntries:ne,entries:T,keys:k,hasOwn:X,getPrototypeOf:I,create:Ae,assign:be}=Object,{get:oe,set:le,deleteProperty:Ve,ownKeys:Ce}=Reflect,{state:E,derive:Te,add:Pe}=N,x,Oe=1e3,J,W,w=Symbol(),ae=Symbol(),G=Symbol(),m=Symbol(),C=Symbol(),ie=Symbol(),De=e=>(e[ae]=1,e),v=e=>e instanceof Object&&!(e instanceof Function)&&!e[ie],se=e=>{if(e?.[ae]){let t=E();return Te(()=>{let r=e();v(t.rawVal)&&v(r)?ge(t.rawVal,r):t.val=K(r)}),t}else return E(K(e))},$e=e=>{let t=Array.isArray(e)?[]:{__proto__:I(e)};for(let[r,l]of T(e))t[r]=se(l);return t[G]=[],t[m]=E(1),t},de={get:(e,t,r)=>t===w?e:X(e,t)?Array.isArray(e)&&t==="length"?(e[m].val,e.length):e[t].val:oe(e,t,r),set:(e,t,r,l)=>X(e,t)?Array.isArray(e)&&t==="length"?(r!==e.length&&++e[m].val,e.length=r,1):(e[t].val=K(r),1):t in e?le(e,t,r,l):le(e,t,se(r))&&(++e[m].val,F(e).forEach(fe.bind(J,l,t,e[t],W)),1),deleteProperty:(e,t)=>(Ve(e,t)&&Ke(e,t),++e[m].val),ownKeys:e=>(e[m].val,Ce(e))},K=e=>!v(e)||e[w]?e:new Proxy($e(e),de),Ne=e=>(e[ie]=1,e),xe=e=>e[w],Ee=I(E()),Ge=e=>new Proxy(e,{get:(t,r,l)=>I(t[r]??0)===Ee?{val:ce(t[r].rawVal)}:oe(t,r,l)}),ce=e=>e?.[w]?new Proxy(Ge(e[w]),de):e,F=e=>e[G]=e[G].filter(t=>t._containerDom.isConnected),fe=(e,t,r,l,{_containerDom:n,f:a})=>{let o=Array.isArray(e),d=o?Number(t):t;Pe(n,()=>n[C][t]=a(r,()=>delete e[t],d)),o&&!l&&d!==e.length-1&&n.insertBefore(n.lastChild,n[C][k(e).find(h=>Number(h)>d)])},Ke=(e,t)=>{for(let r of F(e)){let l=r._containerDom[C];l[t]?.remove(),delete l[t]}},Ie=e=>(x??(x=(setTimeout(()=>(x.forEach(F),x=J),Oe),new Set))).add(e),Fe=(e,t,r)=>{let l={_containerDom:e instanceof Function?e():e,f:r},n=t[w];l._containerDom[C]={},n[G].push(l),Ie(n);for(let[a,o]of T(n))fe(t,a,o,1,l);return l._containerDom},he=(e,t)=>{for(let[n,a]of T(t)){let o=e[n];v(o)&&v(a)?he(o,a):e[n]=a}for(let n in e)X(t,n)||delete e[n];let r=k(t),l=Array.isArray(e);if(l||k(e).some((n,a)=>n!==r[a])){let n=e[w];if(l)e.length=t.length;else{++n[m].val;let a={...n};for(let o of r)delete n[o];for(let o of r)n[o]=a[o]}for(let{_containerDom:a}of F(n)){let{firstChild:o,[C]:d}=a;for(let h of r)o===d[h]?o=o.nextSibling:a.insertBefore(d[h],o)}}return e},ge=(e,t)=>{W=1;try{return he(e,t instanceof Function?Array.isArray(e)?t(e.filter(r=>1)):ne(t(T(e))):t)}finally{W=J}},B=e=>Array.isArray(e)?e.filter(t=>1).map(B):v(e)?be(Ae(I(e)),ne(T(e).map(([t,r])=>[t,B(r)]))):e;var ye=(e,t="")=>{let r="@",l=":",n=".",a="^",o=(c,i,s)=>{let u=Object.keys(i).map(g=>{let f=i[g];switch(g[0]){case r:return o(`@media(max-width:${g.substring(r.length)})`,f,s);case l:return o(`&${g}`,f,s);case n:return o(`${g}${s}`,f,s);case a:return o(`&:hover .${g.substring(a.length)}${s}`,f,s)}return`${g.replace(/([a-z])([A-Z])/g,"$1-$2")}: ${f};`});return`${c}{${u.join(`
-`)}}`},d=(c,i)=>{let s=i.lastIndexOf(c)+c.length;return s?i.substring(s):i},h=c=>{let i=van.tags[c],s=[],u=new Proxy((...g)=>{let f=i(...g);return f.className=s.join(y+" ")+y+" "+f.className,s=[],f},{get(g,f){return s.push(f.substring(f.lastIndexOf(".")+1)),u}});return u},y=t?"_"+t:"",P=Object.keys(e).map(c=>o("."+c+y,e[c],y)).join(`
-`);return globalThis.document?.head.insertAdjacentHTML("beforeend",``),{Tag(...c){return c.map(i=>d(a,d(n,i))).join(y+" ")+y},CSS:P,DOM:new Proxy({},{get(c,i){return h(i)}}),Div:new Proxy({},{get(c,i){return h("div")[i]}})}};globalThis.van=N;globalThis.vanX=R;globalThis.Gale=ye;var H=new URL(import.meta.url).searchParams;vanX.Store=(e,t)=>{let r=localStorage.getItem(t),l=vanX.reactive(r?JSON.parse(r):e);return van.derive(()=>localStorage.setItem(t,JSON.stringify(vanX.compact(l)))),l};H.has("hmr")&&await import("./hmr-WDOBNTDQ.js");var ue=H.get("root")||"/";fetch(ue+"deno.json").then(e=>e.json()).then(e=>{let t=(l,n)=>{let a=document.createElement("script");return a.type=l,a.textContent=n,document.head.appendChild(a),a},r=e.imports;for(let l in r){let n=r[l];n.startsWith("./")&&(r[l]=ue+n.substring(2))}H.has("map")&&t("importmap",JSON.stringify({imports:r})),t("module","").src=r["GALE@ENTRY"]});
+var ue=Object.defineProperty;var _e=(e,t)=>{for(var r in t)ue(e,r,{get:t[r],enumerable:!0})};var u=Object.getPrototypeOf,b,L,S,A,Q={isConnected:1},me=1e3,O,we={},Se=u(Q),U=u(u),_,Y=(e,t,r,l)=>(e??(setTimeout(r,l),new Set)).add(t),Z=(e,t,r)=>{let l=S;S=t;try{return e(r)}catch(n){return console.error(n),r}finally{S=l}},D=e=>e.filter(t=>t._dom?.isConnected),q=e=>O=Y(O,e,()=>{for(let t of O)t._bindings=D(t._bindings),t._listeners=D(t._listeners);O=_},me),$={get val(){return S?._getters?.add(this),this.rawVal},get oldVal(){return S?._getters?.add(this),this._oldVal},set val(e){S?._setters?.add(this),e!==this.rawVal&&(this.rawVal=e,this._bindings.length+this._listeners.length?(L?.add(this),b=Y(b,this,ve)):this._oldVal=e)}},j=e=>({__proto__:$,rawVal:e,_oldVal:e,_bindings:[],_listeners:[]}),V=(e,t)=>{let r={_getters:new Set,_setters:new Set},l={f:e},n=A;A=[];let a=Z(e,r,t);a=(a??document).nodeType?a:new Text(a);for(let o of r._getters)r._setters.has(o)||(q(o),o._bindings.push(l));for(let o of A)o._dom=a;return A=n,l._dom=a},M=(e,t=j(),r)=>{let l={_getters:new Set,_setters:new Set},n={f:e,s:t};n._dom=r??A?.push(n)??Q,t.val=Z(e,l,t.rawVal);for(let a of l._getters)l._setters.has(a)||(q(a),a._listeners.push(n));return t},ee=(e,...t)=>{for(let r of t.flat(1/0)){let l=u(r??0),n=l===$?V(()=>r.val):l===U?V(r):r;n!=_&&e.append(n)}return e},te=(e,t,...r)=>{let[{is:l,...n},...a]=u(r[0]??0)===Se?r:[{},...r],o=e?document.createElementNS(e,t,{is:l}):document.createElement(t,{is:l});for(let[d,h]of Object.entries(n)){let y=p=>p?Object.getOwnPropertyDescriptor(p,d)??y(u(p)):_,P=t+","+d,c=we[P]??=y(u(o))?.set??0,i=d.startsWith("on")?(p,g)=>{let f=d.slice(2);o.removeEventListener(f,g),o.addEventListener(f,p)}:c?c.bind(o):o.setAttribute.bind(o,d),s=u(h??0);d.startsWith("on")||s===U&&(h=M(h),s=$),s===$?V(()=>(i(h.val,h._oldVal),o)):i(h)}return ee(o,a)},z=e=>({get:(t,r)=>te.bind(_,e,r)}),re=(e,t)=>t?t!==e&&e.replaceWith(t):e.remove(),ve=()=>{let e=0,t=[...b].filter(l=>l.rawVal!==l._oldVal);do{L=new Set;for(let l of new Set(t.flatMap(n=>n._listeners=D(n._listeners))))M(l.f,l.s,l._dom),l._dom=_}while(++e<100&&(t=[...L]).length);let r=[...b].filter(l=>l.rawVal!==l._oldVal);b=_;for(let l of new Set(r.flatMap(n=>n._bindings=D(n._bindings))))re(l._dom,V(l.f,l._dom)),l._dom=_;for(let l of r)l._oldVal=l.rawVal},x={tags:new Proxy(e=>new Proxy(te,z(e)),z()),hydrate:(e,t)=>re(e,V(t,e)),add:ee,state:j,derive:M};var R={};_e(R,{calc:()=>De,compact:()=>B,list:()=>Fe,noreactive:()=>xe,raw:()=>ce,reactive:()=>K,replace:()=>ge,stateFields:()=>Ne});var{fromEntries:ne,entries:T,keys:k,hasOwn:X,getPrototypeOf:I,create:Ae,assign:be}=Object,{get:oe,set:le,deleteProperty:Ve,ownKeys:Ce}=Reflect,{state:E,derive:Te,add:Pe}=x,N,Oe=1e3,J,W,w=Symbol(),ae=Symbol(),G=Symbol(),m=Symbol(),C=Symbol(),ie=Symbol(),De=e=>(e[ae]=1,e),v=e=>e instanceof Object&&!(e instanceof Function)&&!e[ie],se=e=>{if(e?.[ae]){let t=E();return Te(()=>{let r=e();v(t.rawVal)&&v(r)?ge(t.rawVal,r):t.val=K(r)}),t}else return E(K(e))},$e=e=>{let t=Array.isArray(e)?[]:{__proto__:I(e)};for(let[r,l]of T(e))t[r]=se(l);return t[G]=[],t[m]=E(1),t},de={get:(e,t,r)=>t===w?e:X(e,t)?Array.isArray(e)&&t==="length"?(e[m].val,e.length):e[t].val:oe(e,t,r),set:(e,t,r,l)=>X(e,t)?Array.isArray(e)&&t==="length"?(r!==e.length&&++e[m].val,e.length=r,1):(e[t].val=K(r),1):t in e?le(e,t,r,l):le(e,t,se(r))&&(++e[m].val,F(e).forEach(fe.bind(J,l,t,e[t],W)),1),deleteProperty:(e,t)=>(Ve(e,t)&&Ke(e,t),++e[m].val),ownKeys:e=>(e[m].val,Ce(e))},K=e=>!v(e)||e[w]?e:new Proxy($e(e),de),xe=e=>(e[ie]=1,e),Ne=e=>e[w],Ee=I(E()),Ge=e=>new Proxy(e,{get:(t,r,l)=>I(t[r]??0)===Ee?{val:ce(t[r].rawVal)}:oe(t,r,l)}),ce=e=>e?.[w]?new Proxy(Ge(e[w]),de):e,F=e=>e[G]=e[G].filter(t=>t._containerDom.isConnected),fe=(e,t,r,l,{_containerDom:n,f:a})=>{let o=Array.isArray(e),d=o?Number(t):t;Pe(n,()=>n[C][t]=a(r,()=>delete e[t],d)),o&&!l&&d!==e.length-1&&n.insertBefore(n.lastChild,n[C][k(e).find(h=>Number(h)>d)])},Ke=(e,t)=>{for(let r of F(e)){let l=r._containerDom[C];l[t]?.remove(),delete l[t]}},Ie=e=>(N??(N=(setTimeout(()=>(N.forEach(F),N=J),Oe),new Set))).add(e),Fe=(e,t,r)=>{let l={_containerDom:e instanceof Function?e():e,f:r},n=t[w];l._containerDom[C]={},n[G].push(l),Ie(n);for(let[a,o]of T(n))fe(t,a,o,1,l);return l._containerDom},he=(e,t)=>{for(let[n,a]of T(t)){let o=e[n];v(o)&&v(a)?he(o,a):e[n]=a}for(let n in e)X(t,n)||delete e[n];let r=k(t),l=Array.isArray(e);if(l||k(e).some((n,a)=>n!==r[a])){let n=e[w];if(l)e.length=t.length;else{++n[m].val;let a={...n};for(let o of r)delete n[o];for(let o of r)n[o]=a[o]}for(let{_containerDom:a}of F(n)){let{firstChild:o,[C]:d}=a;for(let h of r)o===d[h]?o=o.nextSibling:a.insertBefore(d[h],o)}}return e},ge=(e,t)=>{W=1;try{return he(e,t instanceof Function?Array.isArray(e)?t(e.filter(r=>1)):ne(t(T(e))):t)}finally{W=J}},B=e=>Array.isArray(e)?e.filter(t=>1).map(B):v(e)?be(Ae(I(e)),ne(T(e).map(([t,r])=>[t,B(r)]))):e;var ye=(e,t="")=>{let r="@",l=":",n=".",a="^",o=(c,i,s)=>{let p=Object.keys(i).map(g=>{let f=i[g];switch(g[0]){case r:return o(`@media(max-width:${g.substring(r.length)})`,f,s);case l:return o(`&${g}`,f,s);case n:return o(`${g}${s}`,f,s);case a:return o(`&:hover .${g.substring(a.length)}${s}`,f,s)}return`${g.replace(/([a-z])([A-Z])/g,"$1-$2")}: ${f};`});return`${c}{${p.join(`
+`)}}`},d=(c,i)=>{let s=i.lastIndexOf(c)+c.length;return s?i.substring(s):i},h=c=>{let i=van.tags[c],s=[],p=new Proxy((...g)=>{let f=i(...g);return f.className=s.join(y+" ")+y+" "+f.className,s=[],f},{get(g,f){return s.push(f.substring(f.lastIndexOf(".")+1)),p}});return p},y=t?"_"+t:"",P=Object.keys(e).map(c=>o("."+c+y,e[c],y)).join(`
+`);return globalThis.document?.head.insertAdjacentHTML("beforeend",``),{Tag(...c){return c.map(i=>d(a,d(n,i))).join(y+" ")+y},CSS:P,DOM:new Proxy({},{get(c,i){return h(i)}}),Div:new Proxy({},{get(c,i){return h("div")[i]}})}};globalThis.van=x;globalThis.vanX=R;globalThis.Gale=ye;var H=new URL(import.meta.url).searchParams;vanX.Store=(e,t)=>{let r=localStorage.getItem(t),l=vanX.reactive(r?JSON.parse(r):e);return van.derive(()=>localStorage.setItem(t,JSON.stringify(vanX.compact(l)))),l};H.has("hmr")&&await import("/proxy/src/hmr.js");var pe=H.get("root")||"/";fetch(pe+"deno.json").then(e=>e.json()).then(e=>{let t=(l,n)=>{let a=document.createElement("script");return a.type=l,a.textContent=n,document.head.appendChild(a),a},r=e.imports;for(let l in r){let n=r[l];n.startsWith("./")&&(r[l]=pe+n.substring(2))}H.has("map")&&t("importmap",JSON.stringify({imports:r})),t("module","").src=r["GALE@ENTRY"]});
diff --git a/dist/hmr-WDOBNTDQ.js b/dist/hmr-WDOBNTDQ.js
deleted file mode 100644
index 26bf935..0000000
--- a/dist/hmr-WDOBNTDQ.js
+++ /dev/null
@@ -1 +0,0 @@
-var g=0,c={};function d(){for(let e in c)sessionStorage.setItem(e,c[e]);c={},g=0}function f(e,t){c[e]=t,g||(g=setTimeout(d,500)),console.log("SAVE",e,t)}function h(e){let t=sessionStorage.getItem(e);return console.log("LOAD",e,t),t}var S,u=0;function v(e){u=0,S=e}function m(){return S?S+"_"+u+++"_":""}var I=globalThis.van.state;globalThis.van.state=(e,t="")=>{let n=typeof e,o=r=>r,a=r=>r?.toString()||null;switch(n){case"boolean":o=r=>r==="true";break;case"number":o=parseFloat;break;case"object":o=JSON.parse,a=JSON.stringify;break}let l="HMR_"+m()+t,s=h(l),i=I(s?o(s):e);return van.derive(()=>f(l,a(i.val))),i};var T=globalThis.vanX.reactive;globalThis.vanX={...globalThis.VanX,reactive:(e,t)=>{v(t);let n=T(e);return v(),n}};new WebSocket("ws://"+window.location.host+"/ws").addEventListener("message",e=>e.data==="reload"&&window.location.reload());vanX.Store=(e,t)=>{let n=JSON.stringify(e),o=localStorage.getItem(t+"check");localStorage.setItem(t+"check",n);let a;if(n==o){let s=localStorage.getItem(t);try{a=JSON.parse(s)||e}catch{a=e}}else a=e;let l=vanX.reactive(a);return van.derive(()=>localStorage.setItem(t,JSON.stringify(vanX.compact(l)))),l};
diff --git a/scripts/assemble_files.ts b/scripts/assemble_files.ts
index 12d9029..f0c2388 100644
--- a/scripts/assemble_files.ts
+++ b/scripts/assemble_files.ts
@@ -8,6 +8,6 @@ export const HTML = index.replace(
``,
`
-
+
`);
diff --git a/scripts/bundle_entry.ts b/scripts/bundle_entry.ts
index 4f24362..7e7c1a8 100644
--- a/scripts/bundle_entry.ts
+++ b/scripts/bundle_entry.ts
@@ -14,7 +14,8 @@ vanX.Store=(e,t)=>{const a=localStorage.getItem(t),r=vanX.reactive(a?JSON.parse(
if(args.has("hmr"))
{
- await import("../src/hmr.js");
+ const path = "/proxy/"+"src/hmr.js";
+ await import(path);
}
const root = args.get("root")||"/";
diff --git a/scripts/dev_server.ts b/scripts/dev_server.ts
index 8400476..41319b1 100644
--- a/scripts/dev_server.ts
+++ b/scripts/dev_server.ts
@@ -1,12 +1,10 @@
import { contentType } from "jsr:@std/media-types";
-import {HTML} from "./assemble_files.ts";
+import {HTML, Root} from "./assemble_files.ts";
// Parse the port from the command-line arguments, defaulting to 8000
const port = parseInt(Deno.args[0] || "8000", 10);
const sockets: WebSocket[] = [];
-let html = HTML;
-
function extension(path: string): string {
// Remove trailing slash if it exists
const normalizedPath = path.endsWith("/") ? path.slice(0, -1) : path;
@@ -18,32 +16,48 @@ function extension(path: string): string {
// Start the HTTP server using Deno.serve
Deno.serve({ port }, async (req: Request) => {
- const url = new URL(req.url);
+ const path = new URL(req.url).pathname;
// Handle WebSocket connections
- if (url.pathname === "/ws") {
+ if (path === "/ws") {
const { socket, response } = Deno.upgradeWebSocket(req);
sockets.push(socket);
return response;
}
// Serve static files or the predefined HTML for non-file routes
- const path = new URL(req.url).pathname;
const ext = extension(path);
// Serve the predefined HTML for non-file routes
if (!ext) {
- return new Response(html, {
+ return new Response(HTML, {
headers: { "Content-Type": "text/html" },
});
}
- try {
- const file = await Deno.open("." + path, { read: true });
- return new Response(file.readable, {
+
+
+ try
+ {
+ const proxyPrefix = "/proxy/";
+ let streamable;
+ if(path.startsWith(proxyPrefix))
+ {
+ const file = await fetch(Root + path.slice(proxyPrefix.length));
+ streamable = file.body;
+ }
+ else
+ {
+ const file = await Deno.open("." + path, { read: true });
+ streamable = file.readable;
+ }
+
+ return new Response(streamable, {
headers: { "Content-Type": contentType(ext) || "application/javascript" },
});
- } catch (err) {
+ }
+ catch (err)
+ {
if (err instanceof Deno.errors.NotFound) {
return new Response("File not found", { status: 404 });
} else {