clear-router 2.7.7 → 2.8.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.
Files changed (63) hide show
  1. package/dist/{Request-BhTJDR_5.d.mts → Request-Ci0UQ-Vl.d.mts} +27 -0
  2. package/dist/ResourceRouteSelection.cjs +26 -0
  3. package/dist/ResourceRouteSelection.d.cts +20 -0
  4. package/dist/ResourceRouteSelection.d.mts +20 -0
  5. package/dist/ResourceRouteSelection.mjs +25 -0
  6. package/dist/ResourceRoutes.cjs +150 -0
  7. package/dist/ResourceRoutes.d.cts +96 -0
  8. package/dist/ResourceRoutes.d.mts +96 -0
  9. package/dist/ResourceRoutes.mjs +150 -0
  10. package/dist/Route.cjs +32 -0
  11. package/dist/Route.d.cts +27 -0
  12. package/dist/Route.d.mts +27 -0
  13. package/dist/Route.mjs +32 -0
  14. package/dist/core/helpers.cjs +9 -0
  15. package/dist/core/helpers.d.cts +4 -0
  16. package/dist/core/helpers.d.mts +4 -0
  17. package/dist/core/helpers.mjs +8 -0
  18. package/dist/core/index.cjs +8 -0
  19. package/dist/core/index.d.cts +2 -1
  20. package/dist/core/index.d.mts +2 -1
  21. package/dist/core/index.mjs +2 -1
  22. package/dist/core/router.cjs +66 -37
  23. package/dist/core/router.d.cts +17 -4
  24. package/dist/core/router.d.mts +17 -4
  25. package/dist/core/router.mjs +66 -37
  26. package/dist/decorators/setup.d.mts +0 -1
  27. package/dist/express/router.cjs +2 -2
  28. package/dist/express/router.d.cts +5 -4
  29. package/dist/express/router.d.mts +5 -4
  30. package/dist/express/router.mjs +2 -2
  31. package/dist/fastify/router.cjs +2 -2
  32. package/dist/fastify/router.d.cts +5 -4
  33. package/dist/fastify/router.d.mts +5 -4
  34. package/dist/fastify/router.mjs +2 -2
  35. package/dist/h3/router.cjs +2 -2
  36. package/dist/h3/router.d.cts +22 -21
  37. package/dist/h3/router.d.mts +22 -21
  38. package/dist/h3/router.mjs +2 -2
  39. package/dist/hono/router.cjs +2 -2
  40. package/dist/hono/router.d.cts +5 -4
  41. package/dist/hono/router.d.mts +5 -4
  42. package/dist/hono/router.mjs +2 -2
  43. package/dist/index.cjs +3 -1
  44. package/dist/index.d.cts +2 -1
  45. package/dist/index.d.mts +2 -1
  46. package/dist/index.mjs +2 -1
  47. package/dist/koa/router.cjs +2 -2
  48. package/dist/koa/router.d.cts +5 -4
  49. package/dist/koa/router.d.mts +5 -4
  50. package/dist/koa/router.mjs +2 -2
  51. package/dist/types/basic.d.cts +13 -4
  52. package/dist/types/basic.d.mts +13 -4
  53. package/dist/types/express.d.cts +6 -2
  54. package/dist/types/express.d.mts +6 -2
  55. package/dist/types/fastify.d.cts +3 -2
  56. package/dist/types/fastify.d.mts +3 -2
  57. package/dist/types/h3.d.cts +7 -2
  58. package/dist/types/h3.d.mts +7 -2
  59. package/dist/types/hono.d.cts +4 -3
  60. package/dist/types/hono.d.mts +4 -3
  61. package/dist/types/koa.d.cts +3 -2
  62. package/dist/types/koa.d.mts +3 -2
  63. package/package.json +1 -1
@@ -3,19 +3,28 @@
3
3
  * Controller method reference
4
4
  */
5
5
  type ControllerHandler = [any, string];
6
+ type MaybePromise<T = any> = T | Promise<T>;
7
+ type MiddlewareHandle<Args extends any[] = any[], Return = any> = (...args: Args) => MaybePromise<Return>;
8
+ type MiddlewareClass<M extends MiddlewareHandle = MiddlewareHandle> = new () => {
9
+ handle: M;
10
+ };
11
+ type MiddlewareInstance<M extends MiddlewareHandle = MiddlewareHandle> = {
12
+ handle: M;
13
+ };
14
+ type ClassMiddleware<M extends MiddlewareHandle = MiddlewareHandle> = MiddlewareClass<M> | MiddlewareInstance<M>;
6
15
  /**
7
16
  * HTTP methods supported by the router
8
17
  */
9
18
  type HttpMethod = 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head';
10
19
  /**
11
- * Common controller action names
20
+ * Common resource action names
12
21
  */
13
- type ControllerAction = 'index' | 'show' | 'create' | 'update' | 'destroy';
22
+ type ResourceAction = 'index' | 'show' | 'create' | 'update' | 'destroy';
14
23
  /**
15
24
  * Generic Object type for request data
16
25
  */
17
26
  type RequestData = Record<string, any>;
18
- type ApiResourceMiddleware<M = any> = M | M[] | { [K in ControllerAction]?: M | M[] };
27
+ type ApiResourceMiddleware<M = any> = M | M[] | { [K in ResourceAction]?: M | M[] };
19
28
  interface RouterConfig {
20
29
  /**
21
30
  * When enabled, API param name will be infered from the route path.
@@ -40,4 +49,4 @@ interface RouterConfig {
40
49
  };
41
50
  }
42
51
  //#endregion
43
- export { ApiResourceMiddleware, ControllerAction, ControllerHandler, HttpMethod, RequestData, RouterConfig };
52
+ export { ApiResourceMiddleware, ClassMiddleware, ControllerHandler, HttpMethod, MiddlewareHandle, RequestData, ResourceAction, RouterConfig };
@@ -1,4 +1,4 @@
1
- import { ControllerHandler } from "./basic.cjs";
1
+ import { ClassMiddleware, ControllerHandler, MiddlewareHandle } from "./basic.cjs";
2
2
  import { ClearHttpContext } from "../Contracts.cjs";
3
3
  import { Response as Response$1 } from "../core/Response.cjs";
4
4
  import { Request as Request$1 } from "../core/Request.cjs";
@@ -39,6 +39,10 @@ type Handler = RouteHandler | ControllerHandler;
39
39
  /**
40
40
  * Middleware function type
41
41
  */
42
- type Middleware = (req: Request, res: Response, next: NextFunction) => any | Promise<any>;
42
+ type MiddlewareFunction = MiddlewareHandle<[Request, Response, NextFunction]>;
43
+ /**
44
+ * Middleware class or instance with a framework-aware handle method.
45
+ */
46
+ type Middleware = MiddlewareFunction | ClassMiddleware<MiddlewareFunction>;
43
47
  //#endregion
44
48
  export { Handler, HttpContext, Middleware };
@@ -1,4 +1,4 @@
1
- import { ControllerHandler } from "./basic.mjs";
1
+ import { ClassMiddleware, ControllerHandler, MiddlewareHandle } from "./basic.mjs";
2
2
  import { ClearHttpContext } from "../Contracts.mjs";
3
3
  import { Response as Response$1 } from "../core/Response.mjs";
4
4
  import { Request as Request$1 } from "../core/Request.mjs";
@@ -39,6 +39,10 @@ type Handler = RouteHandler | ControllerHandler;
39
39
  /**
40
40
  * Middleware function type
41
41
  */
42
- type Middleware = (req: Request, res: Response, next: NextFunction) => any | Promise<any>;
42
+ type MiddlewareFunction = MiddlewareHandle<[Request, Response, NextFunction]>;
43
+ /**
44
+ * Middleware class or instance with a framework-aware handle method.
45
+ */
46
+ type Middleware = MiddlewareFunction | ClassMiddleware<MiddlewareFunction>;
43
47
  //#endregion
44
48
  export { Handler, HttpContext, Middleware };
@@ -1,4 +1,4 @@
1
- import { ControllerHandler } from "./basic.cjs";
1
+ import { ClassMiddleware, ControllerHandler, MiddlewareHandle } from "./basic.cjs";
2
2
  import { ClearHttpContext } from "../Contracts.cjs";
3
3
  import { Response } from "../core/Response.cjs";
4
4
  import { Request } from "../core/Request.cjs";
@@ -17,7 +17,8 @@ interface HttpContext extends ClearHttpContext {
17
17
  type RouteHandler = (ctx: HttpContext, req: Request) => any | Promise<any>;
18
18
  type Handler = RouteHandler | ControllerHandler;
19
19
  type NextFunction = (err?: Error) => void;
20
- type Middleware = (req: RequestWithGetBody, reply: FastifyReply, next: NextFunction) => any | Promise<any>;
20
+ type MiddlewareFunction = MiddlewareHandle<[req: RequestWithGetBody, reply: FastifyReply, next: NextFunction]>;
21
+ type Middleware = MiddlewareFunction | ClassMiddleware<MiddlewareFunction>;
21
22
  type FastifyApp = FastifyInstance;
22
23
  //#endregion
23
24
  export { FastifyApp, Handler, HttpContext, Middleware };
@@ -1,4 +1,4 @@
1
- import { ControllerHandler } from "./basic.mjs";
1
+ import { ClassMiddleware, ControllerHandler, MiddlewareHandle } from "./basic.mjs";
2
2
  import { ClearHttpContext } from "../Contracts.mjs";
3
3
  import { Response } from "../core/Response.mjs";
4
4
  import { Request } from "../core/Request.mjs";
@@ -17,7 +17,8 @@ interface HttpContext extends ClearHttpContext {
17
17
  type RouteHandler = (ctx: HttpContext, req: Request) => any | Promise<any>;
18
18
  type Handler = RouteHandler | ControllerHandler;
19
19
  type NextFunction = (err?: Error) => void;
20
- type Middleware = (req: RequestWithGetBody, reply: FastifyReply, next: NextFunction) => any | Promise<any>;
20
+ type MiddlewareFunction = MiddlewareHandle<[req: RequestWithGetBody, reply: FastifyReply, next: NextFunction]>;
21
+ type Middleware = MiddlewareFunction | ClassMiddleware<MiddlewareFunction>;
21
22
  type FastifyApp = FastifyInstance;
22
23
  //#endregion
23
24
  export { FastifyApp, Handler, HttpContext, Middleware };
@@ -1,4 +1,4 @@
1
- import { ControllerHandler } from "./basic.cjs";
1
+ import { ClassMiddleware, ControllerHandler } from "./basic.cjs";
2
2
  import { ClearHttpContext } from "../Contracts.cjs";
3
3
  import { Response as Response$1 } from "../core/Response.cjs";
4
4
  import { Request } from "../core/Request.cjs";
@@ -37,5 +37,10 @@ req: Request) => any | Promise<any>;
37
37
  * Handler can be either a function or controller reference
38
38
  */
39
39
  type Handler = RouteHandler | ControllerHandler;
40
+ /**
41
+ * Middleware function type
42
+ */
43
+ type MiddlewareFunction = Middleware;
44
+ type Middleware$1 = MiddlewareFunction | ClassMiddleware<MiddlewareFunction>;
40
45
  //#endregion
41
- export { H3App, Handler, HttpContext, type Middleware };
46
+ export { H3App, Handler, HttpContext, Middleware$1 as Middleware };
@@ -1,4 +1,4 @@
1
- import { ControllerHandler } from "./basic.mjs";
1
+ import { ClassMiddleware, ControllerHandler } from "./basic.mjs";
2
2
  import { ClearHttpContext } from "../Contracts.mjs";
3
3
  import { Response as Response$1 } from "../core/Response.mjs";
4
4
  import { Request } from "../core/Request.mjs";
@@ -37,5 +37,10 @@ req: Request) => any | Promise<any>;
37
37
  * Handler can be either a function or controller reference
38
38
  */
39
39
  type Handler = RouteHandler | ControllerHandler;
40
+ /**
41
+ * Middleware function type
42
+ */
43
+ type MiddlewareFunction = Middleware;
44
+ type Middleware$1 = MiddlewareFunction | ClassMiddleware<MiddlewareFunction>;
40
45
  //#endregion
41
- export { H3App, Handler, HttpContext, type Middleware };
46
+ export { H3App, Handler, HttpContext, Middleware$1 as Middleware };
@@ -1,4 +1,4 @@
1
- import { ControllerHandler } from "./basic.cjs";
1
+ import { ClassMiddleware, ControllerHandler } from "./basic.cjs";
2
2
  import { ClearHttpContext } from "../Contracts.cjs";
3
3
  import { Response } from "../core/Response.cjs";
4
4
  import { Request } from "../core/Request.cjs";
@@ -15,7 +15,8 @@ interface HttpContext extends Context, ClearHttpContext {
15
15
  }
16
16
  type RouteHandler = (ctx: HttpContext, req: Request) => any | Promise<any>;
17
17
  type Handler = RouteHandler | ControllerHandler;
18
- type Middleware = MiddlewareHandler;
19
- type HonoApp = { [K in 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head']: (path: string, ...handlers: Middleware[]) => any };
18
+ type MiddlewareFunction = MiddlewareHandler;
19
+ type Middleware = MiddlewareFunction | ClassMiddleware<MiddlewareFunction>;
20
+ type HonoApp = { [K in 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head']: (path: string, ...handlers: MiddlewareFunction[]) => any };
20
21
  //#endregion
21
22
  export { Handler, HonoApp, HttpContext, Middleware };
@@ -1,4 +1,4 @@
1
- import { ControllerHandler } from "./basic.mjs";
1
+ import { ClassMiddleware, ControllerHandler } from "./basic.mjs";
2
2
  import { ClearHttpContext } from "../Contracts.mjs";
3
3
  import { Response } from "../core/Response.mjs";
4
4
  import { Request } from "../core/Request.mjs";
@@ -15,7 +15,8 @@ interface HttpContext extends Context, ClearHttpContext {
15
15
  }
16
16
  type RouteHandler = (ctx: HttpContext, req: Request) => any | Promise<any>;
17
17
  type Handler = RouteHandler | ControllerHandler;
18
- type Middleware = MiddlewareHandler;
19
- type HonoApp = { [K in 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head']: (path: string, ...handlers: Middleware[]) => any };
18
+ type MiddlewareFunction = MiddlewareHandler;
19
+ type Middleware = MiddlewareFunction | ClassMiddleware<MiddlewareFunction>;
20
+ type HonoApp = { [K in 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head']: (path: string, ...handlers: MiddlewareFunction[]) => any };
20
21
  //#endregion
21
22
  export { Handler, HonoApp, HttpContext, Middleware };
@@ -1,4 +1,4 @@
1
- import { ControllerHandler } from "./basic.cjs";
1
+ import { ClassMiddleware, ControllerHandler } from "./basic.cjs";
2
2
  import { ClearHttpContext } from "../Contracts.cjs";
3
3
  import { Response } from "../core/Response.cjs";
4
4
  import { Request } from "../core/Request.cjs";
@@ -19,7 +19,8 @@ interface HttpContext extends Koa.Context, ClearHttpContext {
19
19
  }
20
20
  type RouteHandler = (ctx: HttpContext, req: Request) => any | Promise<any>;
21
21
  type Handler = RouteHandler | ControllerHandler;
22
- type Middleware = Koa.Middleware<any, any>;
22
+ type MiddlewareFunction = Koa.Middleware<any, any>;
23
+ type Middleware = MiddlewareFunction | ClassMiddleware<MiddlewareFunction>;
23
24
  type KoaRouterApp = Router<any, any>;
24
25
  //#endregion
25
26
  export { Handler, HttpContext, KoaRouterApp, Middleware };
@@ -1,4 +1,4 @@
1
- import { ControllerHandler } from "./basic.mjs";
1
+ import { ClassMiddleware, ControllerHandler } from "./basic.mjs";
2
2
  import { ClearHttpContext } from "../Contracts.mjs";
3
3
  import { Response } from "../core/Response.mjs";
4
4
  import { Request } from "../core/Request.mjs";
@@ -19,7 +19,8 @@ interface HttpContext extends Koa.Context, ClearHttpContext {
19
19
  }
20
20
  type RouteHandler = (ctx: HttpContext, req: Request) => any | Promise<any>;
21
21
  type Handler = RouteHandler | ControllerHandler;
22
- type Middleware = Koa.Middleware<any, any>;
22
+ type MiddlewareFunction = Koa.Middleware<any, any>;
23
+ type Middleware = MiddlewareFunction | ClassMiddleware<MiddlewareFunction>;
23
24
  type KoaRouterApp = Router<any, any>;
24
25
  //#endregion
25
26
  export { Handler, HttpContext, KoaRouterApp, Middleware };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clear-router",
3
- "version": "2.7.7",
3
+ "version": "2.8.1",
4
4
  "description": "Laravel-style routing for Node.js with support for Express, H3, Fastify, Hono, and Koa, including CommonJS, ESM, and TypeScript support.",
5
5
  "keywords": [
6
6
  "h3",