configurable lib folder
This commit is contained in:
		
							parent
							
								
									f521ed23eb
								
							
						
					
					
						commit
						d7a5350256
					
				| @ -21,19 +21,19 @@ Configure({ | |||||||
|     Remap: (inImports, inConfig)=> |     Remap: (inImports, inConfig)=> | ||||||
|     { |     { | ||||||
|         inImports["react-original"] = inImports["react"]; |         inImports["react-original"] = inImports["react"]; | ||||||
|         inImports["react"] = "/_lib_/hmr-react.tsx"; |         inImports["react"] = `${inConfig.Spoof}/hmr-react.tsx`; | ||||||
|         return inImports; |         return inImports; | ||||||
|     }, |     }, | ||||||
|     async Serve(inReq, inURL, inExt, inMap, inConfig) |     async Serve(inReq, inURL, inExt, inMap, inConfig) | ||||||
|     { |     { | ||||||
|         if(Transpile.Check(inExt) && !inURL.searchParams.get("reload") && !inURL.pathname.startsWith("/_lib_/")) |         if(Transpile.Check(inExt) && !inURL.searchParams.get("reload") && !inURL.pathname.startsWith(inConfig.Spoof+"/")) | ||||||
|         { |         { | ||||||
|             const imp = await import(inConfig.Proxy+inURL.pathname); |             const imp = await import(inConfig.Proxy+inURL.pathname); | ||||||
|             const members = []; |             const members = []; | ||||||
|             for( const key in imp ) { members.push(key); } |             for( const key in imp ) { members.push(key); } | ||||||
| 
 | 
 | ||||||
|             const code =` |             const code =` | ||||||
| import {FileListen} from "/_lib_/hmr-listen.tsx"; | import {FileListen} from "${inConfig.Spoof}/hmr-listen.tsx"; | ||||||
| import * as Import from "${inURL.pathname}?reload=0"; | import * as Import from "${inURL.pathname}?reload=0"; | ||||||
| ${ members.map(m=>`let proxy_${m} = Import.${m}; export { proxy_${m} as ${m} };`).join("\n") } | ${ members.map(m=>`let proxy_${m} = Import.${m}; export { proxy_${m} as ${m} };`).join("\n") } | ||||||
| FileListen("${inURL.pathname}", (updatedModule)=> | FileListen("${inURL.pathname}", (updatedModule)=> | ||||||
|  | |||||||
| @ -28,11 +28,13 @@ const ImportMapReload =async()=> | |||||||
|             json.imports[key] = value.substring(1); |             json.imports[key] = value.substring(1); | ||||||
|         } |         } | ||||||
|     }); |     }); | ||||||
|     if(!json.imports["@able/"]) | 
 | ||||||
|  |     const mapKey = (Configuration.Spoof.startsWith("/") ? Configuration.Spoof.substring(1) : Configuration.Spoof)+"/"; | ||||||
|  |     if(!json.imports[mapKey]) | ||||||
|     { |     { | ||||||
|         console.log(`"@able/" specifier not defined in import map`); |         console.log(`"${mapKey}" specifier not defined in import map`); | ||||||
|     } |     } | ||||||
|     json.imports["@able/"] = "/_lib_/"; |     json.imports[mapKey] = Configuration.Spoof+"/"; | ||||||
| 
 | 
 | ||||||
|     if(!json.imports["react"]) |     if(!json.imports["react"]) | ||||||
|     { |     { | ||||||
| @ -45,13 +47,14 @@ const ImportMapReload =async()=> | |||||||
| 
 | 
 | ||||||
| type CustomHTTPHandler = (inReq:Request, inURL:URL, inExt:string|false, inMap:{imports:Record<string, string>}, inConfig:Configuration)=>void|false|Response|Promise<Response|void|false>; | type CustomHTTPHandler = (inReq:Request, inURL:URL, inExt:string|false, inMap:{imports:Record<string, string>}, inConfig:Configuration)=>void|false|Response|Promise<Response|void|false>; | ||||||
| type CustomRemapper = (inImports:Record<string, string>, inConfig:Configuration)=>Record<string, string>; | type CustomRemapper = (inImports:Record<string, string>, inConfig:Configuration)=>Record<string, string>; | ||||||
| type Configuration = {Proxy:string, Allow:string, Reset:string, SWCOp:SWCW.Options, Serve:CustomHTTPHandler, Shell:CustomHTTPHandler, Remap:CustomRemapper}; | type Configuration = {Proxy:string, Spoof:string, Allow:string, Reset:string, SWCOp:SWCW.Options, Serve:CustomHTTPHandler, Shell:CustomHTTPHandler, Remap:CustomRemapper}; | ||||||
| type ConfigurationArgs = {Proxy?:string, Allow?:string, Reset?:string, SWCOp?:SWCW.Options, Serve?:CustomHTTPHandler, Shell?:CustomHTTPHandler, Remap?:CustomRemapper}; | type ConfigurationArgs = {Proxy?:string, Spoof?:string, Allow?:string, Reset?:string, SWCOp?:SWCW.Options, Serve?:CustomHTTPHandler, Shell?:CustomHTTPHandler, Remap?:CustomRemapper}; | ||||||
| let Configuration:Configuration = | let Configuration:Configuration = | ||||||
| { | { | ||||||
|     Proxy: new URL(`file://${Deno.cwd().replaceAll("\\", "/")}`).toString(), |     Proxy: new URL(`file://${Deno.cwd().replaceAll("\\", "/")}`).toString(), | ||||||
|     Allow: "*", |     Allow: "*", | ||||||
|     Reset: "/clear-cache", |     Reset: "/clear-cache", | ||||||
|  |     Spoof: "/@able", | ||||||
|     Serve(inReq, inURL, inExt, inMap, inConfig){}, |     Serve(inReq, inURL, inExt, inMap, inConfig){}, | ||||||
|     Remap: (inImports, inConfig)=> |     Remap: (inImports, inConfig)=> | ||||||
|     { |     { | ||||||
| @ -78,7 +81,7 @@ let Configuration:Configuration = | |||||||
|                     <div id="app"></div> |                     <div id="app"></div> | ||||||
|                     <script type="importmap">${JSON.stringify(inMap)}</script> |                     <script type="importmap">${JSON.stringify(inMap)}</script> | ||||||
|                     <script type="module"> |                     <script type="module"> | ||||||
|                         import Mount from "/_lib_/boot-browser.tsx"; |                         import Mount from "${inConfig.Spoof}/boot-browser.tsx"; | ||||||
|                         Mount("#app", "${parts[1]??"/app.tsx"}"); |                         Mount("#app", "${parts[1]??"/app.tsx"}"); | ||||||
|                     </script> |                     </script> | ||||||
|                 </body> |                 </body> | ||||||
| @ -189,7 +192,7 @@ HTTP.serve(async(req: Request)=> | |||||||
|     { |     { | ||||||
|         let code; |         let code; | ||||||
|         let path; |         let path; | ||||||
|         if(url.pathname.startsWith("/_lib_/")) |         if(url.pathname.startsWith(Configuration.Spoof+"/")) | ||||||
|         { |         { | ||||||
|             const clipRoot = import.meta.url.substring(0, import.meta.url.lastIndexOf("/")); |             const clipRoot = import.meta.url.substring(0, import.meta.url.lastIndexOf("/")); | ||||||
|             const clipPath = url.pathname.substring(url.pathname.indexOf("/", 1)); |             const clipPath = url.pathname.substring(url.pathname.indexOf("/", 1)); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user