@mapl/web 0.0.8 → 0.1.1

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/README.md CHANGED
@@ -1 +1,21 @@
1
- A fast Web Standard framework.
1
+ # `@mapl/web`
2
+ A compiled web framework for all runtimes.
3
+
4
+ ```ts
5
+ import { router, handle, layer, compile } from '@mapl/web';
6
+
7
+ const api = router.init(
8
+ [],
9
+ [ handle.get('/', () => 'Hi') ]
10
+ );
11
+
12
+ const app = router.init(
13
+ [ layer.attach('id', () => performance.now()) ],
14
+ [ handle.get('/path', (c) => c.id) ],
15
+ { '/api': api }
16
+ );
17
+
18
+ export default {
19
+ fetch: router.compile(app)
20
+ };
21
+ ```
package/constants.d.ts CHANGED
@@ -1,10 +1,12 @@
1
- export * from '@mapl/framework/constants';
1
+ export * from "@mapl/framework/constants.js";
2
2
  export declare const WEB: string;
3
3
  export declare const CTX_FN: string;
4
4
  export declare const CTX_INIT: string;
5
5
  export declare const PARSE_PATH: string;
6
6
  export declare const CHTML: string;
7
7
  export declare const CJSON: string;
8
+ export declare const OHTML: string;
9
+ export declare const OJSON: string;
8
10
  export declare const R404: string;
9
11
  export declare const R400: string;
10
12
  export declare const GLOBALS: string;
package/constants.js CHANGED
@@ -1 +1 @@
1
- import{MAPL,HEADERS,CTX,PATH,REQ,URL,PATH_START,PATH_END}from"@mapl/framework/constants";export*from"@mapl/framework/constants";export let WEB=MAPL+"w";export let CTX_FN=WEB+"c";export let CTX_INIT="let "+HEADERS+"=[],"+CTX+"="+CTX_FN+"("+REQ+","+HEADERS+");";export let PARSE_PATH="let "+URL+"="+REQ+".url,"+PATH_START+"="+URL+'.indexOf("/",12)+1,'+PATH_END+"="+URL+'.indexOf("?",'+PATH_START+"),"+PATH+"="+PATH_END+"===-1?"+URL+".slice("+PATH_START+"):"+URL+".substring("+PATH_START+","+PATH_END+");";export let CHTML=WEB+"h";export let CJSON=WEB+"j";export let R404=WEB+"n";export let R400=WEB+"b";export let GLOBALS="let ["+CHTML+","+CJSON+']=["text/html","application/json"].map(c=>["content-type",c]),['+R404+","+R400+"]=[404,400].map(s=>new Response(null,{status:s}));";
1
+ import{MAPL,HEADERS,CTX,PATH,REQ,URL,PATH_START,PATH_END,TMP}from"@mapl/framework/constants.js";export*from"@mapl/framework/constants.js";export let WEB=MAPL+`w`;export let CTX_FN=WEB+`c`;export let CTX_INIT=`let `+HEADERS+`=[],`+CTX+`=`+CTX_FN+`(`+REQ+`,`+HEADERS+`);`;export let PARSE_PATH=`let `+URL+`=`+REQ+`.url,`+PATH_START+`=`+URL+`.indexOf("/",12)+1,`+PATH_END+`=`+URL+`.indexOf("?",`+PATH_START+`),`+PATH+`=`+PATH_END+`===-1?`+URL+`.slice(`+PATH_START+`):`+URL+`.substring(`+PATH_START+`,`+PATH_END+`);`;export let CHTML=WEB+`h`;export let CJSON=WEB+`j`;export let OHTML=WEB+`oh`;export let OJSON=WEB+`oj`;export let R404=WEB+`n`;export let R400=WEB+`b`;export let GLOBALS=`let `+TMP+`=["text/html","application/json"].map(c=>["Content-Type",c]),[`+CHTML+`,`+CJSON+`]=`+TMP+`,[`+OHTML+`,`+OJSON+`]=`+TMP+`.map(c=>({headers:[c]})),[`+R404+`,`+R400+`]=[404,400].map(s=>new Response(null,{status:s}));`;
@@ -0,0 +1,3 @@
1
+ import type { AnyRouter } from "./index.js";
2
+ declare const _default: (router: AnyRouter) => ((req: Request) => any);
3
+ export default _default;
@@ -0,0 +1 @@
1
+ import{compileGroup,createArgSet,isFuncAsync}from"@mapl/framework";import{o2}from"@mapl/router/tree/compiler.js";import compile from"@mapl/router/method/compiler.js";import{countParams}from"@mapl/router/path/index.js";import{isErr}from"safe-throw";import createContext from"./context.js";let paramArgs=createArgSet(new Array(16).fill(0).map((_1,i)=>`q`+i));let compileReturn=(state,dat,fnAsync,scopeAsync,contextCreated,result)=>{let typ=dat.type;if(typ===`raw`)return`return `+result;if(fnAsync)result=`await `+result;let str=typ==null?`return new Response(`+result+(contextCreated?`,c)`:`)`):contextCreated?`mh.push(`+(typ===`json`?`mwj`:`mwh`)+`);return new Response(`+(typ===`json`?`JSON.stringify(`+result+`)`:result)+`,c)`:`return new Response(`+(typ===`json`?`JSON.stringify(`+result+`),mwoj`:result+`,mwoh`)+`)`;return scopeAsync?str+`})()`:fnAsync?`return (async()=>{`+str+`})()`:str};export default router=>{let baseRouter={};let dependencies=[];compileGroup(router,[baseRouter,dependencies,`let mh=[],c=mwc(r,mh);`,(fn,dat,path,state,scope)=>{let call=`f`+state[1].push(fn)+`(`;let paramCount=countParams(path);if(paramCount>0)call+=paramArgs[paramCount];if(fn.length>paramCount){call+=paramCount===0?`c`:`,c`;if(!scope[1])return state[2]+compileReturn(state,dat,isFuncAsync(fn),scope[0],true,call+`)`)}return compileReturn(state,dat,isFuncAsync(fn),scope[0],scope[1],call+`)`)},(fn,dat,state,scope)=>{let call=`f`+state[1].push(fn)+`(t`;if(fn.length>1){call+=`,c`;if(!scope[1])return state[2]+compileReturn(state,dat,isFuncAsync(fn),scope[0],true,call+`)`)}return compileReturn(state,dat,isFuncAsync(fn),scope[0],scope[1],call+`)`)}],[false,false,null,`return mwb`],``,``);return Function(`me`,`mwc`,...dependencies.map((_,i)=>`f`+(i+1)),`let t=["text/html","application/json"].map(c=>["Content-Type",c]),[mwh,mwj]=t,[mwoh,mwoj]=t.map(c=>({headers:[c]})),[mwn,mwb]=[404,400].map(s=>new Response(null,{status:s}));return(r)=>{`+compile(baseRouter,o2,`r.method`,`let u=r.url,s=u.indexOf("/",12)+1,e=u.indexOf("?",s),p=e===-1?u.slice(s):u.substring(s,e);`,1)+`return mwn}`)(isErr,createContext,...dependencies)};
@@ -0,0 +1,10 @@
1
+ export type Header = [string, string] | readonly [string, string];
2
+ export type Headers = Header[];
3
+ export interface Context {
4
+ req: Request;
5
+ headers: Headers;
6
+ status?: number;
7
+ statusText?: string;
8
+ }
9
+ declare const _default: (req: Request, headers: Headers) => Context;
10
+ export default _default;
@@ -0,0 +1 @@
1
+ import{proto}from"./utils.js";let ctxProto=proto({req:void 0,headers:void 0,status:200});export default (req,headers)=>{let obj=Object.create(ctxProto);obj.headers=headers;obj.req=req;return obj};
@@ -0,0 +1,62 @@
1
+ import type { Err } from "safe-throw";
2
+ import type { Context } from "./context.js";
3
+ import { type Tag } from "./utils.js";
4
+ import type { RouterTag } from "./index.js";
5
+ export type ErrorHandler<E extends Err = Err> = (err: E, c: Context) => any;
6
+ export type Handler<
7
+ Params extends string[] = string[],
8
+ T extends {} = Record<string, any>
9
+ > = (...args: [...params: Params, c: Context & T]) => any;
10
+ export type DefineHandler = <
11
+ P extends string,
12
+ S = {}
13
+ >(path: P, handler: Handler<InferPath<P>, Required<S>>, ...dat: HandlerData[]) => HandlerTag<S>;
14
+ export interface HandlerData extends Record<symbol, any> {
15
+ type?: "json" | "html" | "raw";
16
+ }
17
+ export type InferPath<T extends string> = T extends `${string}*${infer Next}` ? Next extends "*" ? [string] : [string, ...InferPath<Next>] : [];
18
+ declare const handlerTag: unique symbol;
19
+ export type HandlerTag<T> = Tag<T, typeof handlerTag>;
20
+ /**
21
+ * Return JSON
22
+ */
23
+ export declare const json: {
24
+ readonly type: "json"
25
+ };
26
+ /**
27
+ * Return HTML
28
+ */
29
+ export declare const html: {
30
+ readonly type: "html"
31
+ };
32
+ /**
33
+ * Return raw Response
34
+ */
35
+ export declare const raw: {
36
+ readonly type: "raw"
37
+ };
38
+ /**
39
+ * Handle errors of a router
40
+ * @param f
41
+ */
42
+ export declare const error: <const E extends Err>(r: RouterTag<E>, f: ErrorHandler<E>, ...dat: HandlerData[]) => RouterTag<never>;
43
+ /**
44
+ * Handle requests to a path with a specific method
45
+ * @param method
46
+ * @param path
47
+ * @param handler
48
+ * @param dat
49
+ */
50
+ export declare const route: <
51
+ P extends string,
52
+ S = {}
53
+ >(method: string, path: P, handler: Handler<InferPath<P>, Required<S>>, ...dat: HandlerData[]) => HandlerTag<S>;
54
+ export declare const any: DefineHandler;
55
+ export declare const get: DefineHandler;
56
+ export declare const post: DefineHandler;
57
+ export declare const put: DefineHandler;
58
+ export declare const del: DefineHandler;
59
+ export declare const patch: DefineHandler;
60
+ export declare const options: DefineHandler;
61
+ export declare const trace: DefineHandler;
62
+ export {};
@@ -0,0 +1 @@
1
+ import{ALL}from"@mapl/router/method/index.js";import{proto}from"./utils.js";export let json={type:`json`};export let html={type:`html`};export let raw={type:`raw`};export let error=(r,f,...dat)=>{r[2]=[f,proto(...dat)];return r};export let route=(method,path,handler,...dat)=>[method,path,handler,proto(...dat)];export let any=(...a)=>route(ALL,...a);export let get=(...a)=>route(`GET`,...a);export let post=(...a)=>route(`POST`,...a);export let put=(...a)=>route(`PUT`,...a);export let del=(...a)=>route(`DELETE`,...a);export let patch=(...a)=>route(`PATCH`,...a);export let options=(...a)=>route(`OPTIONS`,...a);export let trace=(...a)=>route(`TRACE`,...a);
@@ -0,0 +1,15 @@
1
+ import type { HandlerTag } from "./handler.js";
2
+ import type { AnyMiddlewareTypes } from "./middleware.js";
3
+ import type { Tag, ToNever, UnionToIntersection } from "./utils.js";
4
+ declare const routerTag: unique symbol;
5
+ export type RouterTag<E = any> = Tag<E, typeof routerTag>;
6
+ export type InferError<
7
+ T extends AnyMiddlewareTypes[],
8
+ S extends Record<string, RouterTag>
9
+ > = ToNever<S[keyof S][typeof routerTag] | T[number][0]>;
10
+ export type InferHandler<T extends AnyMiddlewareTypes[]> = HandlerTag<T extends [] ? {} : UnionToIntersection<T[number][1]>>;
11
+ declare const _default: <
12
+ const T extends AnyMiddlewareTypes[],
13
+ const S extends Record<string, RouterTag> = {}
14
+ >(middlewares: T, handlers: InferHandler<T>[], children?: S) => RouterTag<InferError<T, S>>;
15
+ export default _default;
package/core/index.js ADDED
@@ -0,0 +1 @@
1
+ export default (middlewares,handlers,children)=>[middlewares,handlers,null,children==null?[]:Object.entries(children)];
@@ -0,0 +1,19 @@
1
+ import type { InferErr } from "safe-throw";
2
+ import type { AwaitedReturn } from "./utils.js";
3
+ import type { Context } from "./context.js";
4
+ export type MiddlewareHandler = (c: Context) => any;
5
+ export type MiddlewareTypes<
6
+ E,
7
+ S
8
+ > = [err: E, state: S];
9
+ export type AnyMiddlewareTypes = MiddlewareTypes<any, any>;
10
+ export declare const tap: (f: MiddlewareHandler) => MiddlewareTypes<never, {}>;
11
+ export declare const attach: <
12
+ Prop extends string,
13
+ const T extends MiddlewareHandler
14
+ >(prop: Prop, f: T) => MiddlewareTypes<never, Record<Prop, AwaitedReturn<T>>>;
15
+ export declare const validate: <const T extends MiddlewareHandler>(f: T) => MiddlewareTypes<InferErr<AwaitedReturn<T>>, {}>;
16
+ export declare const parse: <
17
+ Prop extends string,
18
+ const T extends MiddlewareHandler
19
+ >(prop: Prop, f: T) => MiddlewareTypes<InferErr<AwaitedReturn<T>>, Record<Prop, AwaitedReturn<T>>>;
@@ -0,0 +1 @@
1
+ export let tap=f=>[0,f];export let attach=(prop,f)=>[1,f,prop];export let validate=f=>[2,f];export let parse=(prop,f)=>[3,f,prop];
@@ -1,3 +1,8 @@
1
- export type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends ((x: infer I) => void) ? I : never;
1
+ export type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
2
2
  export type AwaitedReturn<U extends (...a: any[]) => any> = Awaited<ReturnType<U>>;
3
+ export type ToNever<T> = unknown extends T ? never : T;
4
+ export type Tag<
5
+ S,
6
+ T extends symbol
7
+ > = Record<T, S>;
3
8
  export declare const proto: <T extends any[]>(...f: T) => UnionToIntersection<T[number]>;
package/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
- export { default as router } from './router';
2
- import type { AnyRouter } from './router';
3
- export declare const compile: (app: AnyRouter) => (req: Request) => any;
1
+ export { default as router } from "./core/index.js";
2
+ export * as handle from "./core/handler.js";
3
+ export * as layer from "./core/middleware.js";
4
+ export { default as compile } from "./core/compile.js";
5
+ export { st } from "safe-throw";
package/index.js CHANGED
@@ -1 +1 @@
1
- export{default as router}from"./router";import genericCompile from"./router/compiler";export let compile=(app)=>genericCompile(app,[]);
1
+ export{default as router}from"./core/index.js";export*as handle from"./core/handler.js";export*as layer from"./core/middleware.js";export{default as compile}from"./core/compile.js";export{st}from"safe-throw";
package/package.json CHANGED
@@ -1,41 +1,25 @@
1
1
  {
2
- "name": "@mapl/web",
3
- "version": "0.0.8",
4
- "description": "A compiled web standard framework",
5
- "keywords": [
6
- "fast",
7
- "compiled",
8
- "cross-runtime",
9
- "framework",
10
- "web",
11
- "backend"
12
- ],
13
- "license": "MIT",
14
- "type": "module",
15
- "main": "./index.js",
16
- "types": "./index.d.ts",
17
- "scripts": {
18
- "task": "bun scripts/task.ts",
19
- "build:test": "bun task build && bun test",
20
- "build:publish": "bun task build && bun task report-size && bun task publish",
21
- "lint": "eslint ./src",
22
- "lint:fix": "eslint ./src --fix"
23
- },
24
- "devDependencies": {
25
- "@stylistic/eslint-plugin": "latest",
26
- "@types/bun": "latest",
27
- "@types/uglify-js": "latest",
28
- "eslint": "latest",
29
- "eslint-plugin-jsdoc": "latest",
30
- "mitata": "latest",
31
- "terser": "^5.39.0",
32
- "tsx": "latest",
33
- "typescript": "latest",
34
- "typescript-eslint": "latest"
35
- },
36
- "dependencies": {
37
- "@mapl/framework": "^0.1.0",
38
- "@mapl/router": "^0.4.13",
39
- "safe-throw": "^0.0.9"
40
- }
2
+ "name": "@mapl/web",
3
+ "version": "0.1.1",
4
+ "description": "A compiled web framework for all runtimes",
5
+ "keywords": [],
6
+ "license": "MIT",
7
+ "type": "module",
8
+ "main": "./index.js",
9
+ "types": "./index.d.ts",
10
+ "dependencies": {
11
+ "@mapl/framework": "^0.1.3",
12
+ "@mapl/router": "^0.4.15",
13
+ "safe-throw": "^0.5.1"
14
+ },
15
+ "exports": {
16
+ "./constants": "./constants.js",
17
+ "./core/compile": "./core/compile.js",
18
+ "./core/context": "./core/context.js",
19
+ ".": "./index.js",
20
+ "./core/utils": "./core/utils.js",
21
+ "./core/middleware": "./core/middleware.js",
22
+ "./core": "./core/index.js",
23
+ "./core/handler": "./core/handler.js"
41
24
  }
25
+ }
@@ -1,6 +0,0 @@
1
- import { type Err } from 'safe-throw';
2
- import type { Context } from '../router/context';
3
- export type TokenParser = (token: string, c: Context) => Promise<any>;
4
- export type MalformedErr = Err<'Malformed bearer token'>;
5
- declare const _default: <const T extends TokenParser>(verifier: T) => (c: Parameters<T>[1]) => ReturnType<T> | Promise<MalformedErr>;
6
- export default _default;
package/modules/bearer.js DELETED
@@ -1 +0,0 @@
1
- export default (verifier)=>async(c)=>{let tok=c.req.headers.get("Authorization");return typeof tok==="string"&&tok.startsWith("Bearer ")&&tok.length>7?verifier(tok,c):malformedErr};import{err}from"safe-throw";let malformedErr=Promise.resolve(err("Malformed bearer token"));
@@ -1,3 +0,0 @@
1
- import type { AnyRouter } from '.';
2
- declare const _default: (router: AnyRouter) => (req: Request) => any;
3
- export default _default;
@@ -1 +0,0 @@
1
- export default (router)=>{let baseRouter={};let dependencies=[];compileGroup(router._,[baseRouter,dependencies,"let mh=[],c=mwc(r,mh);",(fn,dat,path,state,scope)=>{let call="f"+state[1].push(fn)+"(";let paramCount=path[0].length;if(paramCount>0)call+=paramArgs[paramCount];if(fn.length>paramCount){call+=paramCount===0?"c":",c";if(!scope[1])return state[2]+compileReturn(state,dat,isFuncAsync(fn),scope[0],true,call+")")}return compileReturn(state,dat,isFuncAsync(fn),scope[0],scope[1],call+")")},(fn,dat,state,scope)=>{let call="f"+state[1].push(fn)+"(t";if(fn.length>1){call+=",c";if(!scope[1])return state[2]+compileReturn(state,dat,isFuncAsync(fn),scope[0],true,call+")")}return compileReturn(state,dat,isFuncAsync(fn),scope[0],scope[1],call+")")},transformRoute],[false,false,null,"return mwb"],"","");return Function("me","mwc",...dependencies.map((_,i)=>"f"+(i+1)),'let [mwh,mwj]=["text/html","application/json"].map(c=>["content-type",c]),[mwn,mwb]=[404,400].map(s=>new Response(null,{status:s}));return(r)=>{'+compile(baseRouter,o2,"r.method",'let u=r.url,s=u.indexOf("/",12)+1,e=u.indexOf("?",s),p=e===-1?u.slice(s):u.substring(s,e);',1)+"return mwn}")(isErr,createContext,...dependencies)};import{compileGroup,createArgSet,isFuncAsync}from"@mapl/framework";import{o2}from"@mapl/router/tree/compiler";import compile from"@mapl/router/method/compiler";import{transformRoute}from"@mapl/router/transform";import{isErr}from"safe-throw";import{createContext}from"./context";let paramArgs=createArgSet(new Array(16).fill(0).map((_1,i)=>"q"+i));let compileReturn=(state,dat,fnAsync,scopeAsync,contextCreated,result)=>{let typ=dat.type;if(typ==="raw")return"return "+result;if(fnAsync)result="await "+result;let str=typ==null?"return new Response("+result+(contextCreated?",c)":")"):(contextCreated?"":state[2])+"mh.push("+(typ==="json"?"mwj":"mwh")+");return new Response("+(typ==="json"?"JSON.stringify("+result+")":result)+",c)";return fnAsync&&!scopeAsync?"return (async()=>{"+str+"})()":scopeAsync?str+"})()":str};
@@ -1,9 +0,0 @@
1
- export type Header = [string, string] | readonly [string, string];
2
- export type Headers = Header[];
3
- export interface Context {
4
- req: Request;
5
- headers: Headers;
6
- status?: number;
7
- statusText?: string;
8
- }
9
- export declare const createContext: (req: Request, headers: Headers) => Context;
package/router/context.js DELETED
@@ -1 +0,0 @@
1
- import{proto}from"./utils";let ctxProto=proto({req:null,headers:null,status:200});export let createContext=(req,headers)=>{let obj=Object.create(ctxProto);obj.headers=headers;obj.req=req;return obj};
@@ -1,14 +0,0 @@
1
- import type { Group } from '@mapl/framework';
2
- import type { Err } from 'safe-throw';
3
- import type { Context } from './context';
4
- export type ErrorFunc<E extends Err = Err, T extends {} = Record<string, any>, Args extends any[] = any[]> = (err: E, c: Context & T, ...args: Args) => any;
5
- export type HandlerFunc<Params extends string[] = string[], T extends {} = Record<string, any>> = (...args: [...params: Params, c: Context & T]) => any;
6
- export type MiddlewareFunc<T extends {} = Record<string, any>> = (c: Context & T) => any;
7
- /**
8
- * Basic information to compile
9
- */
10
- export interface Data {
11
- type?: 'json' | 'html' | 'raw';
12
- }
13
- export type HandlerData = Data & Record<symbol, any>;
14
- export type HandlerGroup = Group<ErrorFunc, HandlerFunc, HandlerData>;
package/router/index.d.ts DELETED
@@ -1,22 +0,0 @@
1
- import type { Err, InferErr, InferResult } from 'safe-throw';
2
- import type { InferRoute } from '@mapl/router/transform';
3
- import { type AwaitedReturn } from './utils';
4
- import type { ErrorFunc, HandlerData, HandlerFunc, HandlerGroup, MiddlewareFunc } from './handler';
5
- import { type Methods } from './method';
6
- export type RouteRegister<in out State extends {}, in out E extends Err> = {
7
- [K in Methods | 'any']: <Path extends string>(path: Path, handler: HandlerFunc<InferRoute<Path>, State>, ...data: HandlerData[]) => Router<State, E>;
8
- };
9
- export interface Router<in out State extends {} = {}, in out E extends Err = never> extends RouteRegister<State, E> {
10
- _state: State;
11
- _err: E;
12
- _: HandlerGroup;
13
- apply: (fn: MiddlewareFunc<State>) => this;
14
- check: <const T extends MiddlewareFunc<State>>(fn: T) => Router<State, E | InferErr<AwaitedReturn<T>>>;
15
- set: <Prop extends string, const T extends MiddlewareFunc<State>>(prop: Prop, fn: T) => Router<State & Record<Prop, AwaitedReturn<T>>, E>;
16
- parse: <Prop extends string, const T extends MiddlewareFunc<State>>(prop: Prop, fn: T) => Router<State & Record<Prop, InferResult<AwaitedReturn<T>>>, E | InferErr<AwaitedReturn<T>>>;
17
- route: <Prefix extends string, const App extends Router<any, any>>(prefix: Prefix, app: App) => this;
18
- err: (fn: ErrorFunc<E, State>, ...data: HandlerData[]) => this;
19
- }
20
- export type AnyRouter = Router<any, any>;
21
- declare const _default: () => Router<[]>;
22
- export default _default;
package/router/index.js DELETED
@@ -1 +0,0 @@
1
- export default ()=>{let obj=Object.create(routerProto);obj._=[[],[],null,[]];return obj};import{proto}from"./utils";import{ALL,METHODS}from"./method";let createMethodRegister=(method)=>function(path,handler,...data){this._[1].push([method,path,handler,proto(...data)]);return this};let routerProto=proto({_:null,apply(f){this._[0].push([0,f]);return this},check(f){this._[0].push([2,f]);return this},set(prop,f){this._[0].push([1,f,prop]);return this},parse(prop,f){this._[0].push([3,f,prop]);return this},route(prefix,app){this._[3].push([prefix,app._]);return this},any:createMethodRegister(ALL),err(f,...data){this._[2]=[f,proto(...data)];return this}},Object.fromEntries(METHODS.map((method)=>[method,createMethodRegister(method.toUpperCase())])));
@@ -1,5 +0,0 @@
1
- import { ALL } from '@mapl/router/method';
2
- export declare const METHODS: readonly ["get", "post", "put", "delete", "patch", "options", "trace"];
3
- export type Methods = typeof METHODS[number];
4
- export type RequestMethod = Uppercase<Methods> | ALL | (string & {});
5
- export { ALL };
package/router/method.js DELETED
@@ -1 +0,0 @@
1
- import{ALL}from"@mapl/router/method";export let METHODS=["get","post","put","delete","patch","options","trace"];export{ALL};
File without changes