@mapl/web 0.6.0 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bun/compiler/index.d.ts +27 -0
- package/bun/compiler/index.js +1 -0
- package/bun/compiler/router.d.ts +9 -0
- package/bun/compiler/router.js +1 -0
- package/bun/index.d.ts +1 -0
- package/bun/index.js +1 -1
- package/cloudflare/compiler.d.ts +0 -1
- package/cloudflare/compiler.js +1 -1
- package/cloudflare/index.d.ts +0 -1
- package/compilers/call.js +1 -1
- package/compilers/globals.d.ts +2 -2
- package/compilers/globals.js +1 -1
- package/compilers/scope.js +1 -1
- package/deno/compiler.js +1 -1
- package/generic/compiler.d.ts +0 -1
- package/generic/compiler.js +1 -1
- package/package.json +1 -1
- package/router.d.ts +0 -1
- package/router.js +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ExportedDependency, type Value } from "runtime-compiler";
|
|
2
|
+
import { type HandlerScope } from "../../compilers/scope.ts";
|
|
3
|
+
import type { Router } from "../../router.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Describe compiler compiled result
|
|
6
|
+
*/
|
|
7
|
+
export type CompiledResult = Bun.Serve.Routes<any, string>;
|
|
8
|
+
/**
|
|
9
|
+
* Load all global state for a router
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* setHandlerArgs(constants.GENERIC_ARGS);
|
|
13
|
+
* _load(router);
|
|
14
|
+
*/
|
|
15
|
+
export declare const _load: (router: Router) => void;
|
|
16
|
+
export declare const loadToString: () => Value<CompiledResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Hydrate router data
|
|
19
|
+
*/
|
|
20
|
+
export declare const _hydrate: (router: Router, scope: HandlerScope) => void;
|
|
21
|
+
/**
|
|
22
|
+
* @example
|
|
23
|
+
* export default {
|
|
24
|
+
* fetch: getDependency(build(app))
|
|
25
|
+
* };
|
|
26
|
+
*/
|
|
27
|
+
export declare const build: (router: Router) => ExportedDependency<CompiledResult>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{exportScope,markExported}from"runtime-compiler";import{isHydrating}from"runtime-compiler/config";import{TMP_SCOPE,initScope,setHandlerArgs}from"../../compilers/globals.js";import{wrapScope}from"../../compilers/scope.js";import{initRouter,insertItem,toRoutes}from"./router.js";let PARAM_MAP;let loadToMethodRouter=(router,scope,prefix,content)=>{for(let i=0,layers=router[0];i<layers.length;i++){let self=layers[i];content+=self[0](self,scope)}for(let i=0,routes=router[1];i<routes.length;i++){let route=routes[i];let routeScope=scope.slice();let path=route[1];let routeContent;if(path.includes(`*`)){let paramCount;if(path.endsWith(`**`)){routeContent=`let{`;paramCount=0;let len=path.length-3,newPath=``,startIdx=0;for(let i=path.indexOf(`*`);i>-1&&i<len;i=path.indexOf(`*`,i+2)){let id=`q`+ paramCount++;routeContent+=id+`,`;newPath+=path.slice(startIdx,i)+`:`+id;startIdx=i+1}startIdx<len&&(newPath+=path.slice(startIdx,len));path=newPath+`/*`;routeContent+=`"*":q`+ paramCount++}else{routeContent=`let{q0`;paramCount=1;let firstStar=path.indexOf(`*`);let newPath=path.slice(0,firstStar)+`:q0`,startIdx=firstStar+1;for(let i=path.indexOf(`*`,firstStar+2);i>-1;i=path.indexOf(`*`,i+2)){let id=`q`+ paramCount++;routeContent+=id+`,`;newPath+=path.slice(startIdx,i)+`:`+id;startIdx=i+1}path=startIdx<path.length?newPath+path.slice(startIdx):newPath}routeContent+=`}=mr.params,mu=mr.url,e=mu.indexOf('?',11);`+content;for(let j=2,params=PARAM_MAP[paramCount];j<route.length;j++){let self=route[j];routeContent+=self[0](self,routeScope,params,paramCount)}}else{routeContent=`let mu=mr.url,e=mu.indexOf('?',11);`+content;for(let j=2;j<route.length;j++){let self=route[j];routeContent+=self[0](self,routeScope,``,0)}}insertItem(route[0],prefix+path,wrapScope(routeScope,routeContent))}for(let i=2;i<router.length;i++){let childRouter=router[i];loadToMethodRouter(childRouter[1],scope.slice(),childRouter[0]===`/`?prefix:prefix+childRouter[0],content)}};export let _load=router=>{initScope();initRouter();PARAM_MAP=[``,`q0`];for(let i=1;i<=8;i++)PARAM_MAP.push(`${PARAM_MAP[i]},q${i}`);loadToMethodRouter(router,[0],``,``)};export let loadToString=toRoutes;export let _hydrate=(router,scope)=>{for(let i=0,layers=router[0];i<layers.length;i++){let self=layers[i];self[0](self,scope)}for(let i=0,routes=router[1];i<routes.length;i++){let route=routes[i];let routeScope=scope.slice();let path=route[1];if(path.includes(`*`)){let paramCount=1;{let i=path.lastIndexOf(`*`);if(i>1){i=path.lastIndexOf(`*`,i-2);while(i>1){paramCount++;i=path.lastIndexOf(`*`,i-2)}i>-1&¶mCount++}}for(let j=2,params=PARAM_MAP[paramCount];j<route.length;j++){let self=route[j];self[0](self,routeScope,params,paramCount)}}else for(let j=2;j<route.length;j++){let self=route[j];self[0](self,routeScope,``,0)}}for(let i=2;i<router.length;i++)_hydrate(router[i][1],scope.slice())};export let build=isHydrating?router=>(_hydrate(router,[0]),markExported()):router=>(setHandlerArgs(`(mr,mi)`),_load(router),exportScope(TMP_SCOPE,loadToString()));
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const initRouter: () => void;
|
|
2
|
+
/**
|
|
3
|
+
* Path and content must be processed before inserting
|
|
4
|
+
* @param method
|
|
5
|
+
* @param path
|
|
6
|
+
* @param content
|
|
7
|
+
*/
|
|
8
|
+
export declare const insertItem: (method: string, path: string, content: string) => void;
|
|
9
|
+
export declare const toRoutes: () => string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let METHOD_ROUTER;let DEOPT_PATHS;export let initRouter=()=>{METHOD_ROUTER={};DEOPT_PATHS=[]};export let insertItem=(method,path,content)=>{let methods=METHOD_ROUTER[path];if(methods!=null)methods[``]??DEOPT_PATHS.push(path);else methods=METHOD_ROUTER[path]={};method!==`GET`&&method!==`POST`&&method!==`PUT`&&method!==`DELETE`&&method!==`PATCH`&&method!==`OPTIONS`&&DEOPT_PATHS.push(path);methods[method]=content};export let toRoutes=()=>{let str=`{`;for(let i=0;i<DEOPT_PATHS.length;i++){let back=`return mnf},`;let path=DEOPT_PATHS[i];str+=`"`+path+`":(mr,mi)=>{`;let methods=METHOD_ROUTER[path];delete METHOD_ROUTER[path];let first=true;for(let method in methods)if(method===``)back=methods[``]+`},`;else{if(first){first=false;str+=`if(`}else str+=`else if(`;str+=`mr.method==="`+method+`"){`+methods[method]+`}`}str+=back}for(const path in METHOD_ROUTER){str+=`"`+path;let methods=METHOD_ROUTER[path];if(methods[``]==null){str+=`":{`;for(const method in methods)str+=method+`:(mr,mi)=>{`+methods[method]+`},`;str+=`},`}else str+=`":(mr,mi)=>{`+methods[``]+`},`}return str+`}`};
|
package/bun/index.d.ts
CHANGED
package/bun/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export let request=`mr`;export let server=`mi`;
|
|
1
|
+
export let request=`mr`;export let server=`mi`;export{build}from"./compiler/index.js";
|
package/cloudflare/compiler.d.ts
CHANGED
|
@@ -10,7 +10,6 @@ export declare const loadToString: () => Value<CompiledResult>;
|
|
|
10
10
|
* const createFetch = getDependency(build(app));
|
|
11
11
|
*
|
|
12
12
|
* export default {
|
|
13
|
-
* // Must be set as 'fetch' property of an object
|
|
14
13
|
* fetch(...args) {
|
|
15
14
|
* // Set up stuff...
|
|
16
15
|
* return (this.fetch = createFetch())(...args);
|
package/cloudflare/compiler.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{exportExpr,markExported}from"runtime-compiler";import{isHydrating}from"runtime-compiler/config";import{_hydrate,_load,loadToString as genericLoadToString}from"../generic/compiler.js";import{TMP_SCOPE,setHandlerArgs}from"../compilers/globals.js";export let loadToString=()=>`()=>{`+TMP_SCOPE[0]+`return `+genericLoadToString()+`}`;export let build=isHydrating?router=>(_hydrate(router,[0]),markExported()):router=>(setHandlerArgs(`(mr,mi,mec)`),_load(router),exportExpr(loadToString()));
|
package/cloudflare/index.d.ts
CHANGED
package/compilers/call.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{declareLocal,injectExternal}from"runtime-compiler";import{isHydrating}from"runtime-compiler/config";import{AsyncFunction}from"runtime-compiler/utils";import{
|
|
1
|
+
import{declareLocal,injectExternal}from"runtime-compiler";import{isHydrating}from"runtime-compiler/config";import{AsyncFunction}from"runtime-compiler/utils";import{TMP_SCOPE}from"./globals.js";export let buildCall=isHydrating?(scope,fn,_,argsCount)=>{injectExternal(fn);fn instanceof AsyncFunction&&(scope[0]|=1);fn.length>argsCount&&(scope[0]|=2);return``}:(scope,fn,args,argsCount)=>{let str=declareLocal(TMP_SCOPE,injectExternal(fn))+`(`+args;if(fn instanceof AsyncFunction){scope[0]|=1;str=`await `+str}if(fn.length>argsCount){scope[0]|=2;str+=`,mc`}return str+`)`};export let buildRouteCall=isHydrating?(self,scope,_,paramsCount)=>buildCall(scope,self[1],``,self[2].length+paramsCount):(self,scope,params,paramsCount)=>{let args=self[2];return args.length>0?paramsCount>0?buildCall(scope,self[1],args.join()+`,`+params,args.length+paramsCount):buildCall(scope,self[1],args.join(),args.length):paramsCount>0?buildCall(scope,self[1],params,paramsCount):buildCall(scope,self[1],``,0)};
|
package/compilers/globals.d.ts
CHANGED
|
@@ -13,9 +13,9 @@ export declare const setHandlerArgs: (str: string) => void;
|
|
|
13
13
|
/**
|
|
14
14
|
* Store local variables
|
|
15
15
|
*/
|
|
16
|
-
export declare let
|
|
16
|
+
export declare let TMP_SCOPE: Scope;
|
|
17
17
|
/**
|
|
18
18
|
* Check whether value is an error
|
|
19
19
|
*/
|
|
20
20
|
export declare let IS_ERR: Identifier<typeof isErr>;
|
|
21
|
-
export declare const
|
|
21
|
+
export declare const initScope: () => void;
|
package/compilers/globals.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{declareLocal,injectExternal}from"runtime-compiler";import{isErr}from"@safe-std/error";export let HANDLER_ARGS;export let setHandlerArgs=str=>{HANDLER_ARGS=str};export let
|
|
1
|
+
import{declareLocal,injectExternal}from"runtime-compiler";import{isErr}from"@safe-std/error";export let HANDLER_ARGS;export let setHandlerArgs=str=>{HANDLER_ARGS=str};export let TMP_SCOPE;export let IS_ERR;export let initScope=()=>{TMP_SCOPE=[`let mhh=['content-type','text/html'],mho={headers:mhh},mnf=new Response(null,{status:404});`,0];IS_ERR=declareLocal(TMP_SCOPE,injectExternal(isErr))};
|
package/compilers/scope.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{declareLocal}from"runtime-compiler";import{HANDLER_ARGS,
|
|
1
|
+
import{declareLocal}from"runtime-compiler";import{HANDLER_ARGS,TMP_SCOPE}from"./globals.js";export let wrapScope=(scope,content)=>{let flags=scope[0];(flags&2)===2&&(content=`let mh=[],mc={status:200,headers:mh};`+content);return(flags&1)===1?`return `+declareLocal(TMP_SCOPE,`async`+HANDLER_ARGS+`=>{`+content+`}`)+HANDLER_ARGS:content};
|
package/deno/compiler.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{exportExpr,markExported}from"runtime-compiler";import{isHydrating}from"runtime-compiler/config";import{_hydrate,_load,loadToString}from"../generic/compiler.js";import{setHandlerArgs}from"../compilers/globals.js";export let build=isHydrating?router=>(_hydrate(router,[0]),markExported()):router=>(setHandlerArgs(`(mr,mi)`),_load(router),exportExpr(loadToString()));
|
package/generic/compiler.d.ts
CHANGED
package/generic/compiler.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createRouter as createMethodRouter,insertItem as insertItemToMethodRouter}from"@mapl/router/method";import compileMethodRouter from"@mapl/router/method/compiler";import{countParams}from"@mapl/router/utils";import{
|
|
1
|
+
import{createRouter as createMethodRouter,insertItem as insertItemToMethodRouter}from"@mapl/router/method";import compileMethodRouter from"@mapl/router/method/compiler";import{countParams}from"@mapl/router/utils";import{exportScope,markExported}from"runtime-compiler";import{isHydrating}from"runtime-compiler/config";import{TMP_SCOPE,initScope,setHandlerArgs}from"../compilers/globals.js";import{wrapScope}from"../compilers/scope.js";let METHOD_ROUTER;let PARAM_MAP;let loadToMethodRouter=(router,scope,prefix,content)=>{for(let i=0,layers=router[0];i<layers.length;i++){let self=layers[i];content+=self[0](self,scope)}for(let i=0,routes=router[1];i<routes.length;i++){let route=routes[i];let routeScope=scope.slice();let routeContent=content;for(let j=2,paramCount=countParams(route[1]),params=PARAM_MAP[paramCount];j<route.length;j++){let self=route[j];routeContent+=self[0](self,routeScope,params,paramCount)}insertItemToMethodRouter(METHOD_ROUTER,route[0],prefix+route[1],wrapScope(routeScope,routeContent))}for(let i=2;i<router.length;i++){let childRouter=router[i];loadToMethodRouter(childRouter[1],scope.slice(),childRouter[0]===`/`?prefix:prefix+childRouter[0],content)}};export let _load=router=>{initScope();METHOD_ROUTER=createMethodRouter();PARAM_MAP=[``,`q0`];for(let i=1;i<=8;i++)PARAM_MAP.push(`${PARAM_MAP[i]},q${i}`);loadToMethodRouter(router,[0],``,``)};export let loadToString=()=>`(mr)=>{${compileMethodRouter(METHOD_ROUTER,`mr.method`,`let mu=mr.url,s=mu.indexOf('/',10)+1,e=mu.indexOf('?',s),p=e===-1?mu.slice(s):mu.slice(s,e);`,0)}return mnf}`;export let _hydrate=(router,scope)=>{for(let i=0,layers=router[0];i<layers.length;i++){let self=layers[i];self[0](self,scope)}for(let i=0,routes=router[1];i<routes.length;i++)for(let j=2,route=routes[i],routeScope=scope.slice(),paramCount=countParams(route[1]);j<route.length;j++){let self=route[j];self[0](self,routeScope,``,paramCount)}for(let i=2;i<router.length;i++)_hydrate(router[i][1],scope.slice())};export let build=isHydrating?router=>(_hydrate(router,[0]),markExported()):router=>(setHandlerArgs(`(mr)`),_load(router),exportScope(TMP_SCOPE,loadToString()));
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@mapl/web","version":"0.6.
|
|
1
|
+
{"name":"@mapl/web","version":"0.6.3","description":"A compiled web framework for all runtimes","keywords":["fast","lightweight","cross-runtime","framework","web","backend"],"repository":{"type":"git","url":"git+https://github.com/mapljs/web.git"},"license":"MIT","type":"module","main":"./index.js","types":"./index.d.ts","dependencies":{"@mapl/router":"^0.8.4","@safe-std/error":"^2.0.4","runtime-compiler":"^3.1.1"},"exports":{"./utils":"./utils.js","./constants":"./constants.js","./router":"./router.js","./cloudflare/compiler":"./cloudflare/compiler.js",".":"./index.js","./response":"./response.js","./cloudflare":"./cloudflare/index.js","./layer":"./layer.js","./bun/compiler/router":"./bun/compiler/router.js","./generic/compiler":"./generic/compiler.js","./compilers/call":"./compilers/call.js","./compilers/globals":"./compilers/globals.js","./deno/compiler":"./deno/compiler.js","./compilers/scope":"./compilers/scope.js","./deno":"./deno/index.js","./bun":"./bun/index.js","./bun/compiler":"./bun/compiler/index.js","./generic":"./generic/index.js"}}
|
package/router.d.ts
CHANGED
package/router.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{argsToArray}from"./utils.js";export let init=argsToArray;export let handle=argsToArray;export let mount=argsToArray;let GET=[`GET`];export let get=(...args)=>GET.concat(args);let POST=[`POST`];export let post=(...args)=>POST.concat(args);let PUT=[`PUT`];export let put=(...args)=>PUT.concat(args);let DELETE=[`DELETE`];export let del=(...args)=>DELETE.concat(args);let PATCH=[`PATCH`];export let patch=(...args)=>PATCH.concat(args);let OPTIONS=[`OPTIONS`];export let options=(...args)=>OPTIONS.concat(args);
|
|
1
|
+
import{argsToArray}from"./utils.js";export let init=argsToArray;export let handle=argsToArray;export let mount=argsToArray;let GET=[`GET`];export let get=(...args)=>GET.concat(args);let POST=[`POST`];export let post=(...args)=>POST.concat(args);let PUT=[`PUT`];export let put=(...args)=>PUT.concat(args);let DELETE=[`DELETE`];export let del=(...args)=>DELETE.concat(args);let PATCH=[`PATCH`];export let patch=(...args)=>PATCH.concat(args);let OPTIONS=[`OPTIONS`];export let options=(...args)=>OPTIONS.concat(args);
|