clear-router 2.7.6 → 2.8.0

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 (116) hide show
  1. package/dist/ClearRequest.cjs +23 -0
  2. package/dist/ClearRequest.d.cts +28 -0
  3. package/dist/ClearRequest.d.mts +28 -0
  4. package/dist/ClearRequest.mjs +22 -0
  5. package/dist/Contracts.d.cts +12 -0
  6. package/dist/Contracts.d.mts +12 -0
  7. package/dist/Controller.cjs +12 -0
  8. package/dist/Controller.d.cts +14 -0
  9. package/dist/Controller.d.mts +14 -0
  10. package/dist/Controller.mjs +11 -0
  11. package/dist/{Request-DKXwa_W0.d.mts → Request-Ci0UQ-Vl.d.mts} +32 -5
  12. package/dist/ResourceRouteSelection.cjs +26 -0
  13. package/dist/ResourceRouteSelection.d.cts +20 -0
  14. package/dist/ResourceRouteSelection.d.mts +20 -0
  15. package/dist/ResourceRouteSelection.mjs +25 -0
  16. package/dist/ResourceRoutes.cjs +60 -0
  17. package/dist/ResourceRoutes.d.cts +37 -0
  18. package/dist/ResourceRoutes.d.mts +37 -0
  19. package/dist/ResourceRoutes.mjs +60 -0
  20. package/dist/Route.cjs +90 -0
  21. package/dist/Route.d.cts +62 -0
  22. package/dist/Route.d.mts +62 -0
  23. package/dist/Route.mjs +89 -0
  24. package/dist/core/Request.cjs +35 -0
  25. package/dist/core/Request.d.cts +25 -0
  26. package/dist/core/Request.d.mts +25 -0
  27. package/dist/core/Request.mjs +35 -0
  28. package/dist/core/Response.cjs +59 -0
  29. package/dist/core/Response.d.cts +24 -0
  30. package/dist/core/Response.d.mts +24 -0
  31. package/dist/core/Response.mjs +58 -0
  32. package/dist/{bindings-CLsZjOEy.cjs → core/bindings.cjs} +10 -160
  33. package/dist/{bindings-CNL7bpz5.d.mts → core/bindings.d.cts} +1 -1
  34. package/dist/{bindings-CxvtC8XS.d.cts → core/bindings.d.mts} +1 -1
  35. package/dist/{bindings-XLDXFpHZ.mjs → core/bindings.mjs} +3 -110
  36. package/dist/core/index.cjs +7 -17
  37. package/dist/core/index.d.cts +4 -1
  38. package/dist/core/index.d.mts +4 -1
  39. package/dist/core/index.mjs +4 -14
  40. package/dist/core/plugins.cjs +14 -0
  41. package/dist/core/plugins.d.cts +109 -0
  42. package/dist/core/plugins.d.mts +109 -0
  43. package/dist/core/plugins.mjs +13 -0
  44. package/dist/{responses-Bvnk0uvc.cjs → core/responses.cjs} +5 -20
  45. package/dist/{responses-BvETUeDL.mjs → core/responses.mjs} +2 -2
  46. package/dist/{router-C6W-k6sS.cjs → core/router.cjs} +67 -72
  47. package/dist/core/router.d.cts +286 -0
  48. package/dist/core/router.d.mts +286 -0
  49. package/dist/{router-Dc9w86Wn.mjs → core/router.mjs} +62 -62
  50. package/dist/decorators/index.cjs +1 -1
  51. package/dist/decorators/index.d.cts +1 -1
  52. package/dist/decorators/index.d.mts +1 -1
  53. package/dist/decorators/index.mjs +1 -1
  54. package/dist/decorators/setup.cjs +2 -2
  55. package/dist/decorators/setup.d.cts +1 -1
  56. package/dist/decorators/setup.d.mts +1 -2
  57. package/dist/decorators/setup.mjs +2 -2
  58. package/dist/express/index.cjs +2 -265
  59. package/dist/express/index.d.cts +1 -127
  60. package/dist/express/index.d.mts +1 -127
  61. package/dist/express/index.mjs +1 -264
  62. package/dist/express/router.cjs +265 -0
  63. package/dist/express/router.d.cts +132 -0
  64. package/dist/express/router.d.mts +132 -0
  65. package/dist/express/router.mjs +265 -0
  66. package/dist/fastify/index.cjs +2 -254
  67. package/dist/fastify/index.d.cts +1 -125
  68. package/dist/fastify/index.d.mts +1 -125
  69. package/dist/fastify/index.mjs +1 -253
  70. package/dist/fastify/router.cjs +254 -0
  71. package/dist/fastify/router.d.cts +130 -0
  72. package/dist/fastify/router.d.mts +130 -0
  73. package/dist/fastify/router.mjs +254 -0
  74. package/dist/h3/index.cjs +2 -260
  75. package/dist/h3/index.d.cts +1 -128
  76. package/dist/h3/index.d.mts +1 -128
  77. package/dist/h3/index.mjs +1 -259
  78. package/dist/h3/router.cjs +260 -0
  79. package/dist/h3/router.d.cts +133 -0
  80. package/dist/h3/router.d.mts +133 -0
  81. package/dist/h3/router.mjs +260 -0
  82. package/dist/hono/index.cjs +2 -251
  83. package/dist/hono/index.d.cts +1 -130
  84. package/dist/hono/index.d.mts +1 -130
  85. package/dist/hono/index.mjs +1 -250
  86. package/dist/hono/router.cjs +251 -0
  87. package/dist/hono/router.d.cts +135 -0
  88. package/dist/hono/router.d.mts +135 -0
  89. package/dist/hono/router.mjs +251 -0
  90. package/dist/index.cjs +16 -1097
  91. package/dist/index.d.cts +9 -563
  92. package/dist/index.d.mts +9 -563
  93. package/dist/index.mjs +8 -1089
  94. package/dist/koa/index.cjs +2 -261
  95. package/dist/koa/index.d.cts +1 -131
  96. package/dist/koa/index.d.mts +1 -131
  97. package/dist/koa/index.mjs +1 -260
  98. package/dist/koa/router.cjs +261 -0
  99. package/dist/koa/router.d.cts +136 -0
  100. package/dist/koa/router.d.mts +136 -0
  101. package/dist/koa/router.mjs +261 -0
  102. package/dist/types/basic.d.cts +53 -0
  103. package/dist/types/basic.d.mts +11 -1
  104. package/dist/types/express.d.cts +48 -0
  105. package/dist/types/express.d.mts +10 -4
  106. package/dist/types/fastify.d.cts +24 -0
  107. package/dist/types/fastify.d.mts +7 -4
  108. package/dist/types/h3.d.cts +46 -0
  109. package/dist/types/h3.d.mts +10 -5
  110. package/dist/types/hono.d.cts +22 -0
  111. package/dist/types/hono.d.mts +8 -6
  112. package/dist/types/koa.d.cts +26 -0
  113. package/dist/types/koa.d.mts +7 -5
  114. package/package.json +1 -1
  115. package/dist/router-BEgAxp5A.d.cts +0 -649
  116. package/dist/router-DKKYx23P.d.mts +0 -649
@@ -0,0 +1,23 @@
1
+
2
+ //#region src/ClearRequest.ts
3
+ var ClearRequest = class {
4
+ /**
5
+ * @param body - Parsed request body
6
+ */
7
+ body;
8
+ /**
9
+ * @param query - Parsed query parameters
10
+ */
11
+ query;
12
+ /**
13
+ * @param params - Parsed route parameters
14
+ */
15
+ params;
16
+ route;
17
+ constructor(init) {
18
+ Object.assign(this, init);
19
+ }
20
+ };
21
+
22
+ //#endregion
23
+ exports.ClearRequest = ClearRequest;
@@ -0,0 +1,28 @@
1
+ import { RequestData } from "./types/basic.cjs";
2
+ import { Middleware } from "./types/express.cjs";
3
+ import { Middleware as Middleware$1 } from "./types/fastify.cjs";
4
+ import { Middleware as Middleware$2 } from "./types/h3.cjs";
5
+ import { Middleware as Middleware$3 } from "./types/hono.cjs";
6
+ import { Middleware as Middleware$4 } from "./types/koa.cjs";
7
+ import { Route } from "./Route.cjs";
8
+
9
+ //#region src/ClearRequest.d.ts
10
+ declare class ClearRequest<X = any, M = Middleware$2 | Middleware | Middleware$1 | Middleware$3 | Middleware$4> {
11
+ [key: string]: any;
12
+ /**
13
+ * @param body - Parsed request body
14
+ */
15
+ body: RequestData;
16
+ /**
17
+ * @param query - Parsed query parameters
18
+ */
19
+ query: RequestData;
20
+ /**
21
+ * @param params - Parsed route parameters
22
+ */
23
+ params: RequestData;
24
+ route: Route<X, M>;
25
+ constructor(init?: Partial<ClearRequest>);
26
+ }
27
+ //#endregion
28
+ export { ClearRequest };
@@ -0,0 +1,28 @@
1
+ import { RequestData } from "./types/basic.mjs";
2
+ import { Middleware } from "./types/express.mjs";
3
+ import { Middleware as Middleware$1 } from "./types/fastify.mjs";
4
+ import { Middleware as Middleware$2 } from "./types/h3.mjs";
5
+ import { Middleware as Middleware$3 } from "./types/hono.mjs";
6
+ import { Middleware as Middleware$4 } from "./types/koa.mjs";
7
+ import { Route } from "./Route.mjs";
8
+
9
+ //#region src/ClearRequest.d.ts
10
+ declare class ClearRequest<X = any, M = Middleware$2 | Middleware | Middleware$1 | Middleware$3 | Middleware$4> {
11
+ [key: string]: any;
12
+ /**
13
+ * @param body - Parsed request body
14
+ */
15
+ body: RequestData;
16
+ /**
17
+ * @param query - Parsed query parameters
18
+ */
19
+ query: RequestData;
20
+ /**
21
+ * @param params - Parsed route parameters
22
+ */
23
+ params: RequestData;
24
+ route: Route<X, M>;
25
+ constructor(init?: Partial<ClearRequest>);
26
+ }
27
+ //#endregion
28
+ export { ClearRequest };
@@ -0,0 +1,22 @@
1
+ //#region src/ClearRequest.ts
2
+ var ClearRequest = class {
3
+ /**
4
+ * @param body - Parsed request body
5
+ */
6
+ body;
7
+ /**
8
+ * @param query - Parsed query parameters
9
+ */
10
+ query;
11
+ /**
12
+ * @param params - Parsed route parameters
13
+ */
14
+ params;
15
+ route;
16
+ constructor(init) {
17
+ Object.assign(this, init);
18
+ }
19
+ };
20
+
21
+ //#endregion
22
+ export { ClearRequest };
@@ -0,0 +1,12 @@
1
+ //#region src/Contracts.d.ts
2
+ /**
3
+ * HTTP context passed to route handlers
4
+ */
5
+ interface ClearHttpContext {}
6
+ interface RouteParameter {
7
+ name: string;
8
+ field?: string;
9
+ optional: boolean;
10
+ }
11
+ //#endregion
12
+ export { ClearHttpContext, RouteParameter };
@@ -0,0 +1,12 @@
1
+ //#region src/Contracts.d.ts
2
+ /**
3
+ * HTTP context passed to route handlers
4
+ */
5
+ interface ClearHttpContext {}
6
+ interface RouteParameter {
7
+ name: string;
8
+ field?: string;
9
+ optional: boolean;
10
+ }
11
+ //#endregion
12
+ export { ClearHttpContext, RouteParameter };
@@ -0,0 +1,12 @@
1
+
2
+ //#region src/Controller.ts
3
+ var Controller = class {
4
+ ctx;
5
+ body;
6
+ query;
7
+ params;
8
+ clearRequest;
9
+ };
10
+
11
+ //#endregion
12
+ exports.Controller = Controller;
@@ -0,0 +1,14 @@
1
+ import { RequestData } from "./types/basic.cjs";
2
+ import { ClearRequest } from "./ClearRequest.cjs";
3
+
4
+ //#region src/Controller.d.ts
5
+ declare abstract class Controller<X = any> {
6
+ [x: string]: any;
7
+ ctx: X;
8
+ body: RequestData;
9
+ query: RequestData;
10
+ params: RequestData;
11
+ clearRequest: ClearRequest;
12
+ }
13
+ //#endregion
14
+ export { Controller };
@@ -0,0 +1,14 @@
1
+ import { RequestData } from "./types/basic.mjs";
2
+ import { ClearRequest } from "./ClearRequest.mjs";
3
+
4
+ //#region src/Controller.d.ts
5
+ declare abstract class Controller<X = any> {
6
+ [x: string]: any;
7
+ ctx: X;
8
+ body: RequestData;
9
+ query: RequestData;
10
+ params: RequestData;
11
+ clearRequest: ClearRequest;
12
+ }
13
+ //#endregion
14
+ export { Controller };
@@ -0,0 +1,11 @@
1
+ //#region src/Controller.ts
2
+ var Controller = class {
3
+ ctx;
4
+ body;
5
+ query;
6
+ params;
7
+ clearRequest;
8
+ };
9
+
10
+ //#endregion
11
+ export { Controller };
@@ -10,6 +10,11 @@ import { Middleware as Middleware$4 } from "./types/express.mjs";
10
10
  * HTTP context passed to route handlers
11
11
  */
12
12
  interface ClearHttpContext {}
13
+ interface RouteParameter {
14
+ name: string;
15
+ field?: string;
16
+ optional: boolean;
17
+ }
13
18
  //#endregion
14
19
  //#region src/core/Response.d.ts
15
20
  declare class Response {
@@ -35,11 +40,12 @@ declare class Response {
35
40
  }
36
41
  //#endregion
37
42
  //#region src/Route.d.ts
38
- interface RouteParameter {
39
- name: string;
40
- field?: string;
41
- optional: boolean;
42
- }
43
+ /**
44
+ * @class clear-router Route
45
+ * @description A route describes a single enpoint on clear-router
46
+ * @author 3m1n3nc3
47
+ * @repository https://github.com/arkstack-tmp/clear-router
48
+ */
43
49
  declare class Route<X = any, M = Middleware$1 | Middleware$4, H = any> {
44
50
  ctx: X;
45
51
  body: RequestData;
@@ -61,9 +67,30 @@ declare class Route<X = any, M = Middleware$1 | Middleware$4, H = any> {
61
67
  registrationPaths?: string[];
62
68
  parameters?: RouteParameter[];
63
69
  onName?: (name: string, route: Route<X, M, H>, previousName?: string) => void;
70
+ normalizeMiddleware?: (middleware: M) => M;
64
71
  });
65
72
  private onName?;
73
+ private normalizeMiddleware?;
74
+ /**
75
+ * Set the route name
76
+ *
77
+ * @param name
78
+ * @returns
79
+ */
66
80
  name(name: string): this;
81
+ /**
82
+ * Register one or more middleware that will be executed before the route.
83
+ *
84
+ * @param middlewares
85
+ * @returns
86
+ */
87
+ middleware(middlewares: M[] | M): this;
88
+ /**
89
+ * Get the path generated and accessible by this route
90
+ *
91
+ * @param params
92
+ * @returns
93
+ */
67
94
  toPath(params?: RequestData): string;
68
95
  }
69
96
  //#endregion
@@ -0,0 +1,26 @@
1
+
2
+ //#region src/ResourceRouteSelection.ts
3
+ var ResourceRouteSelection = class {
4
+ constructor(routes) {
5
+ this.routes = routes;
6
+ }
7
+ /**
8
+ * Register one or more middleware that will be executed before the route.
9
+ *
10
+ * @param middlewares
11
+ * @returns
12
+ */
13
+ middleware(middlewares) {
14
+ for (const route of this.routes) route.middleware(middlewares);
15
+ return this;
16
+ }
17
+ all() {
18
+ return this.routes;
19
+ }
20
+ first() {
21
+ return this.routes[0];
22
+ }
23
+ };
24
+
25
+ //#endregion
26
+ exports.ResourceRouteSelection = ResourceRouteSelection;
@@ -0,0 +1,20 @@
1
+ import { Middleware } from "./types/express.cjs";
2
+ import { Middleware as Middleware$1 } from "./types/h3.cjs";
3
+ import { Route } from "./Route.cjs";
4
+
5
+ //#region src/ResourceRouteSelection.d.ts
6
+ declare class ResourceRouteSelection<X = any, M = Middleware$1 | Middleware, H = any> {
7
+ readonly routes: Array<Route<X, M, H>>;
8
+ constructor(routes: Array<Route<X, M, H>>);
9
+ /**
10
+ * Register one or more middleware that will be executed before the route.
11
+ *
12
+ * @param middlewares
13
+ * @returns
14
+ */
15
+ middleware(middlewares: M[] | M): this;
16
+ all(): Array<Route<X, M, H>>;
17
+ first(): Route<X, M, H> | undefined;
18
+ }
19
+ //#endregion
20
+ export { ResourceRouteSelection };
@@ -0,0 +1,20 @@
1
+ import { Middleware } from "./types/express.mjs";
2
+ import { Middleware as Middleware$1 } from "./types/h3.mjs";
3
+ import { Route } from "./Route.mjs";
4
+
5
+ //#region src/ResourceRouteSelection.d.ts
6
+ declare class ResourceRouteSelection<X = any, M = Middleware$1 | Middleware, H = any> {
7
+ readonly routes: Array<Route<X, M, H>>;
8
+ constructor(routes: Array<Route<X, M, H>>);
9
+ /**
10
+ * Register one or more middleware that will be executed before the route.
11
+ *
12
+ * @param middlewares
13
+ * @returns
14
+ */
15
+ middleware(middlewares: M[] | M): this;
16
+ all(): Array<Route<X, M, H>>;
17
+ first(): Route<X, M, H> | undefined;
18
+ }
19
+ //#endregion
20
+ export { ResourceRouteSelection };
@@ -0,0 +1,25 @@
1
+ //#region src/ResourceRouteSelection.ts
2
+ var ResourceRouteSelection = class {
3
+ constructor(routes) {
4
+ this.routes = routes;
5
+ }
6
+ /**
7
+ * Register one or more middleware that will be executed before the route.
8
+ *
9
+ * @param middlewares
10
+ * @returns
11
+ */
12
+ middleware(middlewares) {
13
+ for (const route of this.routes) route.middleware(middlewares);
14
+ return this;
15
+ }
16
+ all() {
17
+ return this.routes;
18
+ }
19
+ first() {
20
+ return this.routes[0];
21
+ }
22
+ };
23
+
24
+ //#endregion
25
+ export { ResourceRouteSelection };
@@ -0,0 +1,60 @@
1
+ const require_ResourceRouteSelection = require('./ResourceRouteSelection.cjs');
2
+
3
+ //#region src/ResourceRoutes.ts
4
+ /**
5
+ * @class clear-router ResourceRoutes
6
+ * @description A ResourceRoutes creates a collection of resourceful routes in a single call
7
+ * @author 3m1n3nc3
8
+ * @repository https://github.com/arkstack-tmp/clear-router
9
+ */
10
+ var ResourceRoutes = class {
11
+ constructor(routes) {
12
+ this.routes = routes;
13
+ }
14
+ /**
15
+ * Register one or more middleware that will be executed before the route.
16
+ *
17
+ * @param middlewares
18
+ * @returns
19
+ */
20
+ middleware(middlewares) {
21
+ for (const route of Object.values(this.routes)) route?.middleware(middlewares);
22
+ return this;
23
+ }
24
+ action(action) {
25
+ return this.routes[action];
26
+ }
27
+ index() {
28
+ return this.routes.index;
29
+ }
30
+ show() {
31
+ return this.routes.show;
32
+ }
33
+ create() {
34
+ return this.routes.create;
35
+ }
36
+ update() {
37
+ return this.routes.update;
38
+ }
39
+ destroy() {
40
+ return this.routes.destroy;
41
+ }
42
+ get() {
43
+ return this.byMethod("get");
44
+ }
45
+ post() {
46
+ return this.byMethod("post");
47
+ }
48
+ put() {
49
+ return this.byMethod("put");
50
+ }
51
+ delete() {
52
+ return this.byMethod("delete");
53
+ }
54
+ byMethod(method) {
55
+ return new require_ResourceRouteSelection.ResourceRouteSelection(Object.values(this.routes).filter((route) => Boolean(route?.methods.includes(method))));
56
+ }
57
+ };
58
+
59
+ //#endregion
60
+ exports.ResourceRoutes = ResourceRoutes;
@@ -0,0 +1,37 @@
1
+ import { HttpMethod, ResourceAction } from "./types/basic.cjs";
2
+ import { Middleware } from "./types/express.cjs";
3
+ import { Middleware as Middleware$1 } from "./types/h3.cjs";
4
+ import { Route } from "./Route.cjs";
5
+ import { ResourceRouteSelection } from "./ResourceRouteSelection.cjs";
6
+
7
+ //#region src/ResourceRoutes.d.ts
8
+ /**
9
+ * @class clear-router ResourceRoutes
10
+ * @description A ResourceRoutes creates a collection of resourceful routes in a single call
11
+ * @author 3m1n3nc3
12
+ * @repository https://github.com/arkstack-tmp/clear-router
13
+ */
14
+ declare class ResourceRoutes<X = any, M = Middleware$1 | Middleware, H = any> {
15
+ readonly routes: Partial<Record<ResourceAction, Route<X, M, H>>>;
16
+ constructor(routes: Partial<Record<ResourceAction, Route<X, M, H>>>);
17
+ /**
18
+ * Register one or more middleware that will be executed before the route.
19
+ *
20
+ * @param middlewares
21
+ * @returns
22
+ */
23
+ middleware(middlewares: M[] | M): this;
24
+ action(action: ResourceAction): Route<X, M, H> | undefined;
25
+ index(): Route<X, M, H> | undefined;
26
+ show(): Route<X, M, H> | undefined;
27
+ create(): Route<X, M, H> | undefined;
28
+ update(): Route<X, M, H> | undefined;
29
+ destroy(): Route<X, M, H> | undefined;
30
+ get(): ResourceRouteSelection<X, M, H>;
31
+ post(): ResourceRouteSelection<X, M, H>;
32
+ put(): ResourceRouteSelection<X, M, H>;
33
+ delete(): ResourceRouteSelection<X, M, H>;
34
+ protected byMethod(method: HttpMethod): ResourceRouteSelection<X, M, H>;
35
+ }
36
+ //#endregion
37
+ export { ResourceRoutes };
@@ -0,0 +1,37 @@
1
+ import { HttpMethod, ResourceAction } from "./types/basic.mjs";
2
+ import { Middleware } from "./types/express.mjs";
3
+ import { Middleware as Middleware$1 } from "./types/h3.mjs";
4
+ import { Route } from "./Route.mjs";
5
+ import { ResourceRouteSelection } from "./ResourceRouteSelection.mjs";
6
+
7
+ //#region src/ResourceRoutes.d.ts
8
+ /**
9
+ * @class clear-router ResourceRoutes
10
+ * @description A ResourceRoutes creates a collection of resourceful routes in a single call
11
+ * @author 3m1n3nc3
12
+ * @repository https://github.com/arkstack-tmp/clear-router
13
+ */
14
+ declare class ResourceRoutes<X = any, M = Middleware$1 | Middleware, H = any> {
15
+ readonly routes: Partial<Record<ResourceAction, Route<X, M, H>>>;
16
+ constructor(routes: Partial<Record<ResourceAction, Route<X, M, H>>>);
17
+ /**
18
+ * Register one or more middleware that will be executed before the route.
19
+ *
20
+ * @param middlewares
21
+ * @returns
22
+ */
23
+ middleware(middlewares: M[] | M): this;
24
+ action(action: ResourceAction): Route<X, M, H> | undefined;
25
+ index(): Route<X, M, H> | undefined;
26
+ show(): Route<X, M, H> | undefined;
27
+ create(): Route<X, M, H> | undefined;
28
+ update(): Route<X, M, H> | undefined;
29
+ destroy(): Route<X, M, H> | undefined;
30
+ get(): ResourceRouteSelection<X, M, H>;
31
+ post(): ResourceRouteSelection<X, M, H>;
32
+ put(): ResourceRouteSelection<X, M, H>;
33
+ delete(): ResourceRouteSelection<X, M, H>;
34
+ protected byMethod(method: HttpMethod): ResourceRouteSelection<X, M, H>;
35
+ }
36
+ //#endregion
37
+ export { ResourceRoutes };
@@ -0,0 +1,60 @@
1
+ import { ResourceRouteSelection } from "./ResourceRouteSelection.mjs";
2
+
3
+ //#region src/ResourceRoutes.ts
4
+ /**
5
+ * @class clear-router ResourceRoutes
6
+ * @description A ResourceRoutes creates a collection of resourceful routes in a single call
7
+ * @author 3m1n3nc3
8
+ * @repository https://github.com/arkstack-tmp/clear-router
9
+ */
10
+ var ResourceRoutes = class {
11
+ constructor(routes) {
12
+ this.routes = routes;
13
+ }
14
+ /**
15
+ * Register one or more middleware that will be executed before the route.
16
+ *
17
+ * @param middlewares
18
+ * @returns
19
+ */
20
+ middleware(middlewares) {
21
+ for (const route of Object.values(this.routes)) route?.middleware(middlewares);
22
+ return this;
23
+ }
24
+ action(action) {
25
+ return this.routes[action];
26
+ }
27
+ index() {
28
+ return this.routes.index;
29
+ }
30
+ show() {
31
+ return this.routes.show;
32
+ }
33
+ create() {
34
+ return this.routes.create;
35
+ }
36
+ update() {
37
+ return this.routes.update;
38
+ }
39
+ destroy() {
40
+ return this.routes.destroy;
41
+ }
42
+ get() {
43
+ return this.byMethod("get");
44
+ }
45
+ post() {
46
+ return this.byMethod("post");
47
+ }
48
+ put() {
49
+ return this.byMethod("put");
50
+ }
51
+ delete() {
52
+ return this.byMethod("delete");
53
+ }
54
+ byMethod(method) {
55
+ return new ResourceRouteSelection(Object.values(this.routes).filter((route) => Boolean(route?.methods.includes(method))));
56
+ }
57
+ };
58
+
59
+ //#endregion
60
+ export { ResourceRoutes };
package/dist/Route.cjs ADDED
@@ -0,0 +1,90 @@
1
+
2
+ //#region src/Route.ts
3
+ /**
4
+ * @class clear-router Route
5
+ * @description A route describes a single enpoint on clear-router
6
+ * @author 3m1n3nc3
7
+ * @repository https://github.com/arkstack-tmp/clear-router
8
+ */
9
+ var Route = class {
10
+ ctx;
11
+ body = {};
12
+ query = {};
13
+ params = {};
14
+ clearRequest;
15
+ methods;
16
+ path;
17
+ registrationPaths;
18
+ parameters;
19
+ routeName;
20
+ handler;
21
+ middlewares;
22
+ controllerName;
23
+ actionName;
24
+ handlerType;
25
+ middlewareCount;
26
+ constructor(methods, path, handler, middlewares = [], options = {}) {
27
+ this.methods = methods;
28
+ this.path = path;
29
+ this.registrationPaths = options.registrationPaths || [path];
30
+ this.parameters = options.parameters || [];
31
+ this.handler = handler;
32
+ this.middlewares = middlewares;
33
+ this.handlerType = Array.isArray(handler) ? "controller" : "function";
34
+ this.middlewareCount = middlewares.length;
35
+ this.controllerName = Array.isArray(handler) ? handler[0]?.name : void 0;
36
+ this.actionName = Array.isArray(handler) ? handler[1] : typeof handler === "function" ? handler.constructor.name ?? handler.name : void 0;
37
+ this.onName = options.onName;
38
+ this.normalizeMiddleware = options.normalizeMiddleware;
39
+ }
40
+ onName;
41
+ normalizeMiddleware;
42
+ /**
43
+ * Set the route name
44
+ *
45
+ * @param name
46
+ * @returns
47
+ */
48
+ name(name) {
49
+ const previousName = this.routeName;
50
+ this.routeName = name;
51
+ this.onName?.(name, this, previousName);
52
+ return this;
53
+ }
54
+ /**
55
+ * Register one or more middleware that will be executed before the route.
56
+ *
57
+ * @param middlewares
58
+ * @returns
59
+ */
60
+ middleware(middlewares) {
61
+ const normalized = (Array.isArray(middlewares) ? middlewares : [middlewares]).map((middleware) => this.normalizeMiddleware?.(middleware) ?? middleware);
62
+ this.middlewares.push(...normalized);
63
+ this.middlewareCount = this.middlewares.length;
64
+ return this;
65
+ }
66
+ /**
67
+ * Get the path generated and accessible by this route
68
+ *
69
+ * @param params
70
+ * @returns
71
+ */
72
+ toPath(params = {}) {
73
+ return this.path.replace(/\/?\{([^{}]+)\}/g, (segment, raw) => {
74
+ const optional = raw.endsWith("?");
75
+ const [rawName, rawField] = (optional ? raw.slice(0, -1) : raw).split(":", 2);
76
+ const name = rawName.trim();
77
+ const field = rawField?.trim();
78
+ const value = params[name];
79
+ const resolved = field && value && typeof value === "object" ? value[field] : value;
80
+ if (typeof resolved === "undefined" || resolved === null || resolved === "") {
81
+ if (optional) return "";
82
+ throw new Error(`Missing required route parameter: ${name}`);
83
+ }
84
+ return `${segment.startsWith("/") ? "/" : ""}${encodeURIComponent(String(resolved))}`;
85
+ }) || "/";
86
+ }
87
+ };
88
+
89
+ //#endregion
90
+ exports.Route = Route;