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.
- package/dist/ClearRequest.cjs +23 -0
- package/dist/ClearRequest.d.cts +28 -0
- package/dist/ClearRequest.d.mts +28 -0
- package/dist/ClearRequest.mjs +22 -0
- package/dist/Contracts.d.cts +12 -0
- package/dist/Contracts.d.mts +12 -0
- package/dist/Controller.cjs +12 -0
- package/dist/Controller.d.cts +14 -0
- package/dist/Controller.d.mts +14 -0
- package/dist/Controller.mjs +11 -0
- package/dist/{Request-DKXwa_W0.d.mts → Request-Ci0UQ-Vl.d.mts} +32 -5
- package/dist/ResourceRouteSelection.cjs +26 -0
- package/dist/ResourceRouteSelection.d.cts +20 -0
- package/dist/ResourceRouteSelection.d.mts +20 -0
- package/dist/ResourceRouteSelection.mjs +25 -0
- package/dist/ResourceRoutes.cjs +60 -0
- package/dist/ResourceRoutes.d.cts +37 -0
- package/dist/ResourceRoutes.d.mts +37 -0
- package/dist/ResourceRoutes.mjs +60 -0
- package/dist/Route.cjs +90 -0
- package/dist/Route.d.cts +62 -0
- package/dist/Route.d.mts +62 -0
- package/dist/Route.mjs +89 -0
- package/dist/core/Request.cjs +35 -0
- package/dist/core/Request.d.cts +25 -0
- package/dist/core/Request.d.mts +25 -0
- package/dist/core/Request.mjs +35 -0
- package/dist/core/Response.cjs +59 -0
- package/dist/core/Response.d.cts +24 -0
- package/dist/core/Response.d.mts +24 -0
- package/dist/core/Response.mjs +58 -0
- package/dist/{bindings-CLsZjOEy.cjs → core/bindings.cjs} +10 -160
- package/dist/{bindings-CNL7bpz5.d.mts → core/bindings.d.cts} +1 -1
- package/dist/{bindings-CxvtC8XS.d.cts → core/bindings.d.mts} +1 -1
- package/dist/{bindings-XLDXFpHZ.mjs → core/bindings.mjs} +3 -110
- package/dist/core/index.cjs +7 -17
- package/dist/core/index.d.cts +4 -1
- package/dist/core/index.d.mts +4 -1
- package/dist/core/index.mjs +4 -14
- package/dist/core/plugins.cjs +14 -0
- package/dist/core/plugins.d.cts +109 -0
- package/dist/core/plugins.d.mts +109 -0
- package/dist/core/plugins.mjs +13 -0
- package/dist/{responses-Bvnk0uvc.cjs → core/responses.cjs} +5 -20
- package/dist/{responses-BvETUeDL.mjs → core/responses.mjs} +2 -2
- package/dist/{router-C6W-k6sS.cjs → core/router.cjs} +67 -72
- package/dist/core/router.d.cts +286 -0
- package/dist/core/router.d.mts +286 -0
- package/dist/{router-Dc9w86Wn.mjs → core/router.mjs} +62 -62
- package/dist/decorators/index.cjs +1 -1
- package/dist/decorators/index.d.cts +1 -1
- package/dist/decorators/index.d.mts +1 -1
- package/dist/decorators/index.mjs +1 -1
- package/dist/decorators/setup.cjs +2 -2
- package/dist/decorators/setup.d.cts +1 -1
- package/dist/decorators/setup.d.mts +1 -2
- package/dist/decorators/setup.mjs +2 -2
- package/dist/express/index.cjs +2 -265
- package/dist/express/index.d.cts +1 -127
- package/dist/express/index.d.mts +1 -127
- package/dist/express/index.mjs +1 -264
- package/dist/express/router.cjs +265 -0
- package/dist/express/router.d.cts +132 -0
- package/dist/express/router.d.mts +132 -0
- package/dist/express/router.mjs +265 -0
- package/dist/fastify/index.cjs +2 -254
- package/dist/fastify/index.d.cts +1 -125
- package/dist/fastify/index.d.mts +1 -125
- package/dist/fastify/index.mjs +1 -253
- package/dist/fastify/router.cjs +254 -0
- package/dist/fastify/router.d.cts +130 -0
- package/dist/fastify/router.d.mts +130 -0
- package/dist/fastify/router.mjs +254 -0
- package/dist/h3/index.cjs +2 -260
- package/dist/h3/index.d.cts +1 -128
- package/dist/h3/index.d.mts +1 -128
- package/dist/h3/index.mjs +1 -259
- package/dist/h3/router.cjs +260 -0
- package/dist/h3/router.d.cts +133 -0
- package/dist/h3/router.d.mts +133 -0
- package/dist/h3/router.mjs +260 -0
- package/dist/hono/index.cjs +2 -251
- package/dist/hono/index.d.cts +1 -130
- package/dist/hono/index.d.mts +1 -130
- package/dist/hono/index.mjs +1 -250
- package/dist/hono/router.cjs +251 -0
- package/dist/hono/router.d.cts +135 -0
- package/dist/hono/router.d.mts +135 -0
- package/dist/hono/router.mjs +251 -0
- package/dist/index.cjs +16 -1097
- package/dist/index.d.cts +9 -563
- package/dist/index.d.mts +9 -563
- package/dist/index.mjs +8 -1089
- package/dist/koa/index.cjs +2 -261
- package/dist/koa/index.d.cts +1 -131
- package/dist/koa/index.d.mts +1 -131
- package/dist/koa/index.mjs +1 -260
- package/dist/koa/router.cjs +261 -0
- package/dist/koa/router.d.cts +136 -0
- package/dist/koa/router.d.mts +136 -0
- package/dist/koa/router.mjs +261 -0
- package/dist/types/basic.d.cts +53 -0
- package/dist/types/basic.d.mts +11 -1
- package/dist/types/express.d.cts +48 -0
- package/dist/types/express.d.mts +10 -4
- package/dist/types/fastify.d.cts +24 -0
- package/dist/types/fastify.d.mts +7 -4
- package/dist/types/h3.d.cts +46 -0
- package/dist/types/h3.d.mts +10 -5
- package/dist/types/hono.d.cts +22 -0
- package/dist/types/hono.d.mts +8 -6
- package/dist/types/koa.d.cts +26 -0
- package/dist/types/koa.d.mts +7 -5
- package/package.json +1 -1
- package/dist/router-BEgAxp5A.d.cts +0 -649
- 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,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 };
|
|
@@ -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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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;
|