import bundler from "./mod.ts"; import {Root} from "./introspect.ts" const transpiled:Map = new Map(); const ServeJS =(inText:string)=> new Response(inText, {headers:{"content-type":"application/javascript"}}); const htmlFile = Deno.readTextFileSync(Deno.cwd()+"/index.html"); Deno.serve(async(req)=>{ const url = new URL(req.url); const index = url.pathname.lastIndexOf("."); if(index > -1) { const ext = url.pathname.substring(index+1); if(ext === "ts" || ext == "tsx" || ext == "js" || ext == "jsx") { if(ext == "js") { const lookup = transpiled.get(url.pathname); if(lookup) { return ServeJS(lookup); } } else { const lookup = transpiled.get(url.pathname.substring(0, index)+".js"); if(lookup) { return ServeJS(lookup); } } try { const results = await bundler({ entryPoints:["."+url.pathname], outdir:"/", entryNames: `[dir][name]`, splitting: true }); results.outputFiles?.forEach(output=>{ transpiled.set(output.path, output.text); }) return ServeJS(results.outputFiles[0].text); } catch(e) { return new Response("404", {status:404}); } } } return new Response(htmlFile, {headers:{"content-type": "text/html"}}); });