@mapl/web 0.5.3 → 0.5.4
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 +4 -5
- package/compiler/globals.d.ts +3 -0
- package/compiler/router.d.ts +2 -1
- package/generic/compiler.d.ts +1 -1
- package/generic/route.d.ts +2 -1
- package/generic/route.js +1 -1
- package/generic/types.d.ts +1 -0
- package/generic/utils/cors.d.ts +11 -0
- package/generic/utils/cors.js +1 -0
- package/index.d.ts +2 -3
- package/index.js +1 -1
- package/package.json +1 -35
package/README.md
CHANGED
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
A low level, fast and type-safe framework.
|
|
3
3
|
|
|
4
4
|
```ts
|
|
5
|
-
import { inject,
|
|
5
|
+
import { inject, router, send } from '@mapl/web';
|
|
6
6
|
import { compiler, request } from '@mapl/web/generic';
|
|
7
7
|
|
|
8
|
-
const app = router(
|
|
8
|
+
const app = router.init(
|
|
9
9
|
[],
|
|
10
10
|
[
|
|
11
|
-
|
|
11
|
+
router.get(
|
|
12
12
|
'/',
|
|
13
13
|
send.raw((c) => {
|
|
14
14
|
c.status = 418;
|
|
15
15
|
return 'Hi';
|
|
16
16
|
}),
|
|
17
17
|
),
|
|
18
|
-
|
|
18
|
+
router.post(
|
|
19
19
|
'/body',
|
|
20
20
|
send.json(
|
|
21
21
|
inject([request], async (req) => req.json())
|
|
@@ -27,5 +27,4 @@ const app = router(
|
|
|
27
27
|
export default {
|
|
28
28
|
fetch: compiler.buildSync(app)(),
|
|
29
29
|
};
|
|
30
|
-
|
|
31
30
|
```
|
package/compiler/globals.d.ts
CHANGED
package/compiler/router.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { State } from "./state.ts";
|
|
2
|
+
import type { RequestMethod } from "../generic/types.ts";
|
|
2
3
|
/*
|
|
3
4
|
* From what i've tested closures use 5x more
|
|
4
5
|
* memory than [fn, ...data] and runs slower too
|
|
@@ -10,7 +11,7 @@ export type RouteLayer<Params extends any[]> = [build: (data: any[], state: Stat
|
|
|
10
11
|
};
|
|
11
12
|
export type Route = [method: string, path: string, ...layers: RouteLayer<any[]>[]];
|
|
12
13
|
export type RegisterRouteFn = <const Path extends string>(path: Path, ...layers: RouteLayer<InferPath<Path>>[]) => Route;
|
|
13
|
-
export type RegisterRouteWithMethodFn = <const Path extends string>(method:
|
|
14
|
+
export type RegisterRouteWithMethodFn = <const Path extends string>(method: RequestMethod, path: Path, ...layers: RouteLayer<InferPath<Path>>[]) => Route;
|
|
14
15
|
export type Router = [layers: Layer[], routes: Route[]] | [layers: Layer[], routes: Route[], children: Record<string, Router>];
|
|
15
16
|
/**
|
|
16
17
|
* Run a layer
|
package/generic/compiler.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export declare const hydrateToDependency: (router: Router) => void;
|
|
|
18
18
|
* Use in `build` mode.
|
|
19
19
|
*
|
|
20
20
|
* @example
|
|
21
|
-
* `(${buildToString(app)})(hydrate(app));`
|
|
21
|
+
* `const fetch = (${buildToString(app)})(hydrate(app))();`
|
|
22
22
|
*/
|
|
23
23
|
export declare const buildToString: (router: Router) => string;
|
|
24
24
|
/**
|
package/generic/route.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RegisterRouteFn, RegisterRouteWithMethodFn } from "../compiler/router.ts";
|
|
1
|
+
import type { RegisterRouteFn, RegisterRouteWithMethodFn, Router } from "../compiler/router.ts";
|
|
2
2
|
export declare const get: RegisterRouteFn;
|
|
3
3
|
export declare const post: RegisterRouteFn;
|
|
4
4
|
export declare const put: RegisterRouteFn;
|
|
@@ -9,3 +9,4 @@ export declare const trace: RegisterRouteFn;
|
|
|
9
9
|
export declare const query: RegisterRouteFn;
|
|
10
10
|
export declare const any: RegisterRouteFn;
|
|
11
11
|
export declare const def: RegisterRouteWithMethodFn;
|
|
12
|
+
export declare const init: (layers: Router[0], routes: Router[1], children?: Router[2]) => Router;
|
package/generic/route.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
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 DEL=[`DELETE`];export let del=(...args)=>DEL.concat(args);let PATCH=[`PATCH`];export let patch=(...args)=>PATCH.concat(args);let OPTIONS=[`OPTIONS`];export let options=(...args)=>OPTIONS.concat(args);let TRACE=[`TRACE`];export let trace=(...args)=>TRACE.concat(args);let QUERY=[`QUERY`];export let query=(...args)=>QUERY.concat(args);let ANY=[``];export let any=(...args)=>ANY.concat(args);export let def=(...args)=>args;
|
|
1
|
+
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 DEL=[`DELETE`];export let del=(...args)=>DEL.concat(args);let PATCH=[`PATCH`];export let patch=(...args)=>PATCH.concat(args);let OPTIONS=[`OPTIONS`];export let options=(...args)=>OPTIONS.concat(args);let TRACE=[`TRACE`];export let trace=(...args)=>TRACE.concat(args);let QUERY=[`QUERY`];export let query=(...args)=>QUERY.concat(args);let ANY=[``];export let any=(...args)=>ANY.concat(args);export let def=(...args)=>args;export let init=(layers,routes,children)=>children==null?[layers,routes]:[layers,routes,children];
|
package/generic/types.d.ts
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Header, RequestMethod } from "../types.ts";
|
|
2
|
+
import type { Layer } from "../../compiler/router.ts";
|
|
3
|
+
export type PreflightHeader = Header & {
|
|
4
|
+
"~": 0;
|
|
5
|
+
};
|
|
6
|
+
export declare const allowMethods: (methods: [RequestMethod, RequestMethod, ...RequestMethod[]] | RequestMethod | "*") => PreflightHeader;
|
|
7
|
+
export declare const allowHeaders: (headers: string | string[]) => PreflightHeader;
|
|
8
|
+
export declare const maxAge: (seconds: number) => PreflightHeader;
|
|
9
|
+
export declare const allowCredentials: Header;
|
|
10
|
+
export declare const exposeHeaders: (headers: "*" | (string & {}) | [string, string, ...string[]]) => Header;
|
|
11
|
+
export declare const init: (origins: "*" | (string & {}) | [string, string, ...string[]], preflightHeaders?: [PreflightHeader, ...PreflightHeader[]], headers?: [Header, ...Header[]]) => Layer<any[]>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{isHydrating}from"runtime-compiler/config";import{injectDependency}from"runtime-compiler";import{injectArgsList}from"runtime-compiler/utils";export let allowMethods=methods=>[`access-control-allow-methods`,``+methods];export let allowHeaders=headers=>[`access-control-allow-headers`,``+headers];export let maxAge=seconds=>[`access-control-max-age`,``+seconds];export let allowCredentials=[`access-control-allow-credentials`,`true`];export let exposeHeaders=headers=>[`access-control-expose-headers`,``+headers];let hydrateInit=[(_,state)=>(state[1]=true,``),null,null,null];let buildInit=(layer,state)=>{state[1]=true;let origins=layer[1];let preflightHeaders=layer[2];let headers=layer[3]??[];if(origins!==`*`){headers.push([`vary`,`origin`]);if(Array.isArray(origins)){let str=`(r,h)=>{let o=r.headers.get("origin");h.push(["access-control-allow-origin",typeof o==="string"&&o===`+JSON.stringify(origins[1]);for(let i=2;i<origins.length;i++)str+=`||o===`+JSON.stringify(origins[i]);return injectDependency(str+`?o:`+JSON.stringify(origins[0])+`]);`+(headers.length>0?`h.push(`+injectArgsList(headers)+`);`:``)+(preflightHeaders!=null?`r.method==="OPTIONS"&&h.push(`+injectArgsList(preflightHeaders)+`)}`:`}`))+`(mr,mh);`}}headers.push([`access-control-allow-origin`,origins]);let pushHeaders=headers.length>0?`h.push(`+injectArgsList(headers)+`);`:``;return preflightHeaders!=null?injectDependency(`(r,h)=>{`+pushHeaders+`r.method==="OPTIONS"&&h.push(`+injectArgsList(preflightHeaders)+`)}`)+`(mr,mh);`:pushHeaders};export let init=isHydrating?()=>hydrateInit:(origin,preflightHeaders,headers)=>[buildInit,origin,preflightHeaders,headers];
|
package/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type { Router } from "./compiler/router.ts";
|
|
2
1
|
export * as send from "./generic/handlers.ts";
|
|
3
|
-
export * as
|
|
2
|
+
export * as router from "./generic/route.ts";
|
|
4
3
|
export * as layer from "./generic/layers.ts";
|
|
5
4
|
export * as parser from "./generic/parsers.ts";
|
|
6
5
|
export { inject } from "runtime-compiler/call";
|
|
7
|
-
export
|
|
6
|
+
export * as cors from "./generic/utils/cors.ts";
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*as send from"./generic/handlers.js";export*as
|
|
1
|
+
export*as send from"./generic/handlers.js";export*as router from"./generic/route.js";export*as layer from"./generic/layers.js";export*as parser from"./generic/parsers.js";export{inject}from"runtime-compiler/call";export*as cors from"./generic/utils/cors.js";
|
package/package.json
CHANGED
|
@@ -1,35 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@mapl/web",
|
|
3
|
-
"version": "0.5.3",
|
|
4
|
-
"description": "A compiled web framework for all runtimes",
|
|
5
|
-
"keywords": ["fast", "lightweight", "cross-runtime", "framework", "web", "backend"],
|
|
6
|
-
"repository": {
|
|
7
|
-
"type": "git",
|
|
8
|
-
"url": "git+https://github.com/mapljs/web.git"
|
|
9
|
-
},
|
|
10
|
-
"license": "MIT",
|
|
11
|
-
"type": "module",
|
|
12
|
-
"main": "./index.js",
|
|
13
|
-
"types": "./index.d.ts",
|
|
14
|
-
"dependencies": {
|
|
15
|
-
"@mapl/router": "^0.8.1",
|
|
16
|
-
"@safe-std/error": "^2.0.4",
|
|
17
|
-
"runtime-compiler": "^2.1.2"
|
|
18
|
-
},
|
|
19
|
-
"exports": {
|
|
20
|
-
"./constants": "./constants.js",
|
|
21
|
-
"./generic": "./generic/index.js",
|
|
22
|
-
".": "./index.js",
|
|
23
|
-
"./generic/route": "./generic/route.js",
|
|
24
|
-
"./generic/layers": "./generic/layers.js",
|
|
25
|
-
"./generic/types": "./generic/types.js",
|
|
26
|
-
"./bun": "./bun/index.js",
|
|
27
|
-
"./generic/handlers": "./generic/handlers.js",
|
|
28
|
-
"./compiler/call": "./compiler/call.js",
|
|
29
|
-
"./compiler/state": "./compiler/state.js",
|
|
30
|
-
"./compiler/globals": "./compiler/globals.js",
|
|
31
|
-
"./compiler/router": "./compiler/router.js",
|
|
32
|
-
"./generic/compiler": "./generic/compiler.js",
|
|
33
|
-
"./generic/parsers": "./generic/parsers.js"
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
{"name":"@mapl/web","version":"0.5.4","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.1","@safe-std/error":"^2.0.4","runtime-compiler":"^2.1.2"},"exports":{"./constants":"./constants.js","./generic/route":"./generic/route.js","./generic/handlers":"./generic/handlers.js",".":"./index.js","./generic/types":"./generic/types.js","./generic/layers":"./generic/layers.js","./generic/parsers":"./generic/parsers.js","./generic/utils/cors":"./generic/utils/cors.js","./generic/compiler":"./generic/compiler.js","./compiler/call":"./compiler/call.js","./compiler/state":"./compiler/state.js","./generic":"./generic/index.js","./compiler/router":"./compiler/router.js","./compiler/globals":"./compiler/globals.js","./bun":"./bun/index.js"}}
|