clear-router 2.8.0 → 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.
- package/dist/ResourceRoutes.cjs +97 -7
- package/dist/ResourceRoutes.d.cts +65 -6
- package/dist/ResourceRoutes.d.mts +65 -6
- package/dist/ResourceRoutes.mjs +97 -7
- package/dist/core/helpers.cjs +9 -0
- package/dist/core/helpers.d.cts +4 -0
- package/dist/core/helpers.d.mts +4 -0
- package/dist/core/helpers.mjs +8 -0
- package/dist/core/index.cjs +3 -1
- package/dist/core/index.d.cts +2 -1
- package/dist/core/index.d.mts +2 -1
- package/dist/core/index.mjs +2 -1
- package/dist/core/router.cjs +12 -36
- package/dist/core/router.d.cts +4 -3
- package/dist/core/router.d.mts +4 -3
- package/dist/core/router.mjs +12 -36
- package/dist/express/router.d.cts +3 -3
- package/dist/express/router.d.mts +3 -3
- package/dist/fastify/router.d.cts +3 -3
- package/dist/fastify/router.d.mts +3 -3
- package/dist/h3/router.d.cts +3 -3
- package/dist/h3/router.d.mts +3 -3
- package/dist/hono/router.d.cts +3 -3
- package/dist/hono/router.d.mts +3 -3
- package/dist/index.cjs +3 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.mjs +2 -1
- package/dist/koa/router.d.cts +3 -3
- package/dist/koa/router.d.mts +3 -3
- package/dist/types/basic.d.cts +4 -5
- package/dist/types/basic.d.mts +4 -5
- package/package.json +1 -1
package/dist/ResourceRoutes.cjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
const require_ResourceRouteSelection = require('./ResourceRouteSelection.cjs');
|
|
2
|
+
const require_helpers = require('./core/helpers.cjs');
|
|
3
|
+
require('./core/index.cjs');
|
|
2
4
|
|
|
3
5
|
//#region src/ResourceRoutes.ts
|
|
4
6
|
/**
|
|
@@ -7,17 +9,78 @@ const require_ResourceRouteSelection = require('./ResourceRouteSelection.cjs');
|
|
|
7
9
|
* @author 3m1n3nc3
|
|
8
10
|
* @repository https://github.com/arkstack-tmp/clear-router
|
|
9
11
|
*/
|
|
10
|
-
var ResourceRoutes = class {
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
var ResourceRoutes = class ResourceRoutes {
|
|
13
|
+
static actions = {
|
|
14
|
+
index: {
|
|
15
|
+
method: "get",
|
|
16
|
+
path: "/"
|
|
17
|
+
},
|
|
18
|
+
show: {
|
|
19
|
+
method: "get",
|
|
20
|
+
path: "/:{param}"
|
|
21
|
+
},
|
|
22
|
+
create: {
|
|
23
|
+
method: "post",
|
|
24
|
+
path: "/"
|
|
25
|
+
},
|
|
26
|
+
update: {
|
|
27
|
+
method: "put",
|
|
28
|
+
path: "/:{param}"
|
|
29
|
+
},
|
|
30
|
+
destroy: {
|
|
31
|
+
method: "delete",
|
|
32
|
+
path: "/:{param}"
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
routes = {};
|
|
36
|
+
options;
|
|
37
|
+
chainedMiddlewares = [];
|
|
38
|
+
constructor(basePath, controller, paramName, options, registerRoute, removeRoute) {
|
|
39
|
+
this.basePath = basePath;
|
|
40
|
+
this.controller = controller;
|
|
41
|
+
this.paramName = paramName;
|
|
42
|
+
this.registerRoute = registerRoute;
|
|
43
|
+
this.removeRoute = removeRoute;
|
|
44
|
+
this.options = options ?? {};
|
|
45
|
+
}
|
|
46
|
+
register() {
|
|
47
|
+
this.clear();
|
|
48
|
+
const preController = typeof this.controller === "function" ? new this.controller() : this.controller;
|
|
49
|
+
for (const action of this.selectedActions()) {
|
|
50
|
+
if (typeof preController[action] !== "function") continue;
|
|
51
|
+
const definition = this.definitionFor(action);
|
|
52
|
+
const route = this.registerRoute({
|
|
53
|
+
action,
|
|
54
|
+
method: definition.method,
|
|
55
|
+
path: `${this.basePath}${definition.path}`,
|
|
56
|
+
handler: [this.controller, action],
|
|
57
|
+
middlewares: this.resolveActionMiddlewares(action),
|
|
58
|
+
name: `${this.nameFor(definition.path)}.${action.toLowerCase()}`
|
|
59
|
+
});
|
|
60
|
+
this.routes[action] = route;
|
|
61
|
+
}
|
|
62
|
+
for (const middlewares of this.chainedMiddlewares) this.middleware(middlewares, false);
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Only register routes for the provided actions.
|
|
67
|
+
*/
|
|
68
|
+
only(action, ...actions) {
|
|
69
|
+
this.options.only = Array.from(new Set(require_helpers.wrap(action).concat(actions)));
|
|
70
|
+
return this.register();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Register all resource routes except the provided actions.
|
|
74
|
+
*/
|
|
75
|
+
except(action, ...actions) {
|
|
76
|
+
this.options.except = Array.from(new Set(require_helpers.wrap(action).concat(actions)));
|
|
77
|
+
return this.register();
|
|
13
78
|
}
|
|
14
79
|
/**
|
|
15
80
|
* Register one or more middleware that will be executed before the route.
|
|
16
|
-
*
|
|
17
|
-
* @param middlewares
|
|
18
|
-
* @returns
|
|
19
81
|
*/
|
|
20
|
-
middleware(middlewares) {
|
|
82
|
+
middleware(middlewares, remember = true) {
|
|
83
|
+
if (remember) this.chainedMiddlewares.push(middlewares);
|
|
21
84
|
for (const route of Object.values(this.routes)) route?.middleware(middlewares);
|
|
22
85
|
return this;
|
|
23
86
|
}
|
|
@@ -51,9 +114,36 @@ var ResourceRoutes = class {
|
|
|
51
114
|
delete() {
|
|
52
115
|
return this.byMethod("delete");
|
|
53
116
|
}
|
|
117
|
+
selectedActions() {
|
|
118
|
+
const actions = this.options.only?.length ? this.options.only : Object.keys(ResourceRoutes.actions);
|
|
119
|
+
const except = new Set(this.options.except ?? []);
|
|
120
|
+
return actions.filter((action) => !except.has(action));
|
|
121
|
+
}
|
|
122
|
+
definitionFor(action) {
|
|
123
|
+
const definition = ResourceRoutes.actions[action];
|
|
124
|
+
return {
|
|
125
|
+
method: definition.method,
|
|
126
|
+
path: definition.path.replace("{param}", this.paramName)
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
resolveActionMiddlewares(action) {
|
|
130
|
+
const middlewares = this.isActionMiddlewareMap(this.options.middlewares) ? this.options.middlewares[action] : this.options.middlewares;
|
|
131
|
+
return Array.isArray(middlewares) ? middlewares : middlewares ? [middlewares] : void 0;
|
|
132
|
+
}
|
|
133
|
+
isActionMiddlewareMap(middlewares) {
|
|
134
|
+
if (!middlewares || Array.isArray(middlewares) || typeof middlewares !== "object") return false;
|
|
135
|
+
return Object.keys(ResourceRoutes.actions).some((action) => action in middlewares);
|
|
136
|
+
}
|
|
137
|
+
nameFor(path) {
|
|
138
|
+
return `${this.basePath}${path}`.replace(/\/:[^/]+|\/\{[^}]+\}/g, "").replace(/\{(\w+):[^}]+\}/g, "$1").replace(/\/|:|[{}]/g, ".").replace(/\.{2,}/g, ".").replace(/^\.|\.$/g, "");
|
|
139
|
+
}
|
|
54
140
|
byMethod(method) {
|
|
55
141
|
return new require_ResourceRouteSelection.ResourceRouteSelection(Object.values(this.routes).filter((route) => Boolean(route?.methods.includes(method))));
|
|
56
142
|
}
|
|
143
|
+
clear() {
|
|
144
|
+
for (const route of Object.values(this.routes)) if (route) this.removeRoute(route);
|
|
145
|
+
for (const key of Object.keys(this.routes)) delete this.routes[key];
|
|
146
|
+
}
|
|
57
147
|
};
|
|
58
148
|
|
|
59
149
|
//#endregion
|
|
@@ -1,10 +1,28 @@
|
|
|
1
|
-
import { HttpMethod, ResourceAction } from "./types/basic.cjs";
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction } from "./types/basic.cjs";
|
|
2
2
|
import { Middleware } from "./types/express.cjs";
|
|
3
3
|
import { Middleware as Middleware$1 } from "./types/h3.cjs";
|
|
4
4
|
import { Route } from "./Route.cjs";
|
|
5
5
|
import { ResourceRouteSelection } from "./ResourceRouteSelection.cjs";
|
|
6
6
|
|
|
7
7
|
//#region src/ResourceRoutes.d.ts
|
|
8
|
+
type ResourceRouteDefinition = {
|
|
9
|
+
method: HttpMethod;
|
|
10
|
+
path: string;
|
|
11
|
+
};
|
|
12
|
+
type ResourceRouteRegistrar<X, M, H> = (input: {
|
|
13
|
+
action: ResourceAction;
|
|
14
|
+
method: HttpMethod;
|
|
15
|
+
path: string;
|
|
16
|
+
handler: any;
|
|
17
|
+
middlewares?: M[];
|
|
18
|
+
name: string;
|
|
19
|
+
}) => Route<X, M, H>;
|
|
20
|
+
type ResourceRouteRemover<X, M, H> = (route: Route<X, M, H>) => void;
|
|
21
|
+
type ResourceRoutesOptions<M = any> = {
|
|
22
|
+
only?: ResourceAction[];
|
|
23
|
+
except?: ResourceAction[];
|
|
24
|
+
middlewares?: ApiResourceMiddleware<M>;
|
|
25
|
+
};
|
|
8
26
|
/**
|
|
9
27
|
* @class clear-router ResourceRoutes
|
|
10
28
|
* @description A ResourceRoutes creates a collection of resourceful routes in a single call
|
|
@@ -12,15 +30,50 @@ import { ResourceRouteSelection } from "./ResourceRouteSelection.cjs";
|
|
|
12
30
|
* @repository https://github.com/arkstack-tmp/clear-router
|
|
13
31
|
*/
|
|
14
32
|
declare class ResourceRoutes<X = any, M = Middleware$1 | Middleware, H = any> {
|
|
33
|
+
readonly basePath: string;
|
|
34
|
+
readonly controller: any;
|
|
35
|
+
readonly paramName: string;
|
|
36
|
+
protected readonly registerRoute: ResourceRouteRegistrar<X, M, H>;
|
|
37
|
+
protected readonly removeRoute: ResourceRouteRemover<X, M, H>;
|
|
38
|
+
static actions: {
|
|
39
|
+
readonly index: {
|
|
40
|
+
readonly method: "get";
|
|
41
|
+
readonly path: "/";
|
|
42
|
+
};
|
|
43
|
+
readonly show: {
|
|
44
|
+
readonly method: "get";
|
|
45
|
+
readonly path: "/:{param}";
|
|
46
|
+
};
|
|
47
|
+
readonly create: {
|
|
48
|
+
readonly method: "post";
|
|
49
|
+
readonly path: "/";
|
|
50
|
+
};
|
|
51
|
+
readonly update: {
|
|
52
|
+
readonly method: "put";
|
|
53
|
+
readonly path: "/:{param}";
|
|
54
|
+
};
|
|
55
|
+
readonly destroy: {
|
|
56
|
+
readonly method: "delete";
|
|
57
|
+
readonly path: "/:{param}";
|
|
58
|
+
};
|
|
59
|
+
};
|
|
15
60
|
readonly routes: Partial<Record<ResourceAction, Route<X, M, H>>>;
|
|
16
|
-
|
|
61
|
+
protected options: ResourceRoutesOptions<M>;
|
|
62
|
+
protected chainedMiddlewares: Array<M[] | M>;
|
|
63
|
+
constructor(basePath: string, controller: any, paramName: string, options: ResourceRoutesOptions<M> | undefined, registerRoute: ResourceRouteRegistrar<X, M, H>, removeRoute: ResourceRouteRemover<X, M, H>);
|
|
64
|
+
register(): this;
|
|
65
|
+
/**
|
|
66
|
+
* Only register routes for the provided actions.
|
|
67
|
+
*/
|
|
68
|
+
only(action: ResourceAction | ResourceAction[], ...actions: ResourceAction[]): this;
|
|
69
|
+
/**
|
|
70
|
+
* Register all resource routes except the provided actions.
|
|
71
|
+
*/
|
|
72
|
+
except(action: ResourceAction | ResourceAction[], ...actions: ResourceAction[]): this;
|
|
17
73
|
/**
|
|
18
74
|
* Register one or more middleware that will be executed before the route.
|
|
19
|
-
*
|
|
20
|
-
* @param middlewares
|
|
21
|
-
* @returns
|
|
22
75
|
*/
|
|
23
|
-
middleware(middlewares: M[] | M): this;
|
|
76
|
+
middleware(middlewares: M[] | M, remember?: boolean): this;
|
|
24
77
|
action(action: ResourceAction): Route<X, M, H> | undefined;
|
|
25
78
|
index(): Route<X, M, H> | undefined;
|
|
26
79
|
show(): Route<X, M, H> | undefined;
|
|
@@ -31,7 +84,13 @@ declare class ResourceRoutes<X = any, M = Middleware$1 | Middleware, H = any> {
|
|
|
31
84
|
post(): ResourceRouteSelection<X, M, H>;
|
|
32
85
|
put(): ResourceRouteSelection<X, M, H>;
|
|
33
86
|
delete(): ResourceRouteSelection<X, M, H>;
|
|
87
|
+
protected selectedActions(): ResourceAction[];
|
|
88
|
+
protected definitionFor(action: ResourceAction): ResourceRouteDefinition;
|
|
89
|
+
protected resolveActionMiddlewares(action: ResourceAction): M[] | undefined;
|
|
90
|
+
protected isActionMiddlewareMap(middlewares: ApiResourceMiddleware<M> | undefined): middlewares is { [K in ResourceAction]?: M | M[] };
|
|
91
|
+
protected nameFor(path: string): string;
|
|
34
92
|
protected byMethod(method: HttpMethod): ResourceRouteSelection<X, M, H>;
|
|
93
|
+
protected clear(): void;
|
|
35
94
|
}
|
|
36
95
|
//#endregion
|
|
37
96
|
export { ResourceRoutes };
|
|
@@ -1,10 +1,28 @@
|
|
|
1
|
-
import { HttpMethod, ResourceAction } from "./types/basic.mjs";
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction } from "./types/basic.mjs";
|
|
2
2
|
import { Middleware } from "./types/express.mjs";
|
|
3
3
|
import { Middleware as Middleware$1 } from "./types/h3.mjs";
|
|
4
4
|
import { Route } from "./Route.mjs";
|
|
5
5
|
import { ResourceRouteSelection } from "./ResourceRouteSelection.mjs";
|
|
6
6
|
|
|
7
7
|
//#region src/ResourceRoutes.d.ts
|
|
8
|
+
type ResourceRouteDefinition = {
|
|
9
|
+
method: HttpMethod;
|
|
10
|
+
path: string;
|
|
11
|
+
};
|
|
12
|
+
type ResourceRouteRegistrar<X, M, H> = (input: {
|
|
13
|
+
action: ResourceAction;
|
|
14
|
+
method: HttpMethod;
|
|
15
|
+
path: string;
|
|
16
|
+
handler: any;
|
|
17
|
+
middlewares?: M[];
|
|
18
|
+
name: string;
|
|
19
|
+
}) => Route<X, M, H>;
|
|
20
|
+
type ResourceRouteRemover<X, M, H> = (route: Route<X, M, H>) => void;
|
|
21
|
+
type ResourceRoutesOptions<M = any> = {
|
|
22
|
+
only?: ResourceAction[];
|
|
23
|
+
except?: ResourceAction[];
|
|
24
|
+
middlewares?: ApiResourceMiddleware<M>;
|
|
25
|
+
};
|
|
8
26
|
/**
|
|
9
27
|
* @class clear-router ResourceRoutes
|
|
10
28
|
* @description A ResourceRoutes creates a collection of resourceful routes in a single call
|
|
@@ -12,15 +30,50 @@ import { ResourceRouteSelection } from "./ResourceRouteSelection.mjs";
|
|
|
12
30
|
* @repository https://github.com/arkstack-tmp/clear-router
|
|
13
31
|
*/
|
|
14
32
|
declare class ResourceRoutes<X = any, M = Middleware$1 | Middleware, H = any> {
|
|
33
|
+
readonly basePath: string;
|
|
34
|
+
readonly controller: any;
|
|
35
|
+
readonly paramName: string;
|
|
36
|
+
protected readonly registerRoute: ResourceRouteRegistrar<X, M, H>;
|
|
37
|
+
protected readonly removeRoute: ResourceRouteRemover<X, M, H>;
|
|
38
|
+
static actions: {
|
|
39
|
+
readonly index: {
|
|
40
|
+
readonly method: "get";
|
|
41
|
+
readonly path: "/";
|
|
42
|
+
};
|
|
43
|
+
readonly show: {
|
|
44
|
+
readonly method: "get";
|
|
45
|
+
readonly path: "/:{param}";
|
|
46
|
+
};
|
|
47
|
+
readonly create: {
|
|
48
|
+
readonly method: "post";
|
|
49
|
+
readonly path: "/";
|
|
50
|
+
};
|
|
51
|
+
readonly update: {
|
|
52
|
+
readonly method: "put";
|
|
53
|
+
readonly path: "/:{param}";
|
|
54
|
+
};
|
|
55
|
+
readonly destroy: {
|
|
56
|
+
readonly method: "delete";
|
|
57
|
+
readonly path: "/:{param}";
|
|
58
|
+
};
|
|
59
|
+
};
|
|
15
60
|
readonly routes: Partial<Record<ResourceAction, Route<X, M, H>>>;
|
|
16
|
-
|
|
61
|
+
protected options: ResourceRoutesOptions<M>;
|
|
62
|
+
protected chainedMiddlewares: Array<M[] | M>;
|
|
63
|
+
constructor(basePath: string, controller: any, paramName: string, options: ResourceRoutesOptions<M> | undefined, registerRoute: ResourceRouteRegistrar<X, M, H>, removeRoute: ResourceRouteRemover<X, M, H>);
|
|
64
|
+
register(): this;
|
|
65
|
+
/**
|
|
66
|
+
* Only register routes for the provided actions.
|
|
67
|
+
*/
|
|
68
|
+
only(action: ResourceAction | ResourceAction[], ...actions: ResourceAction[]): this;
|
|
69
|
+
/**
|
|
70
|
+
* Register all resource routes except the provided actions.
|
|
71
|
+
*/
|
|
72
|
+
except(action: ResourceAction | ResourceAction[], ...actions: ResourceAction[]): this;
|
|
17
73
|
/**
|
|
18
74
|
* Register one or more middleware that will be executed before the route.
|
|
19
|
-
*
|
|
20
|
-
* @param middlewares
|
|
21
|
-
* @returns
|
|
22
75
|
*/
|
|
23
|
-
middleware(middlewares: M[] | M): this;
|
|
76
|
+
middleware(middlewares: M[] | M, remember?: boolean): this;
|
|
24
77
|
action(action: ResourceAction): Route<X, M, H> | undefined;
|
|
25
78
|
index(): Route<X, M, H> | undefined;
|
|
26
79
|
show(): Route<X, M, H> | undefined;
|
|
@@ -31,7 +84,13 @@ declare class ResourceRoutes<X = any, M = Middleware$1 | Middleware, H = any> {
|
|
|
31
84
|
post(): ResourceRouteSelection<X, M, H>;
|
|
32
85
|
put(): ResourceRouteSelection<X, M, H>;
|
|
33
86
|
delete(): ResourceRouteSelection<X, M, H>;
|
|
87
|
+
protected selectedActions(): ResourceAction[];
|
|
88
|
+
protected definitionFor(action: ResourceAction): ResourceRouteDefinition;
|
|
89
|
+
protected resolveActionMiddlewares(action: ResourceAction): M[] | undefined;
|
|
90
|
+
protected isActionMiddlewareMap(middlewares: ApiResourceMiddleware<M> | undefined): middlewares is { [K in ResourceAction]?: M | M[] };
|
|
91
|
+
protected nameFor(path: string): string;
|
|
34
92
|
protected byMethod(method: HttpMethod): ResourceRouteSelection<X, M, H>;
|
|
93
|
+
protected clear(): void;
|
|
35
94
|
}
|
|
36
95
|
//#endregion
|
|
37
96
|
export { ResourceRoutes };
|
package/dist/ResourceRoutes.mjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { ResourceRouteSelection } from "./ResourceRouteSelection.mjs";
|
|
2
|
+
import { wrap } from "./core/helpers.mjs";
|
|
3
|
+
import "./core/index.mjs";
|
|
2
4
|
|
|
3
5
|
//#region src/ResourceRoutes.ts
|
|
4
6
|
/**
|
|
@@ -7,17 +9,78 @@ import { ResourceRouteSelection } from "./ResourceRouteSelection.mjs";
|
|
|
7
9
|
* @author 3m1n3nc3
|
|
8
10
|
* @repository https://github.com/arkstack-tmp/clear-router
|
|
9
11
|
*/
|
|
10
|
-
var ResourceRoutes = class {
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
var ResourceRoutes = class ResourceRoutes {
|
|
13
|
+
static actions = {
|
|
14
|
+
index: {
|
|
15
|
+
method: "get",
|
|
16
|
+
path: "/"
|
|
17
|
+
},
|
|
18
|
+
show: {
|
|
19
|
+
method: "get",
|
|
20
|
+
path: "/:{param}"
|
|
21
|
+
},
|
|
22
|
+
create: {
|
|
23
|
+
method: "post",
|
|
24
|
+
path: "/"
|
|
25
|
+
},
|
|
26
|
+
update: {
|
|
27
|
+
method: "put",
|
|
28
|
+
path: "/:{param}"
|
|
29
|
+
},
|
|
30
|
+
destroy: {
|
|
31
|
+
method: "delete",
|
|
32
|
+
path: "/:{param}"
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
routes = {};
|
|
36
|
+
options;
|
|
37
|
+
chainedMiddlewares = [];
|
|
38
|
+
constructor(basePath, controller, paramName, options, registerRoute, removeRoute) {
|
|
39
|
+
this.basePath = basePath;
|
|
40
|
+
this.controller = controller;
|
|
41
|
+
this.paramName = paramName;
|
|
42
|
+
this.registerRoute = registerRoute;
|
|
43
|
+
this.removeRoute = removeRoute;
|
|
44
|
+
this.options = options ?? {};
|
|
45
|
+
}
|
|
46
|
+
register() {
|
|
47
|
+
this.clear();
|
|
48
|
+
const preController = typeof this.controller === "function" ? new this.controller() : this.controller;
|
|
49
|
+
for (const action of this.selectedActions()) {
|
|
50
|
+
if (typeof preController[action] !== "function") continue;
|
|
51
|
+
const definition = this.definitionFor(action);
|
|
52
|
+
const route = this.registerRoute({
|
|
53
|
+
action,
|
|
54
|
+
method: definition.method,
|
|
55
|
+
path: `${this.basePath}${definition.path}`,
|
|
56
|
+
handler: [this.controller, action],
|
|
57
|
+
middlewares: this.resolveActionMiddlewares(action),
|
|
58
|
+
name: `${this.nameFor(definition.path)}.${action.toLowerCase()}`
|
|
59
|
+
});
|
|
60
|
+
this.routes[action] = route;
|
|
61
|
+
}
|
|
62
|
+
for (const middlewares of this.chainedMiddlewares) this.middleware(middlewares, false);
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Only register routes for the provided actions.
|
|
67
|
+
*/
|
|
68
|
+
only(action, ...actions) {
|
|
69
|
+
this.options.only = Array.from(new Set(wrap(action).concat(actions)));
|
|
70
|
+
return this.register();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Register all resource routes except the provided actions.
|
|
74
|
+
*/
|
|
75
|
+
except(action, ...actions) {
|
|
76
|
+
this.options.except = Array.from(new Set(wrap(action).concat(actions)));
|
|
77
|
+
return this.register();
|
|
13
78
|
}
|
|
14
79
|
/**
|
|
15
80
|
* Register one or more middleware that will be executed before the route.
|
|
16
|
-
*
|
|
17
|
-
* @param middlewares
|
|
18
|
-
* @returns
|
|
19
81
|
*/
|
|
20
|
-
middleware(middlewares) {
|
|
82
|
+
middleware(middlewares, remember = true) {
|
|
83
|
+
if (remember) this.chainedMiddlewares.push(middlewares);
|
|
21
84
|
for (const route of Object.values(this.routes)) route?.middleware(middlewares);
|
|
22
85
|
return this;
|
|
23
86
|
}
|
|
@@ -51,9 +114,36 @@ var ResourceRoutes = class {
|
|
|
51
114
|
delete() {
|
|
52
115
|
return this.byMethod("delete");
|
|
53
116
|
}
|
|
117
|
+
selectedActions() {
|
|
118
|
+
const actions = this.options.only?.length ? this.options.only : Object.keys(ResourceRoutes.actions);
|
|
119
|
+
const except = new Set(this.options.except ?? []);
|
|
120
|
+
return actions.filter((action) => !except.has(action));
|
|
121
|
+
}
|
|
122
|
+
definitionFor(action) {
|
|
123
|
+
const definition = ResourceRoutes.actions[action];
|
|
124
|
+
return {
|
|
125
|
+
method: definition.method,
|
|
126
|
+
path: definition.path.replace("{param}", this.paramName)
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
resolveActionMiddlewares(action) {
|
|
130
|
+
const middlewares = this.isActionMiddlewareMap(this.options.middlewares) ? this.options.middlewares[action] : this.options.middlewares;
|
|
131
|
+
return Array.isArray(middlewares) ? middlewares : middlewares ? [middlewares] : void 0;
|
|
132
|
+
}
|
|
133
|
+
isActionMiddlewareMap(middlewares) {
|
|
134
|
+
if (!middlewares || Array.isArray(middlewares) || typeof middlewares !== "object") return false;
|
|
135
|
+
return Object.keys(ResourceRoutes.actions).some((action) => action in middlewares);
|
|
136
|
+
}
|
|
137
|
+
nameFor(path) {
|
|
138
|
+
return `${this.basePath}${path}`.replace(/\/:[^/]+|\/\{[^}]+\}/g, "").replace(/\{(\w+):[^}]+\}/g, "$1").replace(/\/|:|[{}]/g, ".").replace(/\.{2,}/g, ".").replace(/^\.|\.$/g, "");
|
|
139
|
+
}
|
|
54
140
|
byMethod(method) {
|
|
55
141
|
return new ResourceRouteSelection(Object.values(this.routes).filter((route) => Boolean(route?.methods.includes(method))));
|
|
56
142
|
}
|
|
143
|
+
clear() {
|
|
144
|
+
for (const route of Object.values(this.routes)) if (route) this.removeRoute(route);
|
|
145
|
+
for (const key of Object.keys(this.routes)) delete this.routes[key];
|
|
146
|
+
}
|
|
57
147
|
};
|
|
58
148
|
|
|
59
149
|
//#endregion
|
package/dist/core/index.cjs
CHANGED
|
@@ -3,8 +3,10 @@ const require_Request = require('./Request.cjs');
|
|
|
3
3
|
const require_Response = require('./Response.cjs');
|
|
4
4
|
const require_plugins = require('./plugins.cjs');
|
|
5
5
|
const require_router = require('./router.cjs');
|
|
6
|
+
const require_helpers = require('./helpers.cjs');
|
|
6
7
|
|
|
7
8
|
exports.CoreRouter = require_router.CoreRouter;
|
|
8
9
|
exports.Request = require_Request.Request;
|
|
9
10
|
exports.Response = require_Response.Response;
|
|
10
|
-
exports.definePlugin = require_plugins.definePlugin;
|
|
11
|
+
exports.definePlugin = require_plugins.definePlugin;
|
|
12
|
+
exports.wrap = require_helpers.wrap;
|
package/dist/core/index.d.cts
CHANGED
|
@@ -2,4 +2,5 @@ import { Response } from "./Response.cjs";
|
|
|
2
2
|
import { Request } from "./Request.cjs";
|
|
3
3
|
import { ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, definePlugin } from "./plugins.cjs";
|
|
4
4
|
import { CoreRouter } from "./router.cjs";
|
|
5
|
-
|
|
5
|
+
import { wrap } from "./helpers.cjs";
|
|
6
|
+
export { ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, CoreRouter, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, Request, Response, definePlugin, wrap };
|
package/dist/core/index.d.mts
CHANGED
|
@@ -2,4 +2,5 @@ import { Response } from "./Response.mjs";
|
|
|
2
2
|
import { Request } from "./Request.mjs";
|
|
3
3
|
import { ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, definePlugin } from "./plugins.mjs";
|
|
4
4
|
import { CoreRouter } from "./router.mjs";
|
|
5
|
-
|
|
5
|
+
import { wrap } from "./helpers.mjs";
|
|
6
|
+
export { ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, CoreRouter, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, Request, Response, definePlugin, wrap };
|
package/dist/core/index.mjs
CHANGED
|
@@ -2,5 +2,6 @@ import { Request } from "./Request.mjs";
|
|
|
2
2
|
import { Response } from "./Response.mjs";
|
|
3
3
|
import { definePlugin } from "./plugins.mjs";
|
|
4
4
|
import { CoreRouter } from "./router.mjs";
|
|
5
|
+
import { wrap } from "./helpers.mjs";
|
|
5
6
|
|
|
6
|
-
export { CoreRouter, Request, Response, definePlugin };
|
|
7
|
+
export { CoreRouter, Request, Response, definePlugin, wrap };
|
package/dist/core/router.cjs
CHANGED
|
@@ -90,6 +90,15 @@ var CoreRouter = class {
|
|
|
90
90
|
if (route.routeName && this.routesByName.get(route.routeName) === route) this.routesByName.delete(route.routeName);
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
+
static removeRoute(route) {
|
|
94
|
+
this.routes.delete(route);
|
|
95
|
+
if (route.routeName && this.routesByName.get(route.routeName) === route) this.routesByName.delete(route.routeName);
|
|
96
|
+
for (const method of route.methods) {
|
|
97
|
+
const methodKey = method.toUpperCase();
|
|
98
|
+
this.routesByPathMethod.delete(`${methodKey} ${route.path}`);
|
|
99
|
+
this.routesByMethod.set(methodKey, (this.routesByMethod.get(methodKey) ?? []).filter((existingRoute) => existingRoute !== route));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
93
102
|
/**
|
|
94
103
|
* Resets the router to it's default state
|
|
95
104
|
*/
|
|
@@ -537,47 +546,14 @@ var CoreRouter = class {
|
|
|
537
546
|
* @param options
|
|
538
547
|
*/
|
|
539
548
|
static apiResource(basePath, controller, options) {
|
|
540
|
-
const resourceRoutes = {};
|
|
541
549
|
let paramName = "id";
|
|
542
550
|
if (!!this.config.inferParamName && this.hasPackageInstalled("@h3ravel/support")) {
|
|
543
551
|
const { str } = (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href)("@h3ravel/support");
|
|
544
552
|
paramName = str(basePath).singular().afterLast("/").toString();
|
|
545
553
|
}
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
path: "/"
|
|
550
|
-
},
|
|
551
|
-
show: {
|
|
552
|
-
method: "get",
|
|
553
|
-
path: `/:${paramName}`
|
|
554
|
-
},
|
|
555
|
-
create: {
|
|
556
|
-
method: "post",
|
|
557
|
-
path: "/"
|
|
558
|
-
},
|
|
559
|
-
update: {
|
|
560
|
-
method: "put",
|
|
561
|
-
path: `/:${paramName}`
|
|
562
|
-
},
|
|
563
|
-
destroy: {
|
|
564
|
-
method: "delete",
|
|
565
|
-
path: `/:${paramName}`
|
|
566
|
-
}
|
|
567
|
-
};
|
|
568
|
-
const only = options?.only || Object.keys(actions);
|
|
569
|
-
const except = options?.except || [];
|
|
570
|
-
const preController = typeof controller === "function" ? new controller() : controller;
|
|
571
|
-
for (const action of only) {
|
|
572
|
-
if (except.includes(action)) continue;
|
|
573
|
-
if (typeof preController[action] === "function") {
|
|
574
|
-
const { method, path } = actions[action];
|
|
575
|
-
const actionMiddlewares = typeof options?.middlewares === "object" && !Array.isArray(options.middlewares) ? options.middlewares[action] : options?.middlewares;
|
|
576
|
-
const name = `${basePath}${path}`.replace(/\/:[^/]+|\/\{[^}]+\}/g, "").replace(/\{(\w+):[^}]+\}/g, "$1").replace(/\/|:|[{}]/g, ".").replace(/\.{2,}/g, ".").replace(/^\.|\.$/g, "");
|
|
577
|
-
resourceRoutes[action] = this.add(method, `${basePath}${path}`, [controller, action], Array.isArray(actionMiddlewares) ? actionMiddlewares : actionMiddlewares ? [actionMiddlewares] : void 0).name(name + "." + action.toLowerCase());
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
return new require_ResourceRoutes.ResourceRoutes(resourceRoutes);
|
|
554
|
+
return new require_ResourceRoutes.ResourceRoutes(basePath, controller, paramName, options, ({ method, path, handler, middlewares, name }) => {
|
|
555
|
+
return this.add(method, path, handler, middlewares).name(name);
|
|
556
|
+
}, (route) => this.removeRoute(route)).register();
|
|
581
557
|
}
|
|
582
558
|
/**
|
|
583
559
|
* Adds a new GET route to the router.
|
package/dist/core/router.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiResourceMiddleware,
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction, RouterConfig } from "../types/basic.cjs";
|
|
2
2
|
import { Response } from "./Response.cjs";
|
|
3
3
|
import { Route } from "../Route.cjs";
|
|
4
4
|
import { Request } from "./Request.cjs";
|
|
@@ -49,6 +49,7 @@ declare abstract class CoreRouter {
|
|
|
49
49
|
protected static routeSpecificity(route: Route<any, any, any>): [number, number, number];
|
|
50
50
|
protected static orderedRoutes(): Array<Route<any, any, any>>;
|
|
51
51
|
protected static removeRouteMethod(route: Route<any, any, any>, method: HttpMethod, path: string): void;
|
|
52
|
+
protected static removeRoute(route: Route<any, any, any>): void;
|
|
52
53
|
/**
|
|
53
54
|
* Resets the router to it's default state
|
|
54
55
|
*/
|
|
@@ -143,8 +144,8 @@ declare abstract class CoreRouter {
|
|
|
143
144
|
* @param options
|
|
144
145
|
*/
|
|
145
146
|
static apiResource(basePath: string, controller: any, options?: {
|
|
146
|
-
only?:
|
|
147
|
-
except?:
|
|
147
|
+
only?: ResourceAction[];
|
|
148
|
+
except?: ResourceAction[];
|
|
148
149
|
middlewares?: ApiResourceMiddleware<any>;
|
|
149
150
|
}): ResourceRoutes<any, any, any>;
|
|
150
151
|
/**
|
package/dist/core/router.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiResourceMiddleware,
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction, RouterConfig } from "../types/basic.mjs";
|
|
2
2
|
import { Response } from "./Response.mjs";
|
|
3
3
|
import { Route } from "../Route.mjs";
|
|
4
4
|
import { Request } from "./Request.mjs";
|
|
@@ -49,6 +49,7 @@ declare abstract class CoreRouter {
|
|
|
49
49
|
protected static routeSpecificity(route: Route<any, any, any>): [number, number, number];
|
|
50
50
|
protected static orderedRoutes(): Array<Route<any, any, any>>;
|
|
51
51
|
protected static removeRouteMethod(route: Route<any, any, any>, method: HttpMethod, path: string): void;
|
|
52
|
+
protected static removeRoute(route: Route<any, any, any>): void;
|
|
52
53
|
/**
|
|
53
54
|
* Resets the router to it's default state
|
|
54
55
|
*/
|
|
@@ -143,8 +144,8 @@ declare abstract class CoreRouter {
|
|
|
143
144
|
* @param options
|
|
144
145
|
*/
|
|
145
146
|
static apiResource(basePath: string, controller: any, options?: {
|
|
146
|
-
only?:
|
|
147
|
-
except?:
|
|
147
|
+
only?: ResourceAction[];
|
|
148
|
+
except?: ResourceAction[];
|
|
148
149
|
middlewares?: ApiResourceMiddleware<any>;
|
|
149
150
|
}): ResourceRoutes<any, any, any>;
|
|
150
151
|
/**
|
package/dist/core/router.mjs
CHANGED
|
@@ -90,6 +90,15 @@ var CoreRouter = class {
|
|
|
90
90
|
if (route.routeName && this.routesByName.get(route.routeName) === route) this.routesByName.delete(route.routeName);
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
+
static removeRoute(route) {
|
|
94
|
+
this.routes.delete(route);
|
|
95
|
+
if (route.routeName && this.routesByName.get(route.routeName) === route) this.routesByName.delete(route.routeName);
|
|
96
|
+
for (const method of route.methods) {
|
|
97
|
+
const methodKey = method.toUpperCase();
|
|
98
|
+
this.routesByPathMethod.delete(`${methodKey} ${route.path}`);
|
|
99
|
+
this.routesByMethod.set(methodKey, (this.routesByMethod.get(methodKey) ?? []).filter((existingRoute) => existingRoute !== route));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
93
102
|
/**
|
|
94
103
|
* Resets the router to it's default state
|
|
95
104
|
*/
|
|
@@ -537,47 +546,14 @@ var CoreRouter = class {
|
|
|
537
546
|
* @param options
|
|
538
547
|
*/
|
|
539
548
|
static apiResource(basePath, controller, options) {
|
|
540
|
-
const resourceRoutes = {};
|
|
541
549
|
let paramName = "id";
|
|
542
550
|
if (!!this.config.inferParamName && this.hasPackageInstalled("@h3ravel/support")) {
|
|
543
551
|
const { str } = createRequire(import.meta.url)("@h3ravel/support");
|
|
544
552
|
paramName = str(basePath).singular().afterLast("/").toString();
|
|
545
553
|
}
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
path: "/"
|
|
550
|
-
},
|
|
551
|
-
show: {
|
|
552
|
-
method: "get",
|
|
553
|
-
path: `/:${paramName}`
|
|
554
|
-
},
|
|
555
|
-
create: {
|
|
556
|
-
method: "post",
|
|
557
|
-
path: "/"
|
|
558
|
-
},
|
|
559
|
-
update: {
|
|
560
|
-
method: "put",
|
|
561
|
-
path: `/:${paramName}`
|
|
562
|
-
},
|
|
563
|
-
destroy: {
|
|
564
|
-
method: "delete",
|
|
565
|
-
path: `/:${paramName}`
|
|
566
|
-
}
|
|
567
|
-
};
|
|
568
|
-
const only = options?.only || Object.keys(actions);
|
|
569
|
-
const except = options?.except || [];
|
|
570
|
-
const preController = typeof controller === "function" ? new controller() : controller;
|
|
571
|
-
for (const action of only) {
|
|
572
|
-
if (except.includes(action)) continue;
|
|
573
|
-
if (typeof preController[action] === "function") {
|
|
574
|
-
const { method, path } = actions[action];
|
|
575
|
-
const actionMiddlewares = typeof options?.middlewares === "object" && !Array.isArray(options.middlewares) ? options.middlewares[action] : options?.middlewares;
|
|
576
|
-
const name = `${basePath}${path}`.replace(/\/:[^/]+|\/\{[^}]+\}/g, "").replace(/\{(\w+):[^}]+\}/g, "$1").replace(/\/|:|[{}]/g, ".").replace(/\.{2,}/g, ".").replace(/^\.|\.$/g, "");
|
|
577
|
-
resourceRoutes[action] = this.add(method, `${basePath}${path}`, [controller, action], Array.isArray(actionMiddlewares) ? actionMiddlewares : actionMiddlewares ? [actionMiddlewares] : void 0).name(name + "." + action.toLowerCase());
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
return new ResourceRoutes(resourceRoutes);
|
|
554
|
+
return new ResourceRoutes(basePath, controller, paramName, options, ({ method, path, handler, middlewares, name }) => {
|
|
555
|
+
return this.add(method, path, handler, middlewares).name(name);
|
|
556
|
+
}, (route) => this.removeRoute(route)).register();
|
|
581
557
|
}
|
|
582
558
|
/**
|
|
583
559
|
* Adds a new GET route to the router.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiResourceMiddleware,
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction } from "../types/basic.cjs";
|
|
2
2
|
import { Handler, HttpContext, Middleware } from "../types/express.cjs";
|
|
3
3
|
import { Route } from "../Route.cjs";
|
|
4
4
|
import { ResourceRoutes } from "../ResourceRoutes.cjs";
|
|
@@ -34,8 +34,8 @@ declare class Router$1 extends CoreRouter {
|
|
|
34
34
|
* @param options
|
|
35
35
|
*/
|
|
36
36
|
static apiResource(basePath: string, controller: any, options?: {
|
|
37
|
-
only?:
|
|
38
|
-
except?:
|
|
37
|
+
only?: ResourceAction[];
|
|
38
|
+
except?: ResourceAction[];
|
|
39
39
|
middlewares?: ApiResourceMiddleware<Middleware>;
|
|
40
40
|
}): ResourceRoutes<HttpContext, Middleware, Handler>;
|
|
41
41
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiResourceMiddleware,
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction } from "../types/basic.mjs";
|
|
2
2
|
import { Handler, HttpContext, Middleware } from "../types/express.mjs";
|
|
3
3
|
import { Route } from "../Route.mjs";
|
|
4
4
|
import { ResourceRoutes } from "../ResourceRoutes.mjs";
|
|
@@ -34,8 +34,8 @@ declare class Router$1 extends CoreRouter {
|
|
|
34
34
|
* @param options
|
|
35
35
|
*/
|
|
36
36
|
static apiResource(basePath: string, controller: any, options?: {
|
|
37
|
-
only?:
|
|
38
|
-
except?:
|
|
37
|
+
only?: ResourceAction[];
|
|
38
|
+
except?: ResourceAction[];
|
|
39
39
|
middlewares?: ApiResourceMiddleware<Middleware>;
|
|
40
40
|
}): ResourceRoutes<HttpContext, Middleware, Handler>;
|
|
41
41
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiResourceMiddleware,
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction } from "../types/basic.cjs";
|
|
2
2
|
import { FastifyApp, Handler, HttpContext, Middleware } from "../types/fastify.cjs";
|
|
3
3
|
import { Route } from "../Route.cjs";
|
|
4
4
|
import { ResourceRoutes } from "../ResourceRoutes.cjs";
|
|
@@ -32,8 +32,8 @@ declare class Router extends CoreRouter {
|
|
|
32
32
|
* @param options Optional configuration for the resource
|
|
33
33
|
*/
|
|
34
34
|
static apiResource(basePath: string, controller: any, options?: {
|
|
35
|
-
only?:
|
|
36
|
-
except?:
|
|
35
|
+
only?: ResourceAction[];
|
|
36
|
+
except?: ResourceAction[];
|
|
37
37
|
middlewares?: ApiResourceMiddleware<Middleware>;
|
|
38
38
|
}): ResourceRoutes<HttpContext, Middleware, Handler>;
|
|
39
39
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiResourceMiddleware,
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction } from "../types/basic.mjs";
|
|
2
2
|
import { FastifyApp, Handler, HttpContext, Middleware } from "../types/fastify.mjs";
|
|
3
3
|
import { Route } from "../Route.mjs";
|
|
4
4
|
import { ResourceRoutes } from "../ResourceRoutes.mjs";
|
|
@@ -32,8 +32,8 @@ declare class Router extends CoreRouter {
|
|
|
32
32
|
* @param options Optional configuration for the resource
|
|
33
33
|
*/
|
|
34
34
|
static apiResource(basePath: string, controller: any, options?: {
|
|
35
|
-
only?:
|
|
36
|
-
except?:
|
|
35
|
+
only?: ResourceAction[];
|
|
36
|
+
except?: ResourceAction[];
|
|
37
37
|
middlewares?: ApiResourceMiddleware<Middleware>;
|
|
38
38
|
}): ResourceRoutes<HttpContext, Middleware, Handler>;
|
|
39
39
|
/**
|
package/dist/h3/router.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiResourceMiddleware,
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction } from "../types/basic.cjs";
|
|
2
2
|
import { H3App, Handler, HttpContext, Middleware as Middleware$1 } from "../types/h3.cjs";
|
|
3
3
|
import { Route } from "../Route.cjs";
|
|
4
4
|
import { ResourceRoutes } from "../ResourceRoutes.cjs";
|
|
@@ -34,8 +34,8 @@ declare class Router extends CoreRouter {
|
|
|
34
34
|
* @param options
|
|
35
35
|
*/
|
|
36
36
|
static apiResource(basePath: string, controller: any, options?: {
|
|
37
|
-
only?:
|
|
38
|
-
except?:
|
|
37
|
+
only?: ResourceAction[];
|
|
38
|
+
except?: ResourceAction[];
|
|
39
39
|
middlewares?: ApiResourceMiddleware<Middleware$1>;
|
|
40
40
|
}): ResourceRoutes<HttpContext, Middleware$1, Handler>;
|
|
41
41
|
/**
|
package/dist/h3/router.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiResourceMiddleware,
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction } from "../types/basic.mjs";
|
|
2
2
|
import { H3App, Handler, HttpContext, Middleware as Middleware$1 } from "../types/h3.mjs";
|
|
3
3
|
import { Route } from "../Route.mjs";
|
|
4
4
|
import { ResourceRoutes } from "../ResourceRoutes.mjs";
|
|
@@ -34,8 +34,8 @@ declare class Router extends CoreRouter {
|
|
|
34
34
|
* @param options
|
|
35
35
|
*/
|
|
36
36
|
static apiResource(basePath: string, controller: any, options?: {
|
|
37
|
-
only?:
|
|
38
|
-
except?:
|
|
37
|
+
only?: ResourceAction[];
|
|
38
|
+
except?: ResourceAction[];
|
|
39
39
|
middlewares?: ApiResourceMiddleware<Middleware$1>;
|
|
40
40
|
}): ResourceRoutes<HttpContext, Middleware$1, Handler>;
|
|
41
41
|
/**
|
package/dist/hono/router.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiResourceMiddleware,
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction } from "../types/basic.cjs";
|
|
2
2
|
import { Handler, HonoApp, HttpContext, Middleware } from "../types/hono.cjs";
|
|
3
3
|
import { Route } from "../Route.cjs";
|
|
4
4
|
import { ResourceRoutes } from "../ResourceRoutes.cjs";
|
|
@@ -34,8 +34,8 @@ declare class Router extends CoreRouter {
|
|
|
34
34
|
* @param options
|
|
35
35
|
*/
|
|
36
36
|
static apiResource(basePath: string, controller: any, options?: {
|
|
37
|
-
only?:
|
|
38
|
-
except?:
|
|
37
|
+
only?: ResourceAction[];
|
|
38
|
+
except?: ResourceAction[];
|
|
39
39
|
middlewares?: ApiResourceMiddleware<Middleware>;
|
|
40
40
|
}): ResourceRoutes<HttpContext, Middleware, Handler>;
|
|
41
41
|
/**
|
package/dist/hono/router.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiResourceMiddleware,
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction } from "../types/basic.mjs";
|
|
2
2
|
import { Handler, HonoApp, HttpContext, Middleware } from "../types/hono.mjs";
|
|
3
3
|
import { Route } from "../Route.mjs";
|
|
4
4
|
import { ResourceRoutes } from "../ResourceRoutes.mjs";
|
|
@@ -34,8 +34,8 @@ declare class Router extends CoreRouter {
|
|
|
34
34
|
* @param options
|
|
35
35
|
*/
|
|
36
36
|
static apiResource(basePath: string, controller: any, options?: {
|
|
37
|
-
only?:
|
|
38
|
-
except?:
|
|
37
|
+
only?: ResourceAction[];
|
|
38
|
+
except?: ResourceAction[];
|
|
39
39
|
middlewares?: ApiResourceMiddleware<Middleware>;
|
|
40
40
|
}): ResourceRoutes<HttpContext, Middleware, Handler>;
|
|
41
41
|
/**
|
package/dist/index.cjs
CHANGED
|
@@ -6,6 +6,7 @@ const require_Request = require('./core/Request.cjs');
|
|
|
6
6
|
const require_Response = require('./core/Response.cjs');
|
|
7
7
|
const require_plugins = require('./core/plugins.cjs');
|
|
8
8
|
const require_router = require('./core/router.cjs');
|
|
9
|
+
const require_helpers = require('./core/helpers.cjs');
|
|
9
10
|
require('./core/index.cjs');
|
|
10
11
|
|
|
11
12
|
exports.ClearRequest = require_ClearRequest.ClearRequest;
|
|
@@ -14,4 +15,5 @@ exports.CoreRouter = require_router.CoreRouter;
|
|
|
14
15
|
exports.Request = require_Request.Request;
|
|
15
16
|
exports.Response = require_Response.Response;
|
|
16
17
|
exports.Route = require_Route.Route;
|
|
17
|
-
exports.definePlugin = require_plugins.definePlugin;
|
|
18
|
+
exports.definePlugin = require_plugins.definePlugin;
|
|
19
|
+
exports.wrap = require_helpers.wrap;
|
package/dist/index.d.cts
CHANGED
|
@@ -6,4 +6,5 @@ import { ClearRequest } from "./ClearRequest.cjs";
|
|
|
6
6
|
import { Controller } from "./Controller.cjs";
|
|
7
7
|
import { ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, definePlugin } from "./core/plugins.cjs";
|
|
8
8
|
import { CoreRouter } from "./core/router.cjs";
|
|
9
|
-
|
|
9
|
+
import { wrap } from "./core/helpers.cjs";
|
|
10
|
+
export { ClearHttpContext, ClearRequest, ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, Controller, CoreRouter, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, Request, Response, Route, RouteParameter, definePlugin, wrap };
|
package/dist/index.d.mts
CHANGED
|
@@ -6,4 +6,5 @@ import { ClearRequest } from "./ClearRequest.mjs";
|
|
|
6
6
|
import { Controller } from "./Controller.mjs";
|
|
7
7
|
import { ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, definePlugin } from "./core/plugins.mjs";
|
|
8
8
|
import { CoreRouter } from "./core/router.mjs";
|
|
9
|
-
|
|
9
|
+
import { wrap } from "./core/helpers.mjs";
|
|
10
|
+
export { ClearHttpContext, ClearRequest, ClearRouterPlugin, ClearRouterPluginArgumentsContext, ClearRouterPluginContext, ClearRouterPluginInput, ClearRouterPluginRequestContext, Controller, CoreRouter, PluginArgumentsResolver, PluginBind, PluginBindFactory, PluginBindValue, PluginSetupResult, Request, Response, Route, RouteParameter, definePlugin, wrap };
|
package/dist/index.mjs
CHANGED
|
@@ -5,6 +5,7 @@ import { Request } from "./core/Request.mjs";
|
|
|
5
5
|
import { Response } from "./core/Response.mjs";
|
|
6
6
|
import { definePlugin } from "./core/plugins.mjs";
|
|
7
7
|
import { CoreRouter } from "./core/router.mjs";
|
|
8
|
+
import { wrap } from "./core/helpers.mjs";
|
|
8
9
|
import "./core/index.mjs";
|
|
9
10
|
|
|
10
|
-
export { ClearRequest, Controller, CoreRouter, Request, Response, Route, definePlugin };
|
|
11
|
+
export { ClearRequest, Controller, CoreRouter, Request, Response, Route, definePlugin, wrap };
|
package/dist/koa/router.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiResourceMiddleware,
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction } from "../types/basic.cjs";
|
|
2
2
|
import { Handler, HttpContext, KoaRouterApp, Middleware } from "../types/koa.cjs";
|
|
3
3
|
import { Route } from "../Route.cjs";
|
|
4
4
|
import { ResourceRoutes } from "../ResourceRoutes.cjs";
|
|
@@ -34,8 +34,8 @@ declare class Router extends CoreRouter {
|
|
|
34
34
|
* @param options
|
|
35
35
|
*/
|
|
36
36
|
static apiResource(basePath: string, controller: any, options?: {
|
|
37
|
-
only?:
|
|
38
|
-
except?:
|
|
37
|
+
only?: ResourceAction[];
|
|
38
|
+
except?: ResourceAction[];
|
|
39
39
|
middlewares?: ApiResourceMiddleware<Middleware>;
|
|
40
40
|
}): ResourceRoutes<HttpContext, Middleware, Handler>;
|
|
41
41
|
/**
|
package/dist/koa/router.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiResourceMiddleware,
|
|
1
|
+
import { ApiResourceMiddleware, HttpMethod, ResourceAction } from "../types/basic.mjs";
|
|
2
2
|
import { Handler, HttpContext, KoaRouterApp, Middleware } from "../types/koa.mjs";
|
|
3
3
|
import { Route } from "../Route.mjs";
|
|
4
4
|
import { ResourceRoutes } from "../ResourceRoutes.mjs";
|
|
@@ -34,8 +34,8 @@ declare class Router extends CoreRouter {
|
|
|
34
34
|
* @param options
|
|
35
35
|
*/
|
|
36
36
|
static apiResource(basePath: string, controller: any, options?: {
|
|
37
|
-
only?:
|
|
38
|
-
except?:
|
|
37
|
+
only?: ResourceAction[];
|
|
38
|
+
except?: ResourceAction[];
|
|
39
39
|
middlewares?: ApiResourceMiddleware<Middleware>;
|
|
40
40
|
}): ResourceRoutes<HttpContext, Middleware, Handler>;
|
|
41
41
|
/**
|
package/dist/types/basic.d.cts
CHANGED
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
type ControllerHandler = [any, string];
|
|
6
6
|
type MaybePromise<T = any> = T | Promise<T>;
|
|
7
|
-
type ResourceAction = 'index' | 'show' | 'create' | 'update' | 'destroy';
|
|
8
7
|
type MiddlewareHandle<Args extends any[] = any[], Return = any> = (...args: Args) => MaybePromise<Return>;
|
|
9
8
|
type MiddlewareClass<M extends MiddlewareHandle = MiddlewareHandle> = new () => {
|
|
10
9
|
handle: M;
|
|
@@ -18,14 +17,14 @@ type ClassMiddleware<M extends MiddlewareHandle = MiddlewareHandle> = Middleware
|
|
|
18
17
|
*/
|
|
19
18
|
type HttpMethod = 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head';
|
|
20
19
|
/**
|
|
21
|
-
* Common
|
|
20
|
+
* Common resource action names
|
|
22
21
|
*/
|
|
23
|
-
type
|
|
22
|
+
type ResourceAction = 'index' | 'show' | 'create' | 'update' | 'destroy';
|
|
24
23
|
/**
|
|
25
24
|
* Generic Object type for request data
|
|
26
25
|
*/
|
|
27
26
|
type RequestData = Record<string, any>;
|
|
28
|
-
type ApiResourceMiddleware<M = any> = M | M[] | { [K in
|
|
27
|
+
type ApiResourceMiddleware<M = any> = M | M[] | { [K in ResourceAction]?: M | M[] };
|
|
29
28
|
interface RouterConfig {
|
|
30
29
|
/**
|
|
31
30
|
* When enabled, API param name will be infered from the route path.
|
|
@@ -50,4 +49,4 @@ interface RouterConfig {
|
|
|
50
49
|
};
|
|
51
50
|
}
|
|
52
51
|
//#endregion
|
|
53
|
-
export { ApiResourceMiddleware, ClassMiddleware,
|
|
52
|
+
export { ApiResourceMiddleware, ClassMiddleware, ControllerHandler, HttpMethod, MiddlewareHandle, RequestData, ResourceAction, RouterConfig };
|
package/dist/types/basic.d.mts
CHANGED
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
type ControllerHandler = [any, string];
|
|
6
6
|
type MaybePromise<T = any> = T | Promise<T>;
|
|
7
|
-
type ResourceAction = 'index' | 'show' | 'create' | 'update' | 'destroy';
|
|
8
7
|
type MiddlewareHandle<Args extends any[] = any[], Return = any> = (...args: Args) => MaybePromise<Return>;
|
|
9
8
|
type MiddlewareClass<M extends MiddlewareHandle = MiddlewareHandle> = new () => {
|
|
10
9
|
handle: M;
|
|
@@ -18,14 +17,14 @@ type ClassMiddleware<M extends MiddlewareHandle = MiddlewareHandle> = Middleware
|
|
|
18
17
|
*/
|
|
19
18
|
type HttpMethod = 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head';
|
|
20
19
|
/**
|
|
21
|
-
* Common
|
|
20
|
+
* Common resource action names
|
|
22
21
|
*/
|
|
23
|
-
type
|
|
22
|
+
type ResourceAction = 'index' | 'show' | 'create' | 'update' | 'destroy';
|
|
24
23
|
/**
|
|
25
24
|
* Generic Object type for request data
|
|
26
25
|
*/
|
|
27
26
|
type RequestData = Record<string, any>;
|
|
28
|
-
type ApiResourceMiddleware<M = any> = M | M[] | { [K in
|
|
27
|
+
type ApiResourceMiddleware<M = any> = M | M[] | { [K in ResourceAction]?: M | M[] };
|
|
29
28
|
interface RouterConfig {
|
|
30
29
|
/**
|
|
31
30
|
* When enabled, API param name will be infered from the route path.
|
|
@@ -50,4 +49,4 @@ interface RouterConfig {
|
|
|
50
49
|
};
|
|
51
50
|
}
|
|
52
51
|
//#endregion
|
|
53
|
-
export { ApiResourceMiddleware, ClassMiddleware,
|
|
52
|
+
export { ApiResourceMiddleware, ClassMiddleware, ControllerHandler, HttpMethod, MiddlewareHandle, RequestData, ResourceAction, RouterConfig };
|
package/package.json
CHANGED