@mapl/web 0.1.13 → 0.1.16

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/core/handler.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { Err } from "@safe-std/error";
2
2
  import type { Context } from "./context.js";
3
3
  import type { RouterTag } from "./index.js";
4
+ import type { RequestMethod } from "./utils.js";
4
5
  export type ErrorHandler<E extends Err = Err> = (err: E, c: Context) => any;
5
6
  export type Handler<
6
7
  Params extends string[] = string[],
@@ -51,7 +52,7 @@ export declare const error: <const E extends Err>(r: RouterTag<E>, f: ErrorHandl
51
52
  export declare const route: <
52
53
  P extends string,
53
54
  S = {}
54
- >(method: string, path: P, handler: Handler<InferPath<P>, Required<S>>, ...dat: HandlerData[]) => HandlerTag<S>;
55
+ >(method: RequestMethod, path: P, handler: Handler<InferPath<P>, Required<S>>, ...dat: HandlerData[]) => HandlerTag<S>;
55
56
  export declare const any: DefineHandler;
56
57
  export declare const get: DefineHandler;
57
58
  export declare const post: DefineHandler;
package/core/index.d.ts CHANGED
@@ -1,17 +1,12 @@
1
1
  import type { HandlerTag } from "./handler.js";
2
2
  import type { AnyMiddlewareTypes } from "./middleware.js";
3
3
  import type { UnionToIntersection } from "./utils.js";
4
- declare const routerTag: unique symbol;
4
+ declare const _: unique symbol;
5
5
  export interface RouterTag<E = any> {
6
- [routerTag]: E;
6
+ [_]: E;
7
7
  }
8
- export type InferError<
9
- T extends AnyMiddlewareTypes[],
10
- S extends Record<string, RouterTag>
11
- > = S[keyof S][typeof routerTag] | T[number][0];
12
- export type InferHandler<T extends AnyMiddlewareTypes[]> = HandlerTag<T extends [] ? {} : UnionToIntersection<T[number][1]>>;
13
8
  declare const _default: <
14
9
  const T extends AnyMiddlewareTypes[],
15
10
  const S extends Record<string, RouterTag> = {}
16
- >(middlewares: T, handlers: InferHandler<T>[], children?: S) => RouterTag<InferError<T, S>>;
11
+ >(middlewares: T, handlers: HandlerTag<T extends [] ? {} : UnionToIntersection<T[number][1]>>[], children?: S) => RouterTag<S[keyof S][typeof _] | T[number][0]>;
17
12
  export default _default;
@@ -1,4 +1,4 @@
1
- import type { InferErr } from "@safe-std/error";
1
+ import type { InferErr, InferResult } from "@safe-std/error";
2
2
  import type { AwaitedReturn } from "./utils.js";
3
3
  import type { Context } from "./context.js";
4
4
  export type MiddlewareHandler = (c: Context) => any;
@@ -16,4 +16,4 @@ export declare const validate: <const T extends MiddlewareHandler>(f: T) => Midd
16
16
  export declare const parse: <
17
17
  Prop extends string,
18
18
  const T extends MiddlewareHandler
19
- >(prop: Prop, f: T) => MiddlewareTypes<InferErr<AwaitedReturn<T>>, Record<Prop, AwaitedReturn<T>>>;
19
+ >(prop: Prop, f: T) => MiddlewareTypes<InferErr<AwaitedReturn<T>>, Record<Prop, InferResult<AwaitedReturn<T>>>>;
package/core/utils.d.ts CHANGED
@@ -1,2 +1,3 @@
1
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 RequestMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "OPTIONS" | "TRACE" | (string & {});
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@mapl/web",
3
- "version": "0.1.13",
3
+ "version": "0.1.16",
4
4
  "description": "A compiled web framework for all runtimes",
5
- "keywords": [],
5
+ "keywords": ["fast", "lightweight", "cross-runtime", "framework", "web", "backend"],
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/mapljs/web.git"
@@ -12,19 +12,23 @@
12
12
  "main": "./index.js",
13
13
  "types": "./index.d.ts",
14
14
  "dependencies": {
15
- "@mapl/framework": "^0.2.7",
16
- "@mapl/router": "^0.6.0",
17
- "@safe-std/error": "^1.0.0"
15
+ "@mapl/framework": "^0.2.8",
16
+ "@mapl/router": "^0.6.2",
17
+ "@safe-std/error": "^1.0.1"
18
+ },
19
+ "optionalDependencies": {
20
+ "secure-headers": "^0.0.6"
18
21
  },
19
22
  "exports": {
20
23
  "./constants": "./constants.js",
21
- ".": "./index.js",
22
24
  "./core/compile": "./core/compile.js",
23
- "./core/context": "./core/context.js",
24
- "./core": "./core/index.js",
25
25
  "./core/utils": "./core/utils.js",
26
- "./utils/cors": "./utils/cors.js",
26
+ "./utils/secure-headers": "./utils/secure-headers.js",
27
+ "./utils/headers": "./utils/headers.js",
28
+ "./core": "./core/index.js",
27
29
  "./core/middleware": "./core/middleware.js",
30
+ "./core/context": "./core/context.js",
31
+ "./utils/cors": "./utils/cors.js",
28
32
  "./core/handler": "./core/handler.js"
29
33
  }
30
34
  }
package/utils/cors.d.ts CHANGED
@@ -1,17 +1,17 @@
1
1
  import { type MiddlewareTypes } from "../core/middleware.js";
2
- type HeaderValue = "*" | (string & {}) | [string, string, ...string[]];
3
- declare const header: unique symbol;
4
- interface Header {
5
- [header]: 0;
6
- }
7
- declare const preflight: unique symbol;
8
- interface PreflightHeader {
9
- [preflight]: 0;
10
- }
11
- export declare const allowMethods: (v: HeaderValue) => PreflightHeader;
12
- export declare const allowHeaders: (v: HeaderValue) => PreflightHeader;
2
+ import type { RequestMethod } from "../core/utils.js";
3
+ export type HeaderValue = "*" | (string & {}) | [string, string, ...string[]];
4
+ declare const _: unique symbol;
5
+ export type Header = [string, string] & {
6
+ [_]: 0
7
+ };
8
+ export type PreflightHeader = Header & {
9
+ [_]: 1
10
+ };
11
+ export declare const allowMethods: (v: RequestMethod[] | RequestMethod) => PreflightHeader;
12
+ export declare const allowHeaders: (v: string[] | string) => PreflightHeader;
13
13
  export declare const maxAge: (v: number) => PreflightHeader;
14
14
  export declare const allowCredentials: Header;
15
- export declare const exposeHeaders: (v: HeaderValue) => Header;
15
+ export declare const exposeHeaders: (v: string[] | string) => Header;
16
16
  export declare const init: (origins: HeaderValue, preflightHeaders?: PreflightHeader[], headers?: Header[]) => MiddlewareTypes<never, {}>;
17
17
  export {};
package/utils/cors.js CHANGED
@@ -1 +1 @@
1
- import{tap}from"../core/middleware.js";export let allowMethods=v=>[`Access-Control-Allow-Methods`,``+v];export let allowHeaders=v=>[`Access-Control-Allow-Headers`,``+v];export let maxAge=v=>[`Access-Control-Max-Age`,``+v];export let allowCredentials=[`Access-Control-Allow-Credentials`,`true`];export let exposeHeaders=v=>[`Access-Control-Expose-Headers`,``+v];export let init=(origins,preflightHeaders=[],headers=[])=>{if(origins!==`*`){headers.push([`Vary`,`Origin`]);if(Array.isArray(origins))return tap(c=>{let origin=c.req.headers.get(`Origin`);let headers=c.headers;headers.push([`Access-Control-Allow-Origin`,typeof origin===`string`&&origins.includes(origin)?origin:origins[0]]);headers.push(...headers);c.req.method===`OPTIONS`&&headers.push(...preflightHeaders)})}headers.push([`Access-Control-Allow-Origin`,origins]);return tap(c=>{c.headers.push(...headers);c.req.method===`OPTIONS`&&c.headers.push(...preflightHeaders)})};
1
+ import{tap}from"../core/middleware.js";export let allowMethods=v=>[`Access-Control-Allow-Methods`,v];export let allowHeaders=v=>[`Access-Control-Allow-Headers`,``+v];export let maxAge=v=>[`Access-Control-Max-Age`,``+v];export let allowCredentials=[`Access-Control-Allow-Credentials`,`true`];export let exposeHeaders=v=>[`Access-Control-Expose-Headers`,``+v];export let init=(origins,preflightHeaders=[],headers=[])=>{if(origins!==`*`){headers.push([`Vary`,`Origin`]);if(Array.isArray(origins))return tap(c=>{let origin=c.req.headers.get(`Origin`);c.headers.push([`Access-Control-Allow-Origin`,typeof origin===`string`&&origins.includes(origin)?origin:origins[0]],...headers);c.req.method===`OPTIONS`&&c.headers.push(...preflightHeaders)})}headers.push([`Access-Control-Allow-Origin`,origins]);return tap(c=>{c.headers.push(...headers);c.req.method===`OPTIONS`&&c.headers.push(...preflightHeaders)})};
@@ -0,0 +1,4 @@
1
+ import type { Header } from "../core/context.js";
2
+ import { type MiddlewareTypes } from "../core/middleware.js";
3
+ declare const _default: (headers: Headers | Header[] | Record<string, any>) => MiddlewareTypes<never, {}>;
4
+ export default _default;
@@ -0,0 +1 @@
1
+ import{tap}from"../core/middleware.js";export default headers=>(headers=Array.isArray(headers)?headers:headers instanceof Headers?headers.entries().toArray():Object.entries(headers),tap(c=>{c.headers.push(...headers)}));
@@ -0,0 +1,4 @@
1
+ import { type Options } from "secure-headers";
2
+ import { type MiddlewareTypes } from "../core/middleware.js";
3
+ declare const _default: (headers: Options) => MiddlewareTypes<never, {}>;
4
+ export default _default;
@@ -0,0 +1 @@
1
+ import secureHeaders from"secure-headers";import{tap}from"../core/middleware.js";export default headers=>(headers=Object.entries(secureHeaders(headers)),tap(c=>{c.headers.push(...headers)}));
package/index.d.ts DELETED
@@ -1,6 +0,0 @@
1
- export { default as router } from "./core/index.js";
2
- export type * from "./core/index.js";
3
- export * as handle from "./core/handler.js";
4
- export * as layer from "./core/middleware.js";
5
- export { default as compile } from "./core/compile.js";
6
- export * as cors from "./utils/cors.js";
package/index.js DELETED
@@ -1 +0,0 @@
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*as cors from"./utils/cors.js";