@taserjs/router 0.1.2 → 0.1.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 +0 -7
- package/dist/cjs/builder/constants.cjs +0 -6
- package/dist/cjs/builder/constants.cjs.map +1 -1
- package/dist/cjs/builder/constants.d.cts +0 -5
- package/dist/cjs/builder/middleware-unit.cjs +55 -0
- package/dist/cjs/builder/middleware-unit.cjs.map +1 -0
- package/dist/cjs/builder/middleware-unit.d.cts +18 -0
- package/dist/cjs/builder/middleware.cjs +2 -1
- package/dist/cjs/builder/middleware.cjs.map +1 -1
- package/dist/cjs/builder/route.cjs +6 -21
- package/dist/cjs/builder/route.cjs.map +1 -1
- package/dist/cjs/builder/router.cjs +0 -4
- package/dist/cjs/builder/router.cjs.map +1 -1
- package/dist/cjs/builder/router.d.cts +1 -11
- package/dist/cjs/define/middleware.cjs +10 -14
- package/dist/cjs/define/middleware.cjs.map +1 -1
- package/dist/cjs/define/middleware.d.cts +42 -31
- package/dist/cjs/index.cjs +2 -2
- package/dist/cjs/index.d.cts +2 -2
- package/dist/cjs/middleware/body-limit.cjs +3 -3
- package/dist/cjs/middleware/body-limit.cjs.map +1 -1
- package/dist/cjs/middleware/body-limit.d.cts +1 -1
- package/dist/cjs/middleware/compress.cjs +3 -3
- package/dist/cjs/middleware/compress.cjs.map +1 -1
- package/dist/cjs/middleware/compress.d.cts +1 -1
- package/dist/cjs/middleware/cors.cjs +3 -3
- package/dist/cjs/middleware/cors.cjs.map +1 -1
- package/dist/cjs/middleware/cors.d.cts +1 -1
- package/dist/cjs/middleware/csrf.cjs +3 -3
- package/dist/cjs/middleware/csrf.cjs.map +1 -1
- package/dist/cjs/middleware/csrf.d.cts +1 -1
- package/dist/cjs/middleware/etag.cjs +3 -3
- package/dist/cjs/middleware/etag.cjs.map +1 -1
- package/dist/cjs/middleware/etag.d.cts +1 -1
- package/dist/cjs/middleware/hono-mw.cjs +23 -0
- package/dist/cjs/middleware/hono-mw.cjs.map +1 -0
- package/dist/cjs/middleware/hono-mw.d.cts +16 -0
- package/dist/cjs/middleware/jwk.cjs +6 -2
- package/dist/cjs/middleware/jwk.cjs.map +1 -1
- package/dist/cjs/middleware/jwt.cjs +6 -2
- package/dist/cjs/middleware/jwt.cjs.map +1 -1
- package/dist/cjs/middleware/secure-headers.cjs +3 -3
- package/dist/cjs/middleware/secure-headers.cjs.map +1 -1
- package/dist/cjs/middleware/secure-headers.d.cts +1 -1
- package/dist/cjs/middleware/timing.cjs +3 -3
- package/dist/cjs/middleware/timing.cjs.map +1 -1
- package/dist/cjs/middleware/timing.d.cts +1 -1
- package/dist/cjs/types/index.d.cts +4 -41
- package/dist/cjs/types/units.d.cts +9 -34
- package/dist/esm/builder/constants.d.ts +0 -5
- package/dist/esm/builder/constants.js +1 -6
- package/dist/esm/builder/constants.js.map +1 -1
- package/dist/esm/builder/middleware-unit.d.ts +18 -0
- package/dist/esm/builder/middleware-unit.js +55 -0
- package/dist/esm/builder/middleware-unit.js.map +1 -0
- package/dist/esm/builder/middleware.js +2 -1
- package/dist/esm/builder/middleware.js.map +1 -1
- package/dist/esm/builder/route.js +6 -21
- package/dist/esm/builder/route.js.map +1 -1
- package/dist/esm/builder/router.d.ts +1 -11
- package/dist/esm/builder/router.js +0 -4
- package/dist/esm/builder/router.js.map +1 -1
- package/dist/esm/define/middleware.d.ts +42 -31
- package/dist/esm/define/middleware.js +10 -14
- package/dist/esm/define/middleware.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/middleware/body-limit.d.ts +1 -1
- package/dist/esm/middleware/body-limit.js +3 -3
- package/dist/esm/middleware/body-limit.js.map +1 -1
- package/dist/esm/middleware/compress.d.ts +1 -1
- package/dist/esm/middleware/compress.js +3 -3
- package/dist/esm/middleware/compress.js.map +1 -1
- package/dist/esm/middleware/cors.d.ts +1 -1
- package/dist/esm/middleware/cors.js +3 -3
- package/dist/esm/middleware/cors.js.map +1 -1
- package/dist/esm/middleware/csrf.d.ts +1 -1
- package/dist/esm/middleware/csrf.js +3 -3
- package/dist/esm/middleware/csrf.js.map +1 -1
- package/dist/esm/middleware/etag.d.ts +1 -1
- package/dist/esm/middleware/etag.js +3 -3
- package/dist/esm/middleware/etag.js.map +1 -1
- package/dist/esm/middleware/hono-mw.d.ts +16 -0
- package/dist/esm/middleware/hono-mw.js +23 -0
- package/dist/esm/middleware/hono-mw.js.map +1 -0
- package/dist/esm/middleware/jwk.js +6 -2
- package/dist/esm/middleware/jwk.js.map +1 -1
- package/dist/esm/middleware/jwt.js +6 -2
- package/dist/esm/middleware/jwt.js.map +1 -1
- package/dist/esm/middleware/secure-headers.d.ts +1 -1
- package/dist/esm/middleware/secure-headers.js +3 -3
- package/dist/esm/middleware/secure-headers.js.map +1 -1
- package/dist/esm/middleware/timing.d.ts +1 -1
- package/dist/esm/middleware/timing.js +3 -3
- package/dist/esm/middleware/timing.js.map +1 -1
- package/dist/esm/types/index.d.ts +4 -41
- package/dist/esm/types/units.d.ts +9 -34
- package/package.json +3 -3
- package/src/builder/constants.ts +0 -6
- package/src/builder/middleware-unit.ts +55 -0
- package/src/builder/middleware.ts +6 -2
- package/src/builder/route.ts +8 -34
- package/src/builder/router.ts +1 -18
- package/src/define/middleware.ts +133 -228
- package/src/index.ts +3 -1
- package/src/middleware/body-limit.ts +3 -4
- package/src/middleware/compress.ts +3 -4
- package/src/middleware/cors.ts +3 -4
- package/src/middleware/csrf.ts +3 -4
- package/src/middleware/etag.ts +3 -4
- package/src/middleware/hono-mw.ts +22 -0
- package/src/middleware/jwk.ts +9 -7
- package/src/middleware/jwt.ts +8 -6
- package/src/middleware/secure-headers.ts +3 -4
- package/src/middleware/timing.ts +3 -4
- package/src/types/index.ts +15 -172
- package/src/types/units.ts +119 -77
- package/dist/cjs/define/handler.cjs +0 -38
- package/dist/cjs/define/handler.cjs.map +0 -1
- package/dist/cjs/define/handler.d.cts +0 -13
- package/dist/cjs/middleware/wrap-hono.cjs +0 -19
- package/dist/cjs/middleware/wrap-hono.cjs.map +0 -1
- package/dist/cjs/middleware/wrap-hono.d.cts +0 -7
- package/dist/cjs/types/units.cjs +0 -8
- package/dist/cjs/types/units.cjs.map +0 -1
- package/dist/esm/define/handler.d.ts +0 -13
- package/dist/esm/define/handler.js +0 -38
- package/dist/esm/define/handler.js.map +0 -1
- package/dist/esm/middleware/wrap-hono.d.ts +0 -7
- package/dist/esm/middleware/wrap-hono.js +0 -18
- package/dist/esm/middleware/wrap-hono.js.map +0 -1
- package/dist/esm/types/units.js +0 -8
- package/dist/esm/types/units.js.map +0 -1
- package/src/define/handler.ts +0 -62
- package/src/middleware/wrap-hono.ts +0 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors.cjs","names":[],"sources":["../../../src/middleware/cors.ts"],"sourcesContent":["import { cors as honoCors } from \"hono/cors\";\n\nimport {
|
|
1
|
+
{"version":3,"file":"cors.cjs","names":[],"sources":["../../../src/middleware/cors.ts"],"sourcesContent":["import { cors as honoCors } from \"hono/cors\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function cors(...args: Parameters<typeof honoCors>) {\n return defineMiddleware(honoMw(honoCors(...args)));\n}\n\nexport type CorsOptions = NonNullable<Parameters<typeof honoCors>[0]>;\n"],"mappings":";;;;;AAKA,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,mBAAA,iBAAiB,gBAAA,QAAA,GAAA,UAAA,KAAA,CAAgB,GAAG,IAAI,CAAC,CAAC;AACnD"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { cors as honoCors } from 'hono/cors';
|
|
2
|
-
export declare function cors(...args: Parameters<typeof honoCors>): import('../types/units.js').
|
|
2
|
+
export declare function cors(...args: Parameters<typeof honoCors>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
|
|
3
3
|
export type CorsOptions = NonNullable<Parameters<typeof honoCors>[0]>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_middleware = require("../define/middleware.cjs");
|
|
3
|
+
const require_hono_mw = require("./hono-mw.cjs");
|
|
3
4
|
let hono_csrf = require("hono/csrf");
|
|
4
5
|
//#region src/middleware/csrf.ts
|
|
5
|
-
var wrapped = require_wrap_hono.wrapHonoMiddleware(hono_csrf.csrf);
|
|
6
6
|
function csrf(...args) {
|
|
7
|
-
return
|
|
7
|
+
return require_middleware.defineMiddleware(require_hono_mw.honoMw((0, hono_csrf.csrf)(...args)));
|
|
8
8
|
}
|
|
9
9
|
//#endregion
|
|
10
10
|
exports.csrf = csrf;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csrf.cjs","names":[],"sources":["../../../src/middleware/csrf.ts"],"sourcesContent":["import { csrf as honoCsrf } from \"hono/csrf\";\n\nimport {
|
|
1
|
+
{"version":3,"file":"csrf.cjs","names":[],"sources":["../../../src/middleware/csrf.ts"],"sourcesContent":["import { csrf as honoCsrf } from \"hono/csrf\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function csrf(...args: Parameters<typeof honoCsrf>) {\n return defineMiddleware(honoMw(honoCsrf(...args)));\n}\n\nexport type CsrfOptions = NonNullable<Parameters<typeof honoCsrf>[0]>;\n"],"mappings":";;;;;AAKA,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,mBAAA,iBAAiB,gBAAA,QAAA,GAAA,UAAA,KAAA,CAAgB,GAAG,IAAI,CAAC,CAAC;AACnD"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { csrf as honoCsrf } from 'hono/csrf';
|
|
2
|
-
export declare function csrf(...args: Parameters<typeof honoCsrf>): import('../types/units.js').
|
|
2
|
+
export declare function csrf(...args: Parameters<typeof honoCsrf>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
|
|
3
3
|
export type CsrfOptions = NonNullable<Parameters<typeof honoCsrf>[0]>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_middleware = require("../define/middleware.cjs");
|
|
3
|
+
const require_hono_mw = require("./hono-mw.cjs");
|
|
3
4
|
let hono_etag = require("hono/etag");
|
|
4
5
|
//#region src/middleware/etag.ts
|
|
5
|
-
var wrapped = require_wrap_hono.wrapHonoMiddleware(hono_etag.etag);
|
|
6
6
|
function etag(...args) {
|
|
7
|
-
return
|
|
7
|
+
return require_middleware.defineMiddleware(require_hono_mw.honoMw((0, hono_etag.etag)(...args)));
|
|
8
8
|
}
|
|
9
9
|
//#endregion
|
|
10
10
|
exports.etag = etag;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"etag.cjs","names":[],"sources":["../../../src/middleware/etag.ts"],"sourcesContent":["import { etag as honoEtag } from \"hono/etag\";\n\nimport {
|
|
1
|
+
{"version":3,"file":"etag.cjs","names":[],"sources":["../../../src/middleware/etag.ts"],"sourcesContent":["import { etag as honoEtag } from \"hono/etag\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function etag(...args: Parameters<typeof honoEtag>) {\n return defineMiddleware(honoMw(honoEtag(...args)));\n}\n\nexport type EtagOptions = NonNullable<Parameters<typeof honoEtag>[0]>;\n"],"mappings":";;;;;AAKA,SAAgB,KAAK,GAAG,MAAmC;CACzD,OAAO,mBAAA,iBAAiB,gBAAA,QAAA,GAAA,UAAA,KAAA,CAAgB,GAAG,IAAI,CAAC,CAAC;AACnD"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { etag as honoEtag } from 'hono/etag';
|
|
2
|
-
export declare function etag(...args: Parameters<typeof honoEtag>): import('../types/units.js').
|
|
2
|
+
export declare function etag(...args: Parameters<typeof honoEtag>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
|
|
3
3
|
export type EtagOptions = NonNullable<Parameters<typeof honoEtag>[0]>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
let _taserjs_router_core = require("@taserjs/router-core");
|
|
2
|
+
//#region src/middleware/hono-mw.ts
|
|
3
|
+
/**
|
|
4
|
+
* Adapts a standard Web / Hono-compatible middleware function `(c, next) => ...`
|
|
5
|
+
* into a Taser-compatible middleware handler function `(ctx, next) => Promise<Response>`.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { honoMw } from "@taserjs/router";
|
|
10
|
+
* import { cors } from "hono/cors";
|
|
11
|
+
*
|
|
12
|
+
* const app = t.get("/hello").use(honoMw(cors()));
|
|
13
|
+
* // or
|
|
14
|
+
* const customCors = defineMiddleware(honoMw(cors()));
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
function honoMw(middleware) {
|
|
18
|
+
return (0, _taserjs_router_core.createTaserCompatHandler)(middleware);
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
exports.honoMw = honoMw;
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=hono-mw.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-mw.cjs","names":[],"sources":["../../../src/middleware/hono-mw.ts"],"sourcesContent":["import { createTaserCompatHandler } from \"@taserjs/router-core\";\nimport type { MiddlewareHandler } from \"hono\";\n\n/**\n * Adapts a standard Web / Hono-compatible middleware function `(c, next) => ...`\n * into a Taser-compatible middleware handler function `(ctx, next) => Promise<Response>`.\n *\n * @example\n * ```ts\n * import { honoMw } from \"@taserjs/router\";\n * import { cors } from \"hono/cors\";\n *\n * const app = t.get(\"/hello\").use(honoMw(cors()));\n * // or\n * const customCors = defineMiddleware(honoMw(cors()));\n * ```\n */\nexport function honoMw(\n middleware: MiddlewareHandler,\n): (ctx: unknown, next: any) => Promise<Response> {\n return createTaserCompatHandler(middleware) as (ctx: unknown, next: any) => Promise<Response>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAiBA,SAAgB,OACd,YACgD;CAChD,QAAA,GAAA,qBAAA,yBAAA,CAAgC,UAAU;AAC5C"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MiddlewareHandler } from 'hono';
|
|
2
|
+
/**
|
|
3
|
+
* Adapts a standard Web / Hono-compatible middleware function `(c, next) => ...`
|
|
4
|
+
* into a Taser-compatible middleware handler function `(ctx, next) => Promise<Response>`.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { honoMw } from "@taserjs/router";
|
|
9
|
+
* import { cors } from "hono/cors";
|
|
10
|
+
*
|
|
11
|
+
* const app = t.get("/hello").use(honoMw(cors()));
|
|
12
|
+
* // or
|
|
13
|
+
* const customCors = defineMiddleware(honoMw(cors()));
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function honoMw(middleware: MiddlewareHandler): (ctx: unknown, next: any) => Promise<Response>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_middleware = require("../define/middleware.cjs");
|
|
3
|
-
const
|
|
3
|
+
const require_hono_mw = require("./hono-mw.cjs");
|
|
4
4
|
let hono_jwk = require("hono/jwk");
|
|
5
5
|
//#region src/middleware/jwk.ts
|
|
6
6
|
function assertJwksScheme(jwksUri, allowInsecure) {
|
|
@@ -18,7 +18,11 @@ function jwk(options, init) {
|
|
|
18
18
|
const jwksUri = options.jwks_uri;
|
|
19
19
|
if (typeof jwksUri === "string") assertJwksScheme(jwksUri, options.allowInsecure ?? false);
|
|
20
20
|
const { allowInsecure: _allowInsecure, ...honoOptions } = options;
|
|
21
|
-
|
|
21
|
+
const mw = require_hono_mw.honoMw((0, hono_jwk.jwk)(honoOptions, init?.headers !== void 0 ? { headers: init.headers } : void 0));
|
|
22
|
+
return require_middleware.defineMiddleware((ctx, next) => mw(ctx, async () => {
|
|
23
|
+
const payload = ctx.var.jwtPayload;
|
|
24
|
+
return next({ jwtPayload: payload });
|
|
25
|
+
}));
|
|
22
26
|
}
|
|
23
27
|
//#endregion
|
|
24
28
|
exports.jwk = jwk;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwk.cjs","names":[],"sources":["../../../src/middleware/jwk.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"jwk.cjs","names":[],"sources":["../../../src/middleware/jwk.ts"],"sourcesContent":["import { jwk as honoJwk } from \"hono/jwk\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\nimport type { JwtMiddlewareUnit, JwtPayloadState } from \"./jwt.js\";\n\nexport type JwkOptions = Parameters<typeof honoJwk>[0];\n\nexport type JwkRequestInit = Pick<RequestInit, \"headers\">;\n\nexport type JwkMiddlewareOptions = JwkOptions & {\n /** Allow `http://` JWKS URLs (local dev). Default false — requires `https://`. */\n allowInsecure?: boolean;\n};\n\nfunction assertJwksScheme(jwksUri: string, allowInsecure: boolean): void {\n const scheme = new URL(jwksUri).protocol.replace(\":\", \"\");\n if (scheme === \"https\") {\n return;\n }\n if (scheme === \"http\" && allowInsecure) {\n return;\n }\n throw new Error(`JWKS URL must use https:// (or http:// with allowInsecure: true): \"${jwksUri}\"`);\n}\n\n/**\n * JWK auth middleware. Invalid or missing tokens return **401** (Hono).\n * Successfully decoded payload is placed in `ctx.state.jwtPayload`.\n * Static `jwks_uri` must use HTTPS unless `allowInsecure: true`.\n */\nexport function jwk<TPayload = Record<string, unknown>>(\n options: JwkMiddlewareOptions,\n init?: JwkRequestInit,\n): JwtMiddlewareUnit<TPayload> {\n const jwksUri = options.jwks_uri;\n if (typeof jwksUri === \"string\") {\n assertJwksScheme(jwksUri, options.allowInsecure ?? false);\n }\n\n const { allowInsecure: _allowInsecure, ...honoOptions } = options;\n const safeInit = init?.headers !== undefined ? { headers: init.headers } : undefined;\n const mw = honoMw(honoJwk(honoOptions, safeInit));\n\n return defineMiddleware<JwtPayloadState<TPayload>>((ctx, next) =>\n mw(ctx, async () => {\n const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload;\n return next({ jwtPayload: payload as TPayload });\n }),\n );\n}\n"],"mappings":";;;;;AAeA,SAAS,iBAAiB,SAAiB,eAA8B;CACvE,MAAM,SAAS,IAAI,IAAI,OAAO,CAAC,CAAC,SAAS,QAAQ,KAAK,EAAE;CACxD,IAAI,WAAW,SACb;CAEF,IAAI,WAAW,UAAU,eACvB;CAEF,MAAM,IAAI,MAAM,sEAAsE,QAAQ,EAAE;AAClG;;;;;;AAOA,SAAgB,IACd,SACA,MAC6B;CAC7B,MAAM,UAAU,QAAQ;CACxB,IAAI,OAAO,YAAY,UACrB,iBAAiB,SAAS,QAAQ,iBAAiB,KAAK;CAG1D,MAAM,EAAE,eAAe,gBAAgB,GAAG,gBAAgB;CAE1D,MAAM,KAAK,gBAAA,QAAA,GAAA,SAAA,IAAA,CAAe,aADT,MAAM,YAAY,KAAA,IAAY,EAAE,SAAS,KAAK,QAAQ,IAAI,KAAA,CAC5B,CAAC;CAEhD,OAAO,mBAAA,kBAA6C,KAAK,SACvD,GAAG,KAAK,YAAY;EAClB,MAAM,UAAW,IAAqD,IAAI;EAC1E,OAAO,KAAK,EAAE,YAAY,QAAoB,CAAC;CACjD,CAAC,CACH;AACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_middleware = require("../define/middleware.cjs");
|
|
3
|
-
const
|
|
3
|
+
const require_hono_mw = require("./hono-mw.cjs");
|
|
4
4
|
let hono_jwt = require("hono/jwt");
|
|
5
5
|
//#region src/middleware/jwt.ts
|
|
6
6
|
/**
|
|
@@ -8,7 +8,11 @@ let hono_jwt = require("hono/jwt");
|
|
|
8
8
|
* Successfully decoded payload is placed in `ctx.state.jwtPayload`.
|
|
9
9
|
*/
|
|
10
10
|
function jwt(options) {
|
|
11
|
-
|
|
11
|
+
const mw = require_hono_mw.honoMw((0, hono_jwt.jwt)(options));
|
|
12
|
+
return require_middleware.defineMiddleware((ctx, next) => mw(ctx, async () => {
|
|
13
|
+
const payload = ctx.var.jwtPayload;
|
|
14
|
+
return next({ jwtPayload: payload });
|
|
15
|
+
}));
|
|
12
16
|
}
|
|
13
17
|
//#endregion
|
|
14
18
|
exports.jwt = jwt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.cjs","names":[],"sources":["../../../src/middleware/jwt.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"jwt.cjs","names":[],"sources":["../../../src/middleware/jwt.ts"],"sourcesContent":["import { jwt as honoJwt } from \"hono/jwt\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport type { MiddlewareReturnFromParts, MiddlewareUnit } from \"../types/units.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport type JwtPayloadState<TPayload> = {\n jwtPayload: TPayload;\n};\n\nexport type JwtMiddlewareUnit<TPayload> = MiddlewareUnit<\n MiddlewareReturnFromParts<unknown, unknown, unknown, JwtPayloadState<TPayload>>\n>;\n\nexport type JwtOptions = Parameters<typeof honoJwt>[0];\n\n/**\n * JWT auth middleware. Invalid or missing tokens return **401** (Hono).\n * Successfully decoded payload is placed in `ctx.state.jwtPayload`.\n */\nexport function jwt<TPayload = Record<string, unknown>>(\n options: JwtOptions,\n): JwtMiddlewareUnit<TPayload> {\n const mw = honoMw(honoJwt(options));\n return defineMiddleware<JwtPayloadState<TPayload>>((ctx, next) =>\n mw(ctx, async () => {\n const payload = (ctx as unknown as { var: { jwtPayload?: unknown } }).var.jwtPayload;\n return next({ jwtPayload: payload as TPayload });\n }),\n );\n}\n"],"mappings":";;;;;;;;;AAoBA,SAAgB,IACd,SAC6B;CAC7B,MAAM,KAAK,gBAAA,QAAA,GAAA,SAAA,IAAA,CAAe,OAAO,CAAC;CAClC,OAAO,mBAAA,kBAA6C,KAAK,SACvD,GAAG,KAAK,YAAY;EAClB,MAAM,UAAW,IAAqD,IAAI;EAC1E,OAAO,KAAK,EAAE,YAAY,QAAoB,CAAC;CACjD,CAAC,CACH;AACF"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_middleware = require("../define/middleware.cjs");
|
|
3
|
+
const require_hono_mw = require("./hono-mw.cjs");
|
|
3
4
|
let hono_secure_headers = require("hono/secure-headers");
|
|
4
5
|
//#region src/middleware/secure-headers.ts
|
|
5
|
-
var wrapped = require_wrap_hono.wrapHonoMiddleware(hono_secure_headers.secureHeaders);
|
|
6
6
|
function secureHeaders(...args) {
|
|
7
|
-
return
|
|
7
|
+
return require_middleware.defineMiddleware(require_hono_mw.honoMw((0, hono_secure_headers.secureHeaders)(...args)));
|
|
8
8
|
}
|
|
9
9
|
//#endregion
|
|
10
10
|
exports.secureHeaders = secureHeaders;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secure-headers.cjs","names":[],"sources":["../../../src/middleware/secure-headers.ts"],"sourcesContent":["import { secureHeaders as honoSecureHeaders } from \"hono/secure-headers\";\n\nimport {
|
|
1
|
+
{"version":3,"file":"secure-headers.cjs","names":[],"sources":["../../../src/middleware/secure-headers.ts"],"sourcesContent":["import { secureHeaders as honoSecureHeaders } from \"hono/secure-headers\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function secureHeaders(...args: Parameters<typeof honoSecureHeaders>) {\n return defineMiddleware(honoMw(honoSecureHeaders(...args)));\n}\n\nexport type SecureHeadersOptions = NonNullable<Parameters<typeof honoSecureHeaders>[0]>;\n"],"mappings":";;;;;AAKA,SAAgB,cAAc,GAAG,MAA4C;CAC3E,OAAO,mBAAA,iBAAiB,gBAAA,QAAA,GAAA,oBAAA,cAAA,CAAyB,GAAG,IAAI,CAAC,CAAC;AAC5D"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { secureHeaders as honoSecureHeaders } from 'hono/secure-headers';
|
|
2
|
-
export declare function secureHeaders(...args: Parameters<typeof honoSecureHeaders>): import('../types/units.js').
|
|
2
|
+
export declare function secureHeaders(...args: Parameters<typeof honoSecureHeaders>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
|
|
3
3
|
export type SecureHeadersOptions = NonNullable<Parameters<typeof honoSecureHeaders>[0]>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_middleware = require("../define/middleware.cjs");
|
|
3
|
+
const require_hono_mw = require("./hono-mw.cjs");
|
|
3
4
|
let hono_timing = require("hono/timing");
|
|
4
5
|
//#region src/middleware/timing.ts
|
|
5
|
-
var wrapped = require_wrap_hono.wrapHonoMiddleware(hono_timing.timing);
|
|
6
6
|
function timing(...args) {
|
|
7
|
-
return
|
|
7
|
+
return require_middleware.defineMiddleware(require_hono_mw.honoMw((0, hono_timing.timing)(...args)));
|
|
8
8
|
}
|
|
9
9
|
//#endregion
|
|
10
10
|
exports.timing = timing;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timing.cjs","names":[],"sources":["../../../src/middleware/timing.ts"],"sourcesContent":["import { timing as honoTiming } from \"hono/timing\";\n\nimport {
|
|
1
|
+
{"version":3,"file":"timing.cjs","names":[],"sources":["../../../src/middleware/timing.ts"],"sourcesContent":["import { timing as honoTiming } from \"hono/timing\";\n\nimport { defineMiddleware } from \"../define/middleware.js\";\nimport { honoMw } from \"./hono-mw.js\";\n\nexport function timing(...args: Parameters<typeof honoTiming>) {\n return defineMiddleware(honoMw(honoTiming(...args)));\n}\n\nexport type TimingOptions = NonNullable<Parameters<typeof honoTiming>[0]>;\n"],"mappings":";;;;;AAKA,SAAgB,OAAO,GAAG,MAAqC;CAC7D,OAAO,mBAAA,iBAAiB,gBAAA,QAAA,GAAA,YAAA,OAAA,CAAkB,GAAG,IAAI,CAAC,CAAC;AACrD"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { timing as honoTiming } from 'hono/timing';
|
|
2
|
-
export declare function timing(...args: Parameters<typeof honoTiming>): import('../types/units.js').
|
|
2
|
+
export declare function timing(...args: Parameters<typeof honoTiming>): import('../types/units.js').DefineMiddlewareResult<unknown, unknown, unknown, {}, Response, unknown, unknown, unknown, {}, null, {}>;
|
|
3
3
|
export type TimingOptions = NonNullable<Parameters<typeof honoTiming>[0]>;
|
|
@@ -3,13 +3,13 @@ import { RouterRegister } from '../register.js';
|
|
|
3
3
|
import { MergeMiddlewareField, MergeMiddlewareInputField, MergePart, RequestShape, Simplify, UnionToIntersection, UnitRuntimeContext } from './type-utils.js';
|
|
4
4
|
import { ReturnsMap, ValidHandlerReply } from './returns.js';
|
|
5
5
|
import { Schema } from './schema.js';
|
|
6
|
-
import { AppContext, ExtractState,
|
|
6
|
+
import { AppContext, ExtractState, Method, MiddlewareDefinition, MiddlewareReturnFromParts, MiddlewareUnit, NextFn, ValidatorParts } from './units.js';
|
|
7
7
|
export type { Awaitable } from '@taserjs/router-core';
|
|
8
8
|
export type { SchemaRequestShape, InferInput, InferOutput, Schema, StandardSchemaV1, } from './schema.js';
|
|
9
9
|
export type { RouterRegister } from '../register.js';
|
|
10
10
|
export type { MergeMiddlewareField, MergeMiddlewareInputField, MergePart, RequestShape, Simplify, UnitRuntimeContext, UnwrapPart, } from './type-utils.js';
|
|
11
11
|
export type { EmptyReturns, EnforceHandlerReply, HandlerReply, HasReturns, MergeReturns, ReplyFor, ReturnsMap, StatusCode, ValidHandlerReply, } from './returns.js';
|
|
12
|
-
export type { AppContext, ExtractState,
|
|
12
|
+
export type { AppContext, ExtractState, HttpMethod, IsUnknown, Method, MiddlewareDefinition, MiddlewareNext, MiddlewareReturnFromParts, MiddlewareUnit, MiddlewareUnitBuilder, NextFn, NextResult, StandaloneMiddlewareContext, StateBrand, ValidatorParts, } from './units.js';
|
|
13
13
|
export type RoutePath = RouterRegister extends {
|
|
14
14
|
RoutePath: infer P;
|
|
15
15
|
} ? P : never;
|
|
@@ -169,17 +169,13 @@ export type MiddlewareBuilder<Layout extends LayoutId, Acc extends readonly unkn
|
|
|
169
169
|
actualState: MiddlewareChainField<Layout, Acc, "state">;
|
|
170
170
|
}
|
|
171
171
|
]): MiddlewareBuilder<Layout, readonly [...Acc, TAcc], TAppContext>;
|
|
172
|
-
use<
|
|
173
|
-
...Acc,
|
|
174
|
-
MiddlewareReturnFromParts<TQuery, TParams, TBody, ExtractState<R>, TQueryIn, TParamsIn, TBodyIn>
|
|
175
|
-
], TAppContext>;
|
|
172
|
+
use<R = unknown>(fn: (ctx: MiddlewareChainContext<Layout, Acc, unknown, unknown, unknown, TAppContext>, next: NextFn) => Awaitable<R>): MiddlewareBuilder<Layout, readonly [...Acc, MiddlewareReturnFromParts<unknown, unknown, unknown, ExtractState<R>>], TAppContext>;
|
|
176
173
|
};
|
|
177
174
|
export type RouteExport<Path extends RoutePath, TMethod extends Method, Acc extends readonly unknown[], TReturns extends ReturnsMap = {}, TOutput = Response> = Acc & {
|
|
178
175
|
readonly path: Path;
|
|
179
176
|
readonly method: TMethod | "ANY" | "ALL";
|
|
180
177
|
readonly methods?: readonly Method[];
|
|
181
178
|
readonly middlewares: readonly MiddlewareDefinition[];
|
|
182
|
-
readonly handlerMiddlewares: readonly MiddlewareDefinition[];
|
|
183
179
|
readonly returns?: TReturns;
|
|
184
180
|
readonly bodyMode?: "json" | "form" | "urlencoded";
|
|
185
181
|
handler: (ctx: unknown) => Awaitable<Response>;
|
|
@@ -191,9 +187,6 @@ export type RouteExport<Path extends RoutePath, TMethod extends Method, Acc exte
|
|
|
191
187
|
query?: Schema<unknown>;
|
|
192
188
|
params?: Schema<unknown>;
|
|
193
189
|
body?: Schema<unknown>;
|
|
194
|
-
handlerQuery?: Schema<unknown>;
|
|
195
|
-
handlerParams?: Schema<unknown>;
|
|
196
|
-
handlerBody?: Schema<unknown>;
|
|
197
190
|
};
|
|
198
191
|
type RouteHandleResult<Path extends RoutePath, TMethod extends Method, Acc extends readonly unknown[], Validators extends ValidatorParts, TReturns extends ReturnsMap = {}, TOutput = Response, TAppContext extends Record<string, unknown> = AppContext> = Omit<RouteExport<Path, TMethod, Acc, TReturns, TOutput>, "$Infer"> & {
|
|
199
192
|
readonly $Infer: {
|
|
@@ -231,17 +224,13 @@ export type RouteBuilderBase<Path extends RoutePath, TMethod extends Method, Acc
|
|
|
231
224
|
actualState: RouteResolvedField<Path, TMethod, Acc, "state">;
|
|
232
225
|
}
|
|
233
226
|
]): RouteBuilder<Path, TMethod, readonly [...Acc, TAcc], Validators, Omit<TReturns, keyof UReturns> & UReturns, TAppContext>;
|
|
234
|
-
use<
|
|
235
|
-
...Acc,
|
|
236
|
-
MiddlewareReturnFromParts<TQuery, TParams, TBody, ExtractState<R>, TQueryIn, TParamsIn, TBodyIn>
|
|
237
|
-
], Validators, Omit<TReturns, keyof UReturns> & UReturns, TAppContext>;
|
|
227
|
+
use<R = unknown>(fn: (ctx: RouteChainContext<Path, TMethod, Acc, unknown, unknown, unknown, TAppContext>, next: NextFn) => Awaitable<R>): RouteBuilder<Path, TMethod, readonly [...Acc, MiddlewareReturnFromParts<unknown, unknown, unknown, ExtractState<R>>], Validators, TReturns, TAppContext>;
|
|
238
228
|
handler<R extends Response = Response>(fn: (ctx: TMethod extends "GET" | "DELETE" | "HEAD" | "OPTIONS" ? RouteHandleContextWithoutBody<Path, TMethod, Acc, Validators, TAppContext> : RouteHandleContext<Path, TMethod, Acc, Validators, TAppContext>) => Awaitable<R>, ..._assert: [R] extends [ValidHandlerReply<R, TReturns>] ? [] : [
|
|
239
229
|
{
|
|
240
230
|
expected: ValidHandlerReply<R, TReturns>;
|
|
241
231
|
actual: R;
|
|
242
232
|
}
|
|
243
233
|
]): RouteHandleResult<Path, TMethod, Acc, Validators, TReturns, R, TAppContext>;
|
|
244
|
-
handler<HandlerAcc extends readonly unknown[] = readonly [], HandlerValidators extends ValidatorParts = ValidatorParts, HReturns extends ReturnsMap = {}, HOutput = Response>(unit: HandlerUnit<HandlerAcc, HandlerValidators, HReturns, HOutput>): RouteHandleResult<Path, TMethod, readonly [...Acc, ...HandlerAcc], Validators, Omit<TReturns, keyof HReturns> & HReturns, HOutput, TAppContext>;
|
|
245
234
|
};
|
|
246
235
|
export type RouteBuilder<Path extends RoutePath, TMethod extends Method, Acc extends readonly unknown[] = readonly [], Validators extends ValidatorParts = {}, TReturns extends ReturnsMap = {}, TAppContext extends Record<string, unknown> = AppContext> = RouteBuilderBase<Path, TMethod, Acc, Validators, TReturns, TAppContext> & (TMethod extends "GET" | "DELETE" | "HEAD" | "OPTIONS" ? {} : {
|
|
247
236
|
body<TBody, TBodyIn = unknown>(schema: Schema<TBody, TBodyIn>): RouteBuilder<Path, TMethod, Acc, Omit<Validators, "body" | "bodyIn"> & {
|
|
@@ -253,32 +242,6 @@ export type RouteBuilder<Path extends RoutePath, TMethod extends Method, Acc ext
|
|
|
253
242
|
bodyIn: TBodyIn;
|
|
254
243
|
}, TReturns, TAppContext>;
|
|
255
244
|
});
|
|
256
|
-
export type HandlerBuilder<Acc extends readonly unknown[] = readonly [], Validators extends ValidatorParts = {}, TReturns extends ReturnsMap = {}, TAppContext extends Record<string, unknown> = AppContext> = {
|
|
257
|
-
returns<const M extends ReturnsMap>(map: M): HandlerBuilder<Acc, Validators, Omit<TReturns, keyof M> & M, TAppContext>;
|
|
258
|
-
use<TAcc, UReturns extends ReturnsMap = {}, TRequiredLayouts = unknown, TRequiredState = unknown>(unit: MiddlewareUnit<TAcc, UReturns, TRequiredLayouts, TRequiredState>, ..._assert: [IsStateSatisfied<MergeMiddlewareField<Acc, "state">, TRequiredState>] extends [
|
|
259
|
-
true
|
|
260
|
-
] ? [] : [
|
|
261
|
-
{
|
|
262
|
-
error: "Middleware cannot be attached to this handler";
|
|
263
|
-
requiredState: TRequiredState;
|
|
264
|
-
actualState: MergeMiddlewareField<Acc, "state">;
|
|
265
|
-
}
|
|
266
|
-
]): HandlerBuilder<readonly [...Acc, TAcc], Validators, Omit<TReturns, keyof UReturns> & UReturns, TAppContext>;
|
|
267
|
-
use<TQuery = unknown, TParams = unknown, TBody = unknown, UReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, R = unknown>(options: InlineMiddlewareOptions<HandlerContext<Acc, {
|
|
268
|
-
query: TQuery;
|
|
269
|
-
params: TParams;
|
|
270
|
-
body: TBody;
|
|
271
|
-
}, TAppContext>, TQuery, TParams, TBody, UReturns, TQueryIn, TParamsIn, TBodyIn, R>): HandlerBuilder<readonly [
|
|
272
|
-
...Acc,
|
|
273
|
-
MiddlewareReturnFromParts<TQuery, TParams, TBody, ExtractState<R>, TQueryIn, TParamsIn, TBodyIn>
|
|
274
|
-
], Validators, Omit<TReturns, keyof UReturns> & UReturns, TAppContext>;
|
|
275
|
-
handler<R extends Response = Response>(fn: (ctx: HandlerContext<Acc, Validators, TAppContext>) => Awaitable<R>, ..._assert: [R] extends [ValidHandlerReply<R, TReturns>] ? [] : [
|
|
276
|
-
{
|
|
277
|
-
expected: ValidHandlerReply<R, TReturns>;
|
|
278
|
-
actual: R;
|
|
279
|
-
}
|
|
280
|
-
]): HandlerUnit<Acc, Validators, TReturns, R>;
|
|
281
|
-
};
|
|
282
245
|
export type RouteDefinition<Path extends RoutePath = RoutePath, TMethod extends Method = Method, Acc extends readonly unknown[] = readonly unknown[], Validators extends ValidatorParts = ValidatorParts, TReturns extends ReturnsMap = ReturnsMap, TOutput = Response, TAppContext extends Record<string, unknown> = AppContext> = RouteHandleResult<Path, TMethod, Acc, Validators, TReturns, TOutput, TAppContext>;
|
|
283
246
|
export type InferRouteContext<R> = R extends {
|
|
284
247
|
$Infer: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Awaitable, MiddlewareDefinition as CoreMiddlewareDefinition, TaserCookieJar, TaserHeaders } from '@taserjs/router-core';
|
|
2
|
-
import {
|
|
2
|
+
import { RequestShape, Simplify, UnitRuntimeContext, UnwrapPart } from './type-utils.js';
|
|
3
3
|
import { ReturnsMap } from './returns.js';
|
|
4
4
|
import { Schema } from './schema.js';
|
|
5
5
|
export type { HttpMethod, Method } from './type-utils.js';
|
|
@@ -50,43 +50,18 @@ export type StandaloneMiddlewareContext<TQuery = unknown, TParams = unknown, TBo
|
|
|
50
50
|
headers: TaserHeaders;
|
|
51
51
|
cookies: TaserCookieJar;
|
|
52
52
|
}>;
|
|
53
|
-
export type HandlerContext<Acc extends readonly unknown[], Validators extends ValidatorParts, TAppContext extends Record<string, unknown> = AppContext> = Simplify<TAppContext & UnitRuntimeContext & {
|
|
54
|
-
query: Simplify<MergePart<Validators extends {
|
|
55
|
-
query?: infer Q;
|
|
56
|
-
} ? Q : unknown, MergeMiddlewareField<Acc, "query">>>;
|
|
57
|
-
params: Simplify<MergePart<Validators extends {
|
|
58
|
-
params?: infer P;
|
|
59
|
-
} ? P : unknown, MergeMiddlewareField<Acc, "params">>>;
|
|
60
|
-
body: Simplify<MergePart<Validators extends {
|
|
61
|
-
body?: infer B;
|
|
62
|
-
} ? B : unknown, MergeMiddlewareField<Acc, "body">>>;
|
|
63
|
-
state: Simplify<MergeMiddlewareField<Acc, "state">>;
|
|
64
|
-
headers: TaserHeaders;
|
|
65
|
-
cookies: TaserCookieJar;
|
|
66
|
-
}>;
|
|
67
53
|
export type MiddlewareUnit<TAcc = unknown, TReturns extends ReturnsMap = {}, TRequiredLayouts = unknown, TRequiredState = unknown> = MiddlewareDefinition & {
|
|
68
54
|
readonly __middlewareAcc: TAcc;
|
|
69
55
|
readonly __returns?: TReturns;
|
|
70
56
|
readonly __requiredLayouts?: TRequiredLayouts;
|
|
71
57
|
readonly __requiredState?: TRequiredState;
|
|
72
58
|
};
|
|
73
|
-
export type
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
query?: Schema<unknown>;
|
|
82
|
-
params?: Schema<unknown>;
|
|
83
|
-
body?: Schema<unknown>;
|
|
84
|
-
};
|
|
85
|
-
export type InlineMiddlewareOptions<Ctx = unknown, TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown, R = unknown> = {
|
|
86
|
-
query?: Schema<TQuery, TQueryIn>;
|
|
87
|
-
params?: Schema<TParams, TParamsIn>;
|
|
88
|
-
body?: Schema<TBody, TBodyIn>;
|
|
89
|
-
returns?: TReturns;
|
|
90
|
-
handler: (ctx: Ctx, next: NextFn) => Awaitable<R>;
|
|
59
|
+
export type MiddlewareUnitBuilder<TQuery = unknown, TParams = unknown, TBody = unknown, TReturns extends ReturnsMap = {}, TRequiredLayouts = unknown, TRequiredState = {}, TAppContext extends Record<string, unknown> = AppContext, TInheritedState = {}, TQueryIn = unknown, TParamsIn = unknown, TBodyIn = unknown> = {
|
|
60
|
+
query<Q, QIn = unknown>(schema: Schema<Q, QIn>): MiddlewareUnitBuilder<Q, TParams, TBody, TReturns, TRequiredLayouts, TRequiredState, TAppContext, TInheritedState, QIn, TParamsIn, TBodyIn>;
|
|
61
|
+
params<P, PIn = unknown>(schema: Schema<P, PIn>): MiddlewareUnitBuilder<TQuery, P, TBody, TReturns, TRequiredLayouts, TRequiredState, TAppContext, TInheritedState, TQueryIn, PIn, TBodyIn>;
|
|
62
|
+
body<B, BIn = unknown>(schema: Schema<B, BIn>): MiddlewareUnitBuilder<TQuery, TParams, B, TReturns, TRequiredLayouts, TRequiredState, TAppContext, TInheritedState, TQueryIn, TParamsIn, BIn>;
|
|
63
|
+
body<Mode extends "json" | "form" | "urlencoded", B, BIn = unknown>(mode: Mode, schema: Schema<B, BIn>): MiddlewareUnitBuilder<TQuery, TParams, B, TReturns, TRequiredLayouts, TRequiredState, TAppContext, TInheritedState, TQueryIn, TParamsIn, BIn>;
|
|
64
|
+
returns<const M extends ReturnsMap>(map: M): MiddlewareUnitBuilder<TQuery, TParams, TBody, Omit<TReturns, keyof M> & M, TRequiredLayouts, TRequiredState, TAppContext, TInheritedState, TQueryIn, TParamsIn, TBodyIn>;
|
|
65
|
+
requires<Requires extends Record<string, unknown>>(): MiddlewareUnitBuilder<TQuery, TParams, TBody, TReturns, TRequiredLayouts, TRequiredState & Requires, TAppContext, TInheritedState, TQueryIn, TParamsIn, TBodyIn>;
|
|
66
|
+
handler<TState = unknown, R = unknown>(fn: (ctx: StandaloneMiddlewareContext<TQuery, TParams, TBody, TAppContext, TInheritedState & TRequiredState>, next: NextFn<NoInfer<TState>>) => Awaitable<R>): DefineMiddlewareResult<TQuery, TParams, TBody, TState, R, TQueryIn, TParamsIn, TBodyIn, TReturns, TRequiredLayouts, TRequiredState>;
|
|
91
67
|
};
|
|
92
|
-
export declare function isHandlerUnit(value: unknown): value is HandlerUnit<readonly unknown[], ValidatorParts>;
|
|
@@ -1,8 +1,3 @@
|
|
|
1
1
|
/** Input schema keys validated by middleware and route handlers. Headers/cookies are parsed only. */
|
|
2
2
|
export declare const SCHEMA_KEYS: readonly ["query", "params", "body"];
|
|
3
3
|
export type SchemaKey = (typeof SCHEMA_KEYS)[number];
|
|
4
|
-
export declare const HANDLER_SCHEMA_KEY_MAP: {
|
|
5
|
-
readonly query: "handlerQuery";
|
|
6
|
-
readonly params: "handlerParams";
|
|
7
|
-
readonly body: "handlerBody";
|
|
8
|
-
};
|
|
@@ -5,12 +5,7 @@ var SCHEMA_KEYS = [
|
|
|
5
5
|
"params",
|
|
6
6
|
"body"
|
|
7
7
|
];
|
|
8
|
-
var HANDLER_SCHEMA_KEY_MAP = {
|
|
9
|
-
query: "handlerQuery",
|
|
10
|
-
params: "handlerParams",
|
|
11
|
-
body: "handlerBody"
|
|
12
|
-
};
|
|
13
8
|
//#endregion
|
|
14
|
-
export {
|
|
9
|
+
export { SCHEMA_KEYS };
|
|
15
10
|
|
|
16
11
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":[],"sources":["../../../src/builder/constants.ts"],"sourcesContent":["/** Input schema keys validated by middleware and route handlers. Headers/cookies are parsed only. */\nexport const SCHEMA_KEYS = [\"query\", \"params\", \"body\"] as const;\n\nexport type SchemaKey = (typeof SCHEMA_KEYS)[number];\n
|
|
1
|
+
{"version":3,"file":"constants.js","names":[],"sources":["../../../src/builder/constants.ts"],"sourcesContent":["/** Input schema keys validated by middleware and route handlers. Headers/cookies are parsed only. */\nexport const SCHEMA_KEYS = [\"query\", \"params\", \"body\"] as const;\n\nexport type SchemaKey = (typeof SCHEMA_KEYS)[number];\n"],"mappings":";;AACA,IAAa,cAAc;CAAC;CAAS;CAAU;AAAM"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BodyMode } from '@taserjs/router-core';
|
|
2
|
+
import { ReturnsMap } from '../types/returns.js';
|
|
3
|
+
import { Schema } from '../types/schema.js';
|
|
4
|
+
export declare function createMiddlewareUnitBuilder(requiredLayouts?: string | readonly string[]): {
|
|
5
|
+
query(schema: Schema<unknown>): /*elided*/ any;
|
|
6
|
+
params(schema: Schema<unknown>): /*elided*/ any;
|
|
7
|
+
body(modeOrSchema: BodyMode | Schema<unknown>, schema?: Schema<unknown>): /*elided*/ any;
|
|
8
|
+
returns(map: ReturnsMap): /*elided*/ any;
|
|
9
|
+
requires(): /*elided*/ any;
|
|
10
|
+
handler(fn: (ctx: any, next: any) => any): {
|
|
11
|
+
__middlewareAcc: unknown;
|
|
12
|
+
__requiredLayouts?: string | readonly string[];
|
|
13
|
+
returns?: ReturnsMap;
|
|
14
|
+
__returns?: ReturnsMap;
|
|
15
|
+
bodyMode?: BodyMode;
|
|
16
|
+
handler: (ctx: any, next: any) => any;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { pickDefinedSchemas } from "../define/validators.js";
|
|
2
|
+
//#region src/builder/middleware-unit.ts
|
|
3
|
+
function createMiddlewareUnitBuilder(requiredLayouts) {
|
|
4
|
+
const validators = {};
|
|
5
|
+
let bodyMode;
|
|
6
|
+
let returnsMap;
|
|
7
|
+
const builder = {
|
|
8
|
+
query(schema) {
|
|
9
|
+
validators.query = schema;
|
|
10
|
+
return builder;
|
|
11
|
+
},
|
|
12
|
+
params(schema) {
|
|
13
|
+
validators.params = schema;
|
|
14
|
+
return builder;
|
|
15
|
+
},
|
|
16
|
+
body(modeOrSchema, schema) {
|
|
17
|
+
if (typeof modeOrSchema === "string") {
|
|
18
|
+
bodyMode = modeOrSchema;
|
|
19
|
+
if (schema !== void 0) validators.body = schema;
|
|
20
|
+
} else {
|
|
21
|
+
bodyMode = "json";
|
|
22
|
+
validators.body = modeOrSchema;
|
|
23
|
+
}
|
|
24
|
+
return builder;
|
|
25
|
+
},
|
|
26
|
+
returns(map) {
|
|
27
|
+
returnsMap = {
|
|
28
|
+
...returnsMap,
|
|
29
|
+
...map
|
|
30
|
+
};
|
|
31
|
+
return builder;
|
|
32
|
+
},
|
|
33
|
+
requires() {
|
|
34
|
+
return builder;
|
|
35
|
+
},
|
|
36
|
+
handler(fn) {
|
|
37
|
+
return {
|
|
38
|
+
handler: fn,
|
|
39
|
+
...pickDefinedSchemas(validators),
|
|
40
|
+
...bodyMode ? { bodyMode } : {},
|
|
41
|
+
...returnsMap ? {
|
|
42
|
+
returns: returnsMap,
|
|
43
|
+
__returns: returnsMap
|
|
44
|
+
} : {},
|
|
45
|
+
...requiredLayouts !== void 0 ? { __requiredLayouts: requiredLayouts } : {},
|
|
46
|
+
__middlewareAcc: void 0
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
return builder;
|
|
51
|
+
}
|
|
52
|
+
//#endregion
|
|
53
|
+
export { createMiddlewareUnitBuilder };
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=middleware-unit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware-unit.js","names":[],"sources":["../../../src/builder/middleware-unit.ts"],"sourcesContent":["import type { BodyMode } from \"@taserjs/router-core\";\n\nimport type { ReturnsMap } from \"../types/returns.js\";\nimport type { Schema } from \"../types/schema.js\";\nimport { pickDefinedSchemas, type SchemaValidators } from \"../define/validators.js\";\n\nexport function createMiddlewareUnitBuilder(requiredLayouts?: string | readonly string[]) {\n const validators: SchemaValidators = {};\n let bodyMode: BodyMode | undefined;\n let returnsMap: ReturnsMap | undefined;\n\n const builder = {\n query(schema: Schema<unknown>) {\n validators.query = schema;\n return builder;\n },\n params(schema: Schema<unknown>) {\n validators.params = schema;\n return builder;\n },\n body(modeOrSchema: BodyMode | Schema<unknown>, schema?: Schema<unknown>) {\n if (typeof modeOrSchema === \"string\") {\n bodyMode = modeOrSchema as BodyMode;\n if (schema !== undefined) {\n validators.body = schema;\n }\n } else {\n bodyMode = \"json\";\n validators.body = modeOrSchema;\n }\n return builder;\n },\n returns(map: ReturnsMap) {\n returnsMap = { ...returnsMap, ...map };\n return builder;\n },\n requires() {\n return builder;\n },\n handler(fn: (ctx: any, next: any) => any) {\n const schemas = pickDefinedSchemas(validators);\n const unit = {\n handler: fn,\n ...schemas,\n ...(bodyMode ? { bodyMode } : {}),\n ...(returnsMap ? { returns: returnsMap, __returns: returnsMap } : {}),\n ...(requiredLayouts !== undefined ? { __requiredLayouts: requiredLayouts } : {}),\n __middlewareAcc: undefined as unknown,\n };\n return unit;\n },\n };\n\n return builder;\n}\n"],"mappings":";;AAMA,SAAgB,4BAA4B,iBAA8C;CACxF,MAAM,aAA+B,CAAC;CACtC,IAAI;CACJ,IAAI;CAEJ,MAAM,UAAU;EACd,MAAM,QAAyB;GAC7B,WAAW,QAAQ;GACnB,OAAO;EACT;EACA,OAAO,QAAyB;GAC9B,WAAW,SAAS;GACpB,OAAO;EACT;EACA,KAAK,cAA0C,QAA0B;GACvE,IAAI,OAAO,iBAAiB,UAAU;IACpC,WAAW;IACX,IAAI,WAAW,KAAA,GACb,WAAW,OAAO;GAEtB,OAAO;IACL,WAAW;IACX,WAAW,OAAO;GACpB;GACA,OAAO;EACT;EACA,QAAQ,KAAiB;GACvB,aAAa;IAAE,GAAG;IAAY,GAAG;GAAI;GACrC,OAAO;EACT;EACA,WAAW;GACT,OAAO;EACT;EACA,QAAQ,IAAkC;GAUxC,OAAO;IAPL,SAAS;IACT,GAHc,mBAAmB,UAG9B;IACH,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;IAC/B,GAAI,aAAa;KAAE,SAAS;KAAY,WAAW;IAAW,IAAI,CAAC;IACnE,GAAI,oBAAoB,KAAA,IAAY,EAAE,mBAAmB,gBAAgB,IAAI,CAAC;IAC9E,iBAAiB,KAAA;GAEZ;EACT;CACF;CAEA,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","names":[],"sources":["../../../src/builder/middleware.ts"],"sourcesContent":["import type { LayoutId, MiddlewareBuilder } from \"../types/index.js\";\nimport type { MiddlewareDefinition } from \"../types/units.js\";\n\nexport function createMiddleware<const Layout extends LayoutId>(\n layout: Layout,\n): MiddlewareBuilder<Layout, readonly []> {\n const entries: MiddlewareDefinition[] = [];\n\n const chain = {\n layout,\n middlewares: entries,\n use(definition: MiddlewareDefinition) {\n entries.push(definition);\n return chain;\n },\n };\n\n return chain as unknown as MiddlewareBuilder<Layout, readonly []>;\n}\n"],"mappings":";AAGA,SAAgB,iBACd,QACwC;CACxC,MAAM,UAAkC,CAAC;CAEzC,MAAM,QAAQ;EACZ;EACA,aAAa;EACb,IAAI,
|
|
1
|
+
{"version":3,"file":"middleware.js","names":[],"sources":["../../../src/builder/middleware.ts"],"sourcesContent":["import type { LayoutId, MiddlewareBuilder } from \"../types/index.js\";\nimport type { MiddlewareDefinition } from \"../types/units.js\";\n\nexport function createMiddleware<const Layout extends LayoutId>(\n layout: Layout,\n): MiddlewareBuilder<Layout, readonly []> {\n const entries: MiddlewareDefinition[] = [];\n\n const chain = {\n layout,\n middlewares: entries,\n use(definition: MiddlewareDefinition | ((ctx: any, next: any) => any)) {\n if (typeof definition === \"function\") {\n entries.push({ handler: definition as any });\n } else {\n entries.push(definition);\n }\n return chain;\n },\n };\n\n return chain as unknown as MiddlewareBuilder<Layout, readonly []>;\n}\n"],"mappings":";AAGA,SAAgB,iBACd,QACwC;CACxC,MAAM,UAAkC,CAAC;CAEzC,MAAM,QAAQ;EACZ;EACA,aAAa;EACb,IAAI,YAAmE;GACrE,IAAI,OAAO,eAAe,YACxB,QAAQ,KAAK,EAAE,SAAS,WAAkB,CAAC;QAE3C,QAAQ,KAAK,UAAU;GAEzB,OAAO;EACT;CACF;CAEA,OAAO;AACT"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { isHandlerUnit } from "../types/units.js";
|
|
2
|
-
import { HANDLER_SCHEMA_KEY_MAP } from "./constants.js";
|
|
3
1
|
import { pickDefinedSchemas } from "../define/validators.js";
|
|
4
2
|
import { collectReturnsFromDefinitions, hasInputSchemas, mergeReturnsMaps, withAuto422 } from "@taserjs/router-utils";
|
|
5
3
|
//#region src/builder/route.ts
|
|
@@ -10,7 +8,7 @@ function toUtilsMap(map) {
|
|
|
10
8
|
return out;
|
|
11
9
|
}
|
|
12
10
|
function buildEffectiveReturns(args) {
|
|
13
|
-
const with422 = withAuto422(mergeReturnsMaps(toUtilsMap(args.middlewareReturns), toUtilsMap(args.routeReturns)
|
|
11
|
+
const with422 = withAuto422(mergeReturnsMaps(toUtilsMap(args.middlewareReturns), toUtilsMap(args.routeReturns)), hasInputSchemas(args.schemas));
|
|
14
12
|
return Object.keys(with422).length > 0 ? with422 : void 0;
|
|
15
13
|
}
|
|
16
14
|
function buildRouteBase(path, method, methods, middlewares) {
|
|
@@ -56,38 +54,25 @@ function createRouteBuilder(path, method, methods) {
|
|
|
56
54
|
return builder;
|
|
57
55
|
},
|
|
58
56
|
use(definition) {
|
|
59
|
-
middlewares.push(definition);
|
|
57
|
+
if (typeof definition === "function") middlewares.push({ handler: definition });
|
|
58
|
+
else middlewares.push(definition);
|
|
60
59
|
return builder;
|
|
61
60
|
},
|
|
62
|
-
handler(
|
|
61
|
+
handler(fn) {
|
|
63
62
|
const routeSchemas = pickDefinedSchemas(validators);
|
|
64
63
|
const base = buildRouteBase(path, method, methods, middlewares);
|
|
65
|
-
const unit = isHandlerUnit(fnOrUnit) ? fnOrUnit : {
|
|
66
|
-
handler: fnOrUnit,
|
|
67
|
-
middlewares: [],
|
|
68
|
-
returns: void 0
|
|
69
|
-
};
|
|
70
|
-
const handlerSchemas = isHandlerUnit(fnOrUnit) ? pickDefinedSchemas(fnOrUnit, HANDLER_SCHEMA_KEY_MAP) : {};
|
|
71
64
|
const returns = buildEffectiveReturns({
|
|
72
65
|
middlewareReturns: collectReturnsFromDefinitions(middlewares),
|
|
73
66
|
routeReturns,
|
|
74
|
-
handlerMiddlewareReturns: collectReturnsFromDefinitions(unit.middlewares),
|
|
75
|
-
handlerReturns: unit.returns,
|
|
76
67
|
schemas: {
|
|
77
68
|
...validators,
|
|
78
|
-
|
|
79
|
-
handlerParams: unit.params,
|
|
80
|
-
handlerBody: unit.body,
|
|
81
|
-
middlewares,
|
|
82
|
-
handlerMiddlewares: unit.middlewares
|
|
69
|
+
middlewares
|
|
83
70
|
}
|
|
84
71
|
});
|
|
85
72
|
return {
|
|
86
73
|
...base,
|
|
87
|
-
|
|
88
|
-
handler: unit.handler,
|
|
74
|
+
handler: fn,
|
|
89
75
|
...routeSchemas,
|
|
90
|
-
...handlerSchemas,
|
|
91
76
|
...bodyMode ? { bodyMode } : {},
|
|
92
77
|
...returns ? { returns } : {}
|
|
93
78
|
};
|