patch caching

This commit is contained in:
Seth Trowbridge 2023-07-01 10:53:10 -04:00
parent d6a9a269a7
commit 3a3fdcf5e2

View File

@ -59,15 +59,9 @@ let Configuration:Configuration =
{ {
if( inReq.headers.get("user-agent")?.startsWith("Deno") || inURL.searchParams.get("deno") ) if( inReq.headers.get("user-agent")?.startsWith("Deno") || inURL.searchParams.get("deno") )
{ {
console.log("patching...")
const file = await fetch(inConfig.Proxy + inURL.pathname); const file = await fetch(inConfig.Proxy + inURL.pathname);
const text = await file.text(); const text = await file.text();
return new Response(Transpile.Patch(text, "deno-"+inURL.pathname, inMap), {headers:{"content-type":"application/javascript"}} );
return new Response(Transpile.Patch(text, inMap), {headers:{"content-type":"application/javascript"}} );
}
else
{
console.log("not a deno-able file")
} }
}, },
Remap: (inImports, inConfig)=> Remap: (inImports, inConfig)=>
@ -147,8 +141,18 @@ export const Transpile =
/** /**
* Converts dynamic module imports in to static, also can resolve paths with an import map * Converts dynamic module imports in to static, also can resolve paths with an import map
*/ */
Patch(inText:string, inMap?:DenoConfig) Patch(inText:string, inKey:string|false = false, inMap?:DenoConfig)
{ {
if(inKey)
{
const check = this.Cache.get(inKey);
if(check)
{
return check;
}
}
const remap = inMap ? (inPath:string)=> const remap = inMap ? (inPath:string)=>
{ {
const match = inMap.imports[inPath]; const match = inMap.imports[inPath];
@ -200,8 +204,10 @@ export const Transpile =
staticImports.push(`import ${moduleName} from ${importPath};`); staticImports.push(`import ${moduleName} from ${importPath};`);
convertedBody = convertedBody.replace(importStatement, `Promise.resolve(${moduleName})`); convertedBody = convertedBody.replace(importStatement, `Promise.resolve(${moduleName})`);
} }
convertedBody = staticImports.join("\n") + convertedBody;
return staticImports.join("\n") + convertedBody;
inKey && this.Cache.set(inKey, convertedBody);
return convertedBody;
}, },
Fetch: async function(inPath:string, inKey:string, inCheckCache=true) Fetch: async function(inPath:string, inKey:string, inCheckCache=true)
{ {