exisjs 0.7.5 → 0.7.7
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/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +12 -0
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/clean.d.ts +5 -0
- package/dist/cli/commands/clean.d.ts.map +1 -0
- package/dist/cli/commands/clean.js +30 -0
- package/dist/cli/commands/clean.js.map +1 -0
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +171 -86
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/generate.d.ts +6 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +57 -2
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +54 -16
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/index.js +26 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/manifest.d.ts +1 -0
- package/dist/cli/manifest.d.ts.map +1 -1
- package/dist/cli/manifest.js +264 -33
- package/dist/cli/manifest.js.map +1 -1
- package/dist/cli/resolve-aliases.d.ts +1 -1
- package/dist/cli/resolve-aliases.d.ts.map +1 -1
- package/dist/cli/resolve-aliases.js +30 -13
- package/dist/cli/resolve-aliases.js.map +1 -1
- package/dist/config/config.d.ts +3 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +9 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +6 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/cron/expressions.d.ts +45 -0
- package/dist/cron/expressions.d.ts.map +1 -0
- package/dist/cron/expressions.js +87 -0
- package/dist/cron/expressions.js.map +1 -0
- package/dist/cron/index.d.ts +6 -0
- package/dist/cron/index.d.ts.map +1 -0
- package/dist/cron/index.js +22 -0
- package/dist/cron/index.js.map +1 -0
- package/dist/cron/job.d.ts +50 -0
- package/dist/cron/job.d.ts.map +1 -0
- package/dist/cron/job.js +247 -0
- package/dist/cron/job.js.map +1 -0
- package/dist/cron/manager.d.ts +105 -0
- package/dist/cron/manager.d.ts.map +1 -0
- package/dist/cron/manager.js +245 -0
- package/dist/cron/manager.js.map +1 -0
- package/dist/cron/parser.d.ts +22 -0
- package/dist/cron/parser.d.ts.map +1 -0
- package/dist/cron/parser.js +269 -0
- package/dist/cron/parser.js.map +1 -0
- package/dist/cron/types.d.ts +76 -0
- package/dist/cron/types.d.ts.map +1 -0
- package/dist/cron/types.js +3 -0
- package/dist/cron/types.js.map +1 -0
- package/dist/decorators/constants.d.ts +2 -0
- package/dist/decorators/constants.d.ts.map +1 -1
- package/dist/decorators/constants.js +3 -1
- package/dist/decorators/constants.js.map +1 -1
- package/dist/decorators/core.d.ts +29 -11
- package/dist/decorators/core.d.ts.map +1 -1
- package/dist/decorators/core.js +49 -11
- package/dist/decorators/core.js.map +1 -1
- package/dist/decorators/cron.d.ts +57 -0
- package/dist/decorators/cron.d.ts.map +1 -0
- package/dist/decorators/cron.js +143 -0
- package/dist/decorators/cron.js.map +1 -0
- package/dist/decorators/index.d.ts +2 -0
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +2 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/middleware.d.ts +65 -2
- package/dist/decorators/middleware.d.ts.map +1 -1
- package/dist/decorators/middleware.js +148 -62
- package/dist/decorators/middleware.js.map +1 -1
- package/dist/decorators/params.d.ts +102 -2
- package/dist/decorators/params.d.ts.map +1 -1
- package/dist/decorators/params.js +105 -3
- package/dist/decorators/params.js.map +1 -1
- package/dist/decorators/response.d.ts.map +1 -1
- package/dist/decorators/response.js +32 -22
- package/dist/decorators/response.js.map +1 -1
- package/dist/decorators/routing.d.ts +81 -16
- package/dist/decorators/routing.d.ts.map +1 -1
- package/dist/decorators/routing.js +81 -16
- package/dist/decorators/routing.js.map +1 -1
- package/dist/di/container.d.ts.map +1 -1
- package/dist/di/container.js +6 -1
- package/dist/di/container.js.map +1 -1
- package/dist/docs/content/cli/commands.mdx +1 -1
- package/dist/docs/content/controllers.mdx +127 -10
- package/dist/docs/content/cron.mdx +196 -0
- package/dist/docs/content/decorators.mdx +22 -4
- package/dist/docs/content/errors.mdx +58 -9
- package/dist/docs/content/introduction.mdx +7 -7
- package/dist/docs/content/middleware.mdx +269 -6
- package/dist/docs/content/requests.mdx +180 -6
- package/dist/docs/content/responses.mdx +283 -32
- package/dist/docs/content/routing.mdx +46 -0
- package/dist/docs/content/swagger.mdx +228 -0
- package/dist/docs/content/validation.mdx +190 -11
- package/dist/docs/reference/context.mdx +11 -0
- package/dist/docs/reference/cron.mdx +300 -0
- package/dist/docs/reference/decorators.mdx +22 -4
- package/dist/docs/reference/error.mdx +88 -0
- package/dist/docs/reference/logger.mdx +175 -43
- package/dist/docs/reference/middleware.mdx +31 -0
- package/dist/docs/reference/router.mdx +22 -0
- package/dist/docs/reference/swagger.mdx +143 -0
- package/dist/docs/reference/validator.mdx +83 -23
- package/dist/error/errors.d.ts.map +1 -1
- package/dist/error/errors.js +95 -43
- package/dist/error/errors.js.map +1 -1
- package/dist/error/index.d.ts +1 -0
- package/dist/error/index.d.ts.map +1 -1
- package/dist/error/index.js +11 -1
- package/dist/error/index.js.map +1 -1
- package/dist/error/overlay.d.ts +42 -0
- package/dist/error/overlay.d.ts.map +1 -0
- package/dist/error/overlay.js +306 -0
- package/dist/error/overlay.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/start-server.js +33 -7
- package/dist/lib/start-server.js.map +1 -1
- package/dist/logger/index.d.ts +1 -1
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +9 -1
- package/dist/logger/index.js.map +1 -1
- package/dist/middleware/guard.d.ts +2 -2
- package/dist/middleware/guard.d.ts.map +1 -1
- package/dist/middleware/guard.js.map +1 -1
- package/dist/middleware/ip-filter.d.ts +1 -0
- package/dist/middleware/ip-filter.d.ts.map +1 -1
- package/dist/middleware/ip-filter.js +2 -0
- package/dist/middleware/ip-filter.js.map +1 -1
- package/dist/middleware/middleware.d.ts +2 -2
- package/dist/middleware/middleware.d.ts.map +1 -1
- package/dist/middleware/middleware.js +20 -2
- package/dist/middleware/middleware.js.map +1 -1
- package/dist/middleware/security.d.ts +43 -1
- package/dist/middleware/security.d.ts.map +1 -1
- package/dist/middleware/security.js +101 -0
- package/dist/middleware/security.js.map +1 -1
- package/dist/response/index.d.ts +229 -6
- package/dist/response/index.d.ts.map +1 -1
- package/dist/response/index.js +272 -2
- package/dist/response/index.js.map +1 -1
- package/dist/router/boundary.d.ts +41 -11
- package/dist/router/boundary.d.ts.map +1 -1
- package/dist/router/boundary.js +24 -2
- package/dist/router/boundary.js.map +1 -1
- package/dist/router/controller-registrar.d.ts.map +1 -1
- package/dist/router/controller-registrar.js +108 -4
- package/dist/router/controller-registrar.js.map +1 -1
- package/dist/router/index.d.ts +2 -2
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +2 -1
- package/dist/router/index.js.map +1 -1
- package/dist/router/route-builder.d.ts +262 -65
- package/dist/router/route-builder.d.ts.map +1 -1
- package/dist/router/route-builder.js +181 -23
- package/dist/router/route-builder.js.map +1 -1
- package/dist/router/route-scanner.d.ts +6 -0
- package/dist/router/route-scanner.d.ts.map +1 -1
- package/dist/router/route-scanner.js +71 -792
- package/dist/router/route-scanner.js.map +1 -1
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +62 -17
- package/dist/router/router.js.map +1 -1
- package/dist/router/scanner/boundary-loader.d.ts +18 -0
- package/dist/router/scanner/boundary-loader.d.ts.map +1 -0
- package/dist/router/scanner/boundary-loader.js +539 -0
- package/dist/router/scanner/boundary-loader.js.map +1 -0
- package/dist/router/scanner/cron-mounter.d.ts +15 -0
- package/dist/router/scanner/cron-mounter.d.ts.map +1 -0
- package/dist/router/scanner/cron-mounter.js +216 -0
- package/dist/router/scanner/cron-mounter.js.map +1 -0
- package/dist/router/scanner/error-mounter.d.ts +14 -0
- package/dist/router/scanner/error-mounter.d.ts.map +1 -0
- package/dist/router/scanner/error-mounter.js +200 -0
- package/dist/router/scanner/error-mounter.js.map +1 -0
- package/dist/router/scanner/fs-scanner.d.ts +25 -0
- package/dist/router/scanner/fs-scanner.d.ts.map +1 -0
- package/dist/router/scanner/fs-scanner.js +115 -0
- package/dist/router/scanner/fs-scanner.js.map +1 -0
- package/dist/router/scanner/functional-compiler.d.ts +9 -0
- package/dist/router/scanner/functional-compiler.d.ts.map +1 -0
- package/dist/router/scanner/functional-compiler.js +233 -0
- package/dist/router/scanner/functional-compiler.js.map +1 -0
- package/dist/router/scanner/index.d.ts +9 -0
- package/dist/router/scanner/index.d.ts.map +1 -0
- package/dist/router/scanner/index.js +19 -0
- package/dist/router/scanner/index.js.map +1 -0
- package/dist/router/types.d.ts +23 -0
- package/dist/router/types.d.ts.map +1 -1
- package/dist/server/app.d.ts +3 -0
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +13 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/bootstrapper.d.ts.map +1 -1
- package/dist/server/bootstrapper.js +91 -30
- package/dist/server/bootstrapper.js.map +1 -1
- package/dist/server/cluster.d.ts.map +1 -1
- package/dist/server/cluster.js +13 -2
- package/dist/server/cluster.js.map +1 -1
- package/dist/server/context.d.ts +8 -0
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/context.js +50 -6
- package/dist/server/context.js.map +1 -1
- package/dist/server/helpers/body-parser.d.ts +18 -0
- package/dist/server/helpers/body-parser.d.ts.map +1 -0
- package/dist/server/helpers/body-parser.js +246 -0
- package/dist/server/helpers/body-parser.js.map +1 -0
- package/dist/server/helpers/cookie.d.ts +4 -0
- package/dist/server/helpers/cookie.d.ts.map +1 -0
- package/dist/server/helpers/cookie.js +61 -0
- package/dist/server/helpers/cookie.js.map +1 -0
- package/dist/server/helpers/etag.d.ts +3 -0
- package/dist/server/helpers/etag.d.ts.map +1 -0
- package/dist/server/helpers/etag.js +25 -0
- package/dist/server/helpers/etag.js.map +1 -0
- package/dist/server/helpers/index.d.ts +6 -0
- package/dist/server/helpers/index.d.ts.map +1 -0
- package/dist/server/helpers/index.js +21 -0
- package/dist/server/helpers/index.js.map +1 -0
- package/dist/server/helpers/ip.d.ts +9 -0
- package/dist/server/helpers/ip.d.ts.map +1 -0
- package/dist/server/helpers/ip.js +62 -0
- package/dist/server/helpers/ip.js.map +1 -0
- package/dist/server/helpers/stream.d.ts +4 -0
- package/dist/server/helpers/stream.d.ts.map +1 -0
- package/dist/server/helpers/stream.js +193 -0
- package/dist/server/helpers/stream.js.map +1 -0
- package/dist/server/lifecycle.d.ts +22 -0
- package/dist/server/lifecycle.d.ts.map +1 -0
- package/dist/server/lifecycle.js +106 -0
- package/dist/server/lifecycle.js.map +1 -0
- package/dist/server/request-handler.d.ts +1 -0
- package/dist/server/request-handler.d.ts.map +1 -1
- package/dist/server/request-handler.js +27 -17
- package/dist/server/request-handler.js.map +1 -1
- package/dist/server/request.d.ts +1 -139
- package/dist/server/request.d.ts.map +1 -1
- package/dist/server/request.js +37 -433
- package/dist/server/request.js.map +1 -1
- package/dist/server/response.d.ts +112 -156
- package/dist/server/response.d.ts.map +1 -1
- package/dist/server/response.js +129 -279
- package/dist/server/response.js.map +1 -1
- package/dist/swagger/decorators.d.ts +81 -0
- package/dist/swagger/decorators.d.ts.map +1 -0
- package/dist/swagger/decorators.js +172 -0
- package/dist/swagger/decorators.js.map +1 -0
- package/dist/swagger/generator.d.ts +19 -0
- package/dist/swagger/generator.d.ts.map +1 -0
- package/dist/swagger/generator.js +344 -0
- package/dist/swagger/generator.js.map +1 -0
- package/dist/swagger/index.d.ts +31 -0
- package/dist/swagger/index.d.ts.map +1 -0
- package/dist/swagger/index.js +53 -0
- package/dist/swagger/index.js.map +1 -0
- package/dist/swagger/mounter.d.ts +7 -0
- package/dist/swagger/mounter.d.ts.map +1 -0
- package/dist/swagger/mounter.js +56 -0
- package/dist/swagger/mounter.js.map +1 -0
- package/dist/swagger/types.d.ts +190 -0
- package/dist/swagger/types.d.ts.map +1 -0
- package/dist/swagger/types.js +3 -0
- package/dist/swagger/types.js.map +1 -0
- package/dist/swagger/ui.d.ts +6 -0
- package/dist/swagger/ui.d.ts.map +1 -0
- package/dist/swagger/ui.js +118 -0
- package/dist/swagger/ui.js.map +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +6 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/mocks.d.ts.map +1 -1
- package/dist/testing/mocks.js +15 -3
- package/dist/testing/mocks.js.map +1 -1
- package/dist/utils/logger.d.ts +8 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +184 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/validator/builder.d.ts +223 -0
- package/dist/validator/builder.d.ts.map +1 -0
- package/dist/validator/builder.js +517 -0
- package/dist/validator/builder.js.map +1 -0
- package/dist/validator/engine.d.ts +19 -0
- package/dist/validator/engine.d.ts.map +1 -0
- package/dist/validator/engine.js +568 -0
- package/dist/validator/engine.js.map +1 -0
- package/dist/validator/error.d.ts +12 -0
- package/dist/validator/error.d.ts.map +1 -0
- package/dist/validator/error.js +63 -0
- package/dist/validator/error.js.map +1 -0
- package/dist/validator/pagination.d.ts +40 -0
- package/dist/validator/pagination.d.ts.map +1 -0
- package/dist/validator/pagination.js +60 -0
- package/dist/validator/pagination.js.map +1 -0
- package/dist/validator/tex-types.d.ts +2 -1
- package/dist/validator/tex-types.d.ts.map +1 -1
- package/dist/validator/tex-types.js +2 -1
- package/dist/validator/tex-types.js.map +1 -1
- package/dist/validator/tex.d.ts +6 -142
- package/dist/validator/tex.d.ts.map +1 -1
- package/dist/validator/tex.js +14 -733
- package/dist/validator/tex.js.map +1 -1
- package/dist/validator/types.d.ts +83 -0
- package/dist/validator/types.d.ts.map +1 -0
- package/dist/validator/types.js +3 -0
- package/dist/validator/types.js.map +1 -0
- package/package.json +8 -4
- package/dist/dev/error-overlay.d.ts +0 -3
- package/dist/dev/error-overlay.d.ts.map +0 -1
- package/dist/dev/error-overlay.js +0 -118
- package/dist/dev/error-overlay.js.map +0 -1
|
@@ -1,30 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.route = void 0;
|
|
4
|
+
exports.defineMiddleware = defineMiddleware;
|
|
4
5
|
exports.controller = controller;
|
|
5
6
|
exports.createRouter = createRouter;
|
|
6
7
|
const logger_1 = require("../logger");
|
|
7
8
|
/**
|
|
8
|
-
*
|
|
9
|
+
* Creates a strongly typed middleware that injects context into downstream routes or boundaries.
|
|
10
|
+
*
|
|
11
|
+
* @template TContext The custom request context type produced by this middleware
|
|
12
|
+
* @param fn Middleware function receiving `(req, res, next)`
|
|
13
|
+
* @returns Strongly typed middleware handler
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* interface AuthContext {
|
|
18
|
+
* user: { id: string; role: string }
|
|
19
|
+
* }
|
|
20
|
+
*
|
|
21
|
+
* const authenticate = defineMiddleware<AuthContext>(async (req, res, next) => {
|
|
22
|
+
* req.user = { id: '123', role: 'admin' }
|
|
23
|
+
* next()
|
|
24
|
+
* })
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
function defineMiddleware(fn) {
|
|
28
|
+
return fn;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Declarative route builder with schema validation, typed parameters, and supercharged context.
|
|
9
32
|
*/
|
|
10
33
|
exports.route = {
|
|
11
34
|
/**
|
|
12
|
-
* Defines
|
|
35
|
+
* Defines an HTTP GET route definition.
|
|
13
36
|
*
|
|
14
|
-
*
|
|
37
|
+
* @param path The route URL path (e.g. `'/'` or `'/:id'`)
|
|
38
|
+
* @param config Route configuration with query/params schemas, middleware, and handler
|
|
39
|
+
* @returns Strongly typed `RouteDefinition`
|
|
15
40
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* import { controller, route } from 'exisjs/router'
|
|
44
|
+
* import { tex } from 'exisjs/validator'
|
|
19
45
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* })
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
46
|
+
* export default controller({
|
|
47
|
+
* getUser: route.get('/:id', {
|
|
48
|
+
* params: { id: tex.string() },
|
|
49
|
+
* async handle({ params }) {
|
|
50
|
+
* return { id: params.id, name: 'Alice' }
|
|
51
|
+
* }
|
|
52
|
+
* })
|
|
53
|
+
* })
|
|
54
|
+
* ```
|
|
28
55
|
*/
|
|
29
56
|
get: (path, config) => {
|
|
30
57
|
if ('body' in config && config.body) {
|
|
@@ -32,30 +59,157 @@ exports.route = {
|
|
|
32
59
|
}
|
|
33
60
|
return { method: 'get', path, ...config };
|
|
34
61
|
},
|
|
62
|
+
/**
|
|
63
|
+
* Defines an HTTP POST route definition.
|
|
64
|
+
*
|
|
65
|
+
* @param path The route URL path (e.g. `'/'` or `'/submit'`)
|
|
66
|
+
* @param config Route configuration with body schema, middleware, and handler
|
|
67
|
+
* @returns Strongly typed `RouteDefinition`
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* import { controller, route } from 'exisjs/router'
|
|
72
|
+
* import { tex } from 'exisjs/validator'
|
|
73
|
+
*
|
|
74
|
+
* export default controller({
|
|
75
|
+
* createUser: route.post('/', {
|
|
76
|
+
* body: tex.object({
|
|
77
|
+
* email: tex.email(),
|
|
78
|
+
* password: tex.password({ min: 8 })
|
|
79
|
+
* }),
|
|
80
|
+
* async handle({ body, res }) {
|
|
81
|
+
* res.status(201)
|
|
82
|
+
* return { email: body.email, created: true }
|
|
83
|
+
* }
|
|
84
|
+
* })
|
|
85
|
+
* })
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
35
88
|
post: (path, config) => ({ method: 'post', path, ...config }),
|
|
89
|
+
/**
|
|
90
|
+
* Defines an HTTP PUT route definition.
|
|
91
|
+
*
|
|
92
|
+
* @param path The route URL path (e.g. `'/:id'`)
|
|
93
|
+
* @param config Route configuration with body/params schemas and handler
|
|
94
|
+
* @returns Strongly typed `RouteDefinition`
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* import { controller, route } from 'exisjs/router'
|
|
99
|
+
* import { tex } from 'exisjs/validator'
|
|
100
|
+
*
|
|
101
|
+
* export default controller({
|
|
102
|
+
* updateUser: route.put('/:id', {
|
|
103
|
+
* body: tex.object({ name: tex.string() }),
|
|
104
|
+
* async handle({ params, body }) {
|
|
105
|
+
* return { id: params.id, name: body.name }
|
|
106
|
+
* }
|
|
107
|
+
* })
|
|
108
|
+
* })
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
36
111
|
put: (path, config) => ({ method: 'put', path, ...config }),
|
|
112
|
+
/**
|
|
113
|
+
* Defines an HTTP DELETE route definition.
|
|
114
|
+
*
|
|
115
|
+
* @param path The route URL path (e.g. `'/:id'`)
|
|
116
|
+
* @param config Route configuration with params schema and handler
|
|
117
|
+
* @returns Strongly typed `RouteDefinition`
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* import { controller, route } from 'exisjs/router'
|
|
122
|
+
*
|
|
123
|
+
* export default controller({
|
|
124
|
+
* deleteUser: route.delete('/:id', {
|
|
125
|
+
* async handle({ params }) {
|
|
126
|
+
* return { deleted: params.id }
|
|
127
|
+
* }
|
|
128
|
+
* })
|
|
129
|
+
* })
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
37
132
|
delete: (path, config) => ({ method: 'delete', path, ...config }),
|
|
133
|
+
/**
|
|
134
|
+
* Defines an HTTP PATCH route definition.
|
|
135
|
+
*
|
|
136
|
+
* @param path The route URL path (e.g. `'/:id'`)
|
|
137
|
+
* @param config Route configuration with partial body schema and handler
|
|
138
|
+
* @returns Strongly typed `RouteDefinition`
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```ts
|
|
142
|
+
* import { controller, route } from 'exisjs/router'
|
|
143
|
+
* import { tex } from 'exisjs/validator'
|
|
144
|
+
*
|
|
145
|
+
* export default controller({
|
|
146
|
+
* patchUser: route.patch('/:id', {
|
|
147
|
+
* body: tex.object({ status: tex.enum(['active', 'disabled']) }),
|
|
148
|
+
* async handle({ params, body }) {
|
|
149
|
+
* return { id: params.id, status: body.status }
|
|
150
|
+
* }
|
|
151
|
+
* })
|
|
152
|
+
* })
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
38
155
|
patch: (path, config) => ({ method: 'patch', path, ...config }),
|
|
156
|
+
/**
|
|
157
|
+
* Defines an HTTP OPTIONS route definition.
|
|
158
|
+
*/
|
|
39
159
|
options: (path, config) => ({ method: 'options', path, ...config }),
|
|
160
|
+
/**
|
|
161
|
+
* Defines an HTTP HEAD route definition.
|
|
162
|
+
*/
|
|
40
163
|
head: (path, config) => ({ method: 'head', path, ...config }),
|
|
164
|
+
/**
|
|
165
|
+
* Defines an HTTP CONNECT route definition.
|
|
166
|
+
*/
|
|
41
167
|
connect: (path, config) => ({ method: 'connect', path, ...config }),
|
|
168
|
+
/**
|
|
169
|
+
* Defines an HTTP TRACE route definition.
|
|
170
|
+
*/
|
|
42
171
|
trace: (path, config) => ({ method: 'trace', path, ...config }),
|
|
172
|
+
/**
|
|
173
|
+
* Defines a QUERY route definition.
|
|
174
|
+
*/
|
|
43
175
|
query: (path, config) => ({ method: 'query', path, ...config }),
|
|
176
|
+
/**
|
|
177
|
+
* Defines a route matching any HTTP method (GET, POST, PUT, DELETE, PATCH, etc.).
|
|
178
|
+
*
|
|
179
|
+
* @param path The route URL path (e.g. `'*'` or `'/api/*'`)
|
|
180
|
+
* @param config Route configuration and handler
|
|
181
|
+
* @returns Strongly typed `RouteDefinition`
|
|
182
|
+
*/
|
|
44
183
|
all: (path, config) => ({ method: 'all', path, ...config }),
|
|
45
184
|
};
|
|
46
185
|
/**
|
|
47
|
-
* Creates a route controller.
|
|
48
|
-
*
|
|
186
|
+
* Creates a route controller in a `route.ts` file. Binds multiple routes together, sharing middleware,
|
|
187
|
+
* lifecycle hooks, and error handling with zero boilerplate.
|
|
188
|
+
*
|
|
189
|
+
* @param config Controller configuration containing route definitions and shared settings
|
|
190
|
+
* @returns Fully compiled functional controller
|
|
49
191
|
*
|
|
50
192
|
* @example
|
|
193
|
+
* ```ts
|
|
194
|
+
* // src/http/users/route.ts
|
|
195
|
+
* import { controller, route } from 'exisjs/router'
|
|
196
|
+
* import { tex } from 'exisjs/validator'
|
|
197
|
+
*
|
|
51
198
|
* export default controller({
|
|
52
199
|
* cors: true,
|
|
53
|
-
*
|
|
54
|
-
* handle(
|
|
200
|
+
* listUsers: route.get('/', {
|
|
201
|
+
* async handle() {
|
|
55
202
|
* return { users: [] }
|
|
56
203
|
* }
|
|
204
|
+
* }),
|
|
205
|
+
* createUser: route.post('/', {
|
|
206
|
+
* body: tex.object({ name: tex.string() }),
|
|
207
|
+
* async handle({ body }) {
|
|
208
|
+
* return { created: body.name }
|
|
209
|
+
* }
|
|
57
210
|
* })
|
|
58
211
|
* })
|
|
212
|
+
* ```
|
|
59
213
|
*/
|
|
60
214
|
function controller(config) {
|
|
61
215
|
return Object.defineProperty(config, '__isController', {
|
|
@@ -64,15 +218,19 @@ function controller(config) {
|
|
|
64
218
|
});
|
|
65
219
|
}
|
|
66
220
|
/**
|
|
67
|
-
* Creates a strongly-typed router and controller factory.
|
|
68
|
-
*
|
|
221
|
+
* Creates a strongly-typed router and controller factory with pre-bound context.
|
|
222
|
+
*
|
|
223
|
+
* @template TContext Global request context type for the router instance
|
|
224
|
+
* @returns Object with typed `route` and `controller` factories
|
|
69
225
|
*
|
|
70
226
|
* @example
|
|
227
|
+
* ```ts
|
|
71
228
|
* interface MyContext {
|
|
72
|
-
* user:
|
|
73
|
-
* workspace: Workspace;
|
|
229
|
+
* user: { id: string; role: string }
|
|
74
230
|
* }
|
|
75
|
-
*
|
|
231
|
+
*
|
|
232
|
+
* export const { route, controller } = createRouter<MyContext>()
|
|
233
|
+
* ```
|
|
76
234
|
*/
|
|
77
235
|
function createRouter() {
|
|
78
236
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-builder.js","sourceRoot":"","sources":["../../src/router/route-builder.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"route-builder.js","sourceRoot":"","sources":["../../src/router/route-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,13 @@ export declare class RouteScanner {
|
|
|
16
16
|
mountRouteFile(filePath: string, routePath: string): Promise<void>;
|
|
17
17
|
private compileFunctionalController;
|
|
18
18
|
private mountRouteWithSource;
|
|
19
|
+
mountErrorHandlerFromModule(mod: any, errorFile?: string): void;
|
|
19
20
|
private mountErrorHandler;
|
|
20
21
|
private scanDirectory;
|
|
22
|
+
mountCronJobs(root: string): Promise<void>;
|
|
23
|
+
mountCronJobsFromEntries(entries: {
|
|
24
|
+
filePath: string;
|
|
25
|
+
module: any;
|
|
26
|
+
}[]): void;
|
|
21
27
|
}
|
|
22
28
|
//# sourceMappingURL=route-scanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-scanner.d.ts","sourceRoot":"","sources":["../../src/router/route-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"route-scanner.d.ts","sourceRoot":"","sources":["../../src/router/route-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAmBxC,qBAAa,YAAY;IAQJ,GAAG,EAAE,GAAG;IAPpB,UAAU;kBAA+B,MAAM;gBAAU,OAAO;OAAK;IACrE,QAAQ,sBAA4B;IACpC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAO;IAC5B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,UAAQ;IACrB,cAAc,EAAE,KAAK,GAAG,YAAY,GAAG,IAAI,CAAO;gBAEtC,GAAG,EAAE,GAAG;IAErB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBvB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoTnD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoOxE,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,oBAAoB;IA2BrB,2BAA2B,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,SAAa,GAAG,IAAI;YAI5D,iBAAiB;YAIjB,aAAa;IAOd,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,wBAAwB,CAC7B,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,EAAE,GAC3C,IAAI;CAGR"}
|