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
|
@@ -55,38 +55,48 @@ function Returns(schema) {
|
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
const Redirect = (url, statusCode = 302) => {
|
|
58
|
-
return function (target, propertyKey) {
|
|
59
|
-
const
|
|
60
|
-
fn
|
|
61
|
-
|
|
58
|
+
return function (target, propertyKey, descriptor) {
|
|
59
|
+
const isStandard = typeof propertyKey === 'object' && propertyKey !== null;
|
|
60
|
+
const fn = isStandard
|
|
61
|
+
? target
|
|
62
|
+
: (descriptor?.value ?? (propertyKey ? target[propertyKey] : target));
|
|
63
|
+
if (fn) {
|
|
64
|
+
fn[constants_1.ROUTE_METADATA_PROP] = fn[constants_1.ROUTE_METADATA_PROP] || {};
|
|
65
|
+
fn[constants_1.ROUTE_METADATA_PROP].redirect = { url, statusCode };
|
|
66
|
+
}
|
|
62
67
|
};
|
|
63
68
|
};
|
|
64
69
|
exports.Redirect = Redirect;
|
|
65
70
|
const Permissions = (...permissions) => {
|
|
66
|
-
return function (target, propertyKey) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
fn
|
|
70
|
-
fn
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
proto[constants_1.ROUTE_METADATA_PROP].permissions = permissions;
|
|
71
|
+
return function (target, propertyKey, descriptor) {
|
|
72
|
+
const isStandard = typeof propertyKey === 'object' && propertyKey !== null;
|
|
73
|
+
if (propertyKey && !isStandard) {
|
|
74
|
+
const fn = descriptor?.value ?? target[propertyKey];
|
|
75
|
+
if (fn) {
|
|
76
|
+
fn[constants_1.ROUTE_METADATA_PROP] = fn[constants_1.ROUTE_METADATA_PROP] || {};
|
|
77
|
+
fn[constants_1.ROUTE_METADATA_PROP].permissions = permissions;
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
76
80
|
}
|
|
81
|
+
const proto = typeof target === 'function' ? target.prototype : target;
|
|
82
|
+
proto[constants_1.ROUTE_METADATA_PROP] = proto[constants_1.ROUTE_METADATA_PROP] || {};
|
|
83
|
+
proto[constants_1.ROUTE_METADATA_PROP].permissions = permissions;
|
|
77
84
|
};
|
|
78
85
|
};
|
|
79
86
|
exports.Permissions = Permissions;
|
|
80
87
|
const Hosts = (...hosts) => {
|
|
81
|
-
return function (target, propertyKey) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
fn
|
|
85
|
-
fn
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
return function (target, propertyKey, descriptor) {
|
|
89
|
+
const isStandard = typeof propertyKey === 'object' && propertyKey !== null;
|
|
90
|
+
if (propertyKey && !isStandard) {
|
|
91
|
+
const fn = descriptor?.value ?? target[propertyKey];
|
|
92
|
+
if (fn) {
|
|
93
|
+
fn[constants_1.ROUTE_METADATA_PROP] = fn[constants_1.ROUTE_METADATA_PROP] || {};
|
|
94
|
+
fn[constants_1.ROUTE_METADATA_PROP].hosts = hosts;
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
89
97
|
}
|
|
98
|
+
const proto = typeof target === 'function' ? target.prototype : target;
|
|
99
|
+
proto[constants_1.CONTROLLER_HOST] = hosts;
|
|
90
100
|
};
|
|
91
101
|
};
|
|
92
102
|
exports.Hosts = Hosts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/decorators/response.ts"],"names":[],"mappings":";;;AAeA,4BAaC;AAED,wBAcC;AAcD,0BAeC;AAxED,2CAAkE;AAElE;;;;;;;;;;;GAWG;AACH,SAAgB,QAAQ,CAAC,IAAY;IACnC,OAAO,UACL,MAAW,EACX,oBAA4C,EAC5C,UAAqC;QAErC,MAAM,UAAU,GACd,OAAO,oBAAoB,KAAK,QAAQ,IAAI,oBAAoB,KAAK,IAAI,CAAA;QAC3E,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAA;QAEjD,EAAE,CAAC,+BAAmB,CAAC,GAAG,EAAE,CAAC,+BAAmB,CAAC,IAAI,EAAE,CAAA;QACvD,EAAE,CAAC,+BAAmB,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAA;IACzC,CAAC,CAAA;AACH,CAAC;AAED,SAAgB,MAAM,CAAC,IAAY,EAAE,KAAa;IAChD,OAAO,UACL,MAAW,EACX,oBAA4C,EAC5C,UAAqC;QAErC,MAAM,UAAU,GACd,OAAO,oBAAoB,KAAK,QAAQ,IAAI,oBAAoB,KAAK,IAAI,CAAA;QAC3E,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAA;QAEjD,EAAE,CAAC,+BAAmB,CAAC,GAAG,EAAE,CAAC,+BAAmB,CAAC,IAAI,EAAE,CAAA;QACvD,EAAE,CAAC,+BAAmB,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,+BAAmB,CAAC,CAAC,OAAO,IAAI,EAAE,CAAA;QACvE,EAAE,CAAC,+BAAmB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;IAC/C,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,OAAO,CACrB,MAAmD;IAEnD,OAAO,UACL,MAAW,EACX,oBAA4C,EAC5C,UAAqC;QAErC,MAAM,UAAU,GACd,OAAO,oBAAoB,KAAK,QAAQ,IAAI,oBAAoB,KAAK,IAAI,CAAA;QAC3E,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAA;QAEjD,EAAE,CAAC,+BAAmB,CAAC,GAAG,EAAE,CAAC,+BAAmB,CAAC,IAAI,EAAE,CAAA;QACvD,EAAE,CAAC,+BAAmB,CAAC,CAAC,cAAc,GAAG,MAAM,CAAA;IACjD,CAAC,CAAA;AACH,CAAC;AAEM,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,UAAU,GAAG,GAAG,EAAO,EAAE;IAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/decorators/response.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +1,102 @@
|
|
|
1
1
|
import type { HttpMethod, RouteSchema } from '../types';
|
|
2
2
|
export declare function createMethodDecorator(method: HttpMethod): (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
|
|
3
3
|
/**
|
|
4
|
-
* Marks a method as
|
|
4
|
+
* Marks a controller method as an HTTP GET route handler.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* @param path Optional route path relative to controller prefix
|
|
7
|
+
* @param schema Optional validation schema
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* @Controller('/users')
|
|
12
|
+
* export class UserController {
|
|
13
|
+
* @Get('/:id')
|
|
14
|
+
* getUser(@Param('id') id: string) {
|
|
15
|
+
* return { id }
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
14
19
|
*/
|
|
15
20
|
export declare const Get: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
|
|
16
21
|
/**
|
|
17
|
-
* Marks a method as
|
|
18
|
-
*
|
|
19
|
-
* Example:
|
|
22
|
+
* Marks a controller method as an HTTP POST route handler.
|
|
20
23
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
24
|
+
* @param path Optional route path relative to controller prefix
|
|
25
|
+
* @param schema Optional validation schema
|
|
23
26
|
*
|
|
24
|
-
* @
|
|
25
|
-
*
|
|
26
|
-
* @
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* @Controller('/users')
|
|
30
|
+
* export class UserController {
|
|
31
|
+
* @Post('/')
|
|
32
|
+
* createUser(@Body() body: CreateUserDto) {
|
|
33
|
+
* return { created: body.name }
|
|
34
|
+
* }
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
27
37
|
*/
|
|
28
38
|
export declare const Post: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
|
|
39
|
+
/**
|
|
40
|
+
* Marks a controller method as an HTTP PUT route handler.
|
|
41
|
+
*
|
|
42
|
+
* @param path Optional route path relative to controller prefix
|
|
43
|
+
* @param schema Optional validation schema
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* @Controller('/users')
|
|
48
|
+
* export class UserController {
|
|
49
|
+
* @Put('/:id')
|
|
50
|
+
* updateUser(@Param('id') id: string, @Body() body: UpdateUserDto) {
|
|
51
|
+
* return { updated: id }
|
|
52
|
+
* }
|
|
53
|
+
* }
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
29
56
|
export declare const Put: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
|
|
57
|
+
/**
|
|
58
|
+
* Marks a controller method as an HTTP PATCH route handler.
|
|
59
|
+
*
|
|
60
|
+
* @param path Optional route path relative to controller prefix
|
|
61
|
+
* @param schema Optional validation schema
|
|
62
|
+
*/
|
|
30
63
|
export declare const Patch: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
|
|
64
|
+
/**
|
|
65
|
+
* Marks a controller method as an HTTP DELETE route handler.
|
|
66
|
+
*
|
|
67
|
+
* @param path Optional route path relative to controller prefix
|
|
68
|
+
* @param schema Optional validation schema
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* @Controller('/users')
|
|
73
|
+
* export class UserController {
|
|
74
|
+
* @Delete('/:id')
|
|
75
|
+
* deleteUser(@Param('id') id: string) {
|
|
76
|
+
* return { deleted: true }
|
|
77
|
+
* }
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
31
81
|
export declare const Delete: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
|
|
82
|
+
/**
|
|
83
|
+
* Marks a controller method as an HTTP OPTIONS route handler.
|
|
84
|
+
*/
|
|
32
85
|
export declare const Options: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
|
|
86
|
+
/**
|
|
87
|
+
* Marks a controller method as an HTTP HEAD route handler.
|
|
88
|
+
*/
|
|
33
89
|
export declare const Head: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
|
|
90
|
+
/**
|
|
91
|
+
* Marks a controller method to handle any HTTP method (GET, POST, PUT, DELETE, PATCH, etc.).
|
|
92
|
+
*/
|
|
34
93
|
export declare const All: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
|
|
94
|
+
/**
|
|
95
|
+
* Marks a controller method as an HTTP CONNECT route handler.
|
|
96
|
+
*/
|
|
35
97
|
export declare const Connect: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
|
|
98
|
+
/**
|
|
99
|
+
* Marks a controller method as an HTTP TRACE route handler.
|
|
100
|
+
*/
|
|
36
101
|
export declare const Trace: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
|
|
37
102
|
//# sourceMappingURL=routing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/decorators/routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAKvD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,IACrC,aAAS,EAAE,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAAG,CAoC3E;AAED
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/decorators/routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAKvD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,IACrC,aAAS,EAAE,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAAG,CAoC3E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,GAAG,2BAvDuB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAuD1B,CAAA;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,IAAI,2BA1EsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GA0ExB,CAAA;AAEjD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,GAAG,2BA7FuB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GA6F1B,CAAA;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,KAAK,2BArGqB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAqGtB,CAAA;AAEnD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,MAAM,2BAxHoB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAwHpB,CAAA;AAErD;;GAEG;AACH,eAAO,MAAM,OAAO,2BA7HmB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GA6HlB,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,IAAI,2BAlIsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAkIxB,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,GAAG,2BAvIuB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAuI1B,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,OAAO,2BA5ImB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GA4IlB,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,KAAK,2BAjJqB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAiJtB,CAAA"}
|
|
@@ -36,37 +36,102 @@ function createMethodDecorator(method) {
|
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
* Marks a method as
|
|
39
|
+
* Marks a controller method as an HTTP GET route handler.
|
|
40
40
|
*
|
|
41
|
-
*
|
|
41
|
+
* @param path Optional route path relative to controller prefix
|
|
42
|
+
* @param schema Optional validation schema
|
|
42
43
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* @Controller('/users')
|
|
47
|
+
* export class UserController {
|
|
48
|
+
* @Get('/:id')
|
|
49
|
+
* getUser(@Param('id') id: string) {
|
|
50
|
+
* return { id }
|
|
51
|
+
* }
|
|
52
|
+
* }
|
|
53
|
+
* ```
|
|
49
54
|
*/
|
|
50
55
|
exports.Get = createMethodDecorator('GET');
|
|
51
56
|
/**
|
|
52
|
-
* Marks a method as
|
|
53
|
-
*
|
|
54
|
-
* Example:
|
|
57
|
+
* Marks a controller method as an HTTP POST route handler.
|
|
55
58
|
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
59
|
+
* @param path Optional route path relative to controller prefix
|
|
60
|
+
* @param schema Optional validation schema
|
|
58
61
|
*
|
|
59
|
-
* @
|
|
60
|
-
*
|
|
61
|
-
* @
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* @Controller('/users')
|
|
65
|
+
* export class UserController {
|
|
66
|
+
* @Post('/')
|
|
67
|
+
* createUser(@Body() body: CreateUserDto) {
|
|
68
|
+
* return { created: body.name }
|
|
69
|
+
* }
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
62
72
|
*/
|
|
63
73
|
exports.Post = createMethodDecorator('POST');
|
|
74
|
+
/**
|
|
75
|
+
* Marks a controller method as an HTTP PUT route handler.
|
|
76
|
+
*
|
|
77
|
+
* @param path Optional route path relative to controller prefix
|
|
78
|
+
* @param schema Optional validation schema
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* @Controller('/users')
|
|
83
|
+
* export class UserController {
|
|
84
|
+
* @Put('/:id')
|
|
85
|
+
* updateUser(@Param('id') id: string, @Body() body: UpdateUserDto) {
|
|
86
|
+
* return { updated: id }
|
|
87
|
+
* }
|
|
88
|
+
* }
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
64
91
|
exports.Put = createMethodDecorator('PUT');
|
|
92
|
+
/**
|
|
93
|
+
* Marks a controller method as an HTTP PATCH route handler.
|
|
94
|
+
*
|
|
95
|
+
* @param path Optional route path relative to controller prefix
|
|
96
|
+
* @param schema Optional validation schema
|
|
97
|
+
*/
|
|
65
98
|
exports.Patch = createMethodDecorator('PATCH');
|
|
99
|
+
/**
|
|
100
|
+
* Marks a controller method as an HTTP DELETE route handler.
|
|
101
|
+
*
|
|
102
|
+
* @param path Optional route path relative to controller prefix
|
|
103
|
+
* @param schema Optional validation schema
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts
|
|
107
|
+
* @Controller('/users')
|
|
108
|
+
* export class UserController {
|
|
109
|
+
* @Delete('/:id')
|
|
110
|
+
* deleteUser(@Param('id') id: string) {
|
|
111
|
+
* return { deleted: true }
|
|
112
|
+
* }
|
|
113
|
+
* }
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
66
116
|
exports.Delete = createMethodDecorator('DELETE');
|
|
117
|
+
/**
|
|
118
|
+
* Marks a controller method as an HTTP OPTIONS route handler.
|
|
119
|
+
*/
|
|
67
120
|
exports.Options = createMethodDecorator('OPTIONS');
|
|
121
|
+
/**
|
|
122
|
+
* Marks a controller method as an HTTP HEAD route handler.
|
|
123
|
+
*/
|
|
68
124
|
exports.Head = createMethodDecorator('HEAD');
|
|
125
|
+
/**
|
|
126
|
+
* Marks a controller method to handle any HTTP method (GET, POST, PUT, DELETE, PATCH, etc.).
|
|
127
|
+
*/
|
|
69
128
|
exports.All = createMethodDecorator('ALL');
|
|
129
|
+
/**
|
|
130
|
+
* Marks a controller method as an HTTP CONNECT route handler.
|
|
131
|
+
*/
|
|
70
132
|
exports.Connect = createMethodDecorator('CONNECT');
|
|
133
|
+
/**
|
|
134
|
+
* Marks a controller method as an HTTP TRACE route handler.
|
|
135
|
+
*/
|
|
71
136
|
exports.Trace = createMethodDecorator('TRACE');
|
|
72
137
|
//# sourceMappingURL=routing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/decorators/routing.ts"],"names":[],"mappings":";;;AAKA,sDAqCC;AAzCD,2CAAwD;AACxD,8CAAgD;AAChD,sCAAkC;AAElC,SAAgB,qBAAqB,CAAC,MAAkB;IACtD,OAAO,UAAU,IAAI,GAAG,EAAE,EAAE,MAAwC;QAClE,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACrC,eAAM,CAAC,IAAI,CACT,cAAc,IAAI,+DAA+D,CAClF,CAAA;QACH,CAAC;QAED,OAAO,UACL,MAAW,EACX,oBAA4C,EAC5C,UAAqC;YAErC,IACE,OAAO,oBAAoB,KAAK,QAAQ;gBACxC,oBAAoB,KAAK,IAAI;gBAC7B,MAAM,IAAI,oBAAoB,EAC9B,CAAC;gBACD,mCAAmC;gBACnC,yBAAc,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAU,EAAE;oBACrC,MAAM;oBACN,IAAI;oBACJ,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,yCAAyC;gBACzC,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;gBACtE,MAAM,IAAI,GAAG,oBAAoB,IAAI,UAAU,EAAE,IAAI,CAAA;gBACrD,yBAAc,CAAC,IAAI,CAAC,KAAK,EAAE,0BAAc,EAAE;oBACzC,MAAM;oBACN,IAAI;oBACJ,MAAM;oBACN,WAAW,EAAE,IAAI;iBAClB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/decorators/routing.ts"],"names":[],"mappings":";;;AAKA,sDAqCC;AAzCD,2CAAwD;AACxD,8CAAgD;AAChD,sCAAkC;AAElC,SAAgB,qBAAqB,CAAC,MAAkB;IACtD,OAAO,UAAU,IAAI,GAAG,EAAE,EAAE,MAAwC;QAClE,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACrC,eAAM,CAAC,IAAI,CACT,cAAc,IAAI,+DAA+D,CAClF,CAAA;QACH,CAAC;QAED,OAAO,UACL,MAAW,EACX,oBAA4C,EAC5C,UAAqC;YAErC,IACE,OAAO,oBAAoB,KAAK,QAAQ;gBACxC,oBAAoB,KAAK,IAAI;gBAC7B,MAAM,IAAI,oBAAoB,EAC9B,CAAC;gBACD,mCAAmC;gBACnC,yBAAc,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAU,EAAE;oBACrC,MAAM;oBACN,IAAI;oBACJ,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,yCAAyC;gBACzC,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;gBACtE,MAAM,IAAI,GAAG,oBAAoB,IAAI,UAAU,EAAE,IAAI,CAAA;gBACrD,yBAAc,CAAC,IAAI,CAAC,KAAK,EAAE,0BAAc,EAAE;oBACzC,MAAM;oBACN,IAAI;oBACJ,MAAM;oBACN,WAAW,EAAE,IAAI;iBAClB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AAEjD;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAE/C;;;;;GAKG;AACU,QAAA,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAEnD;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;AAErD;;GAEG;AACU,QAAA,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;AAEvD;;GAEG;AACU,QAAA,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AAEjD;;GAEG;AACU,QAAA,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAE/C;;GAEG;AACU,QAAA,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;AAEvD;;GAEG;AACU,QAAA,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAC/B,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AAE/C,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAAA;CAC9C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,YAAY;IACpD,QAAQ,EAAE,CAAC,CAAA;CACZ;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,CAAE,SAAQ,YAAY;IACtD,UAAU,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,YAAY;IACpD,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;CACpC;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAC9B,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE9D,eAAO,MAAM,eAAe,eAAqC,CAAA;AACjE,eAAO,MAAM,iBAAiB,eAAuC,CAAA;AACrE,eAAO,MAAM,cAAc,eAA6B,CAAA;AAExD,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,cAAc,CAAgC;IAEtD,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1E,UAAU,IAAI,IAAI;IAIlB,gBAAgB,CAAC,CAAC,EAChB,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACtC,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,GACrC,CAAC;IAmDJ,OAAO,CAAC,CAAC,EACP,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,GACrC,CAAC;
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAC/B,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AAE/C,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAAA;CAC9C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,YAAY;IACpD,QAAQ,EAAE,CAAC,CAAA;CACZ;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,CAAE,SAAQ,YAAY;IACtD,UAAU,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,YAAY;IACpD,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;CACpC;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAC9B,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE9D,eAAO,MAAM,eAAe,eAAqC,CAAA;AACjE,eAAO,MAAM,iBAAiB,eAAuC,CAAA;AACrE,eAAO,MAAM,cAAc,eAA6B,CAAA;AAExD,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,cAAc,CAAgC;IAEtD,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1E,UAAU,IAAI,IAAI;IAIlB,gBAAgB,CAAC,CAAC,EAChB,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACtC,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,GACrC,CAAC;IAmDJ,OAAO,CAAC,CAAC,EACP,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,GACrC,CAAC;CAkGL"}
|
package/dist/di/container.js
CHANGED
|
@@ -96,7 +96,12 @@ class Container {
|
|
|
96
96
|
}
|
|
97
97
|
let resolvedValue;
|
|
98
98
|
let scope = 'singleton';
|
|
99
|
-
if (
|
|
99
|
+
if (typeof provider === 'function') {
|
|
100
|
+
const classScope = provider.prototype?.[exports.SCOPE_METADATA] || 'singleton';
|
|
101
|
+
scope = classScope;
|
|
102
|
+
resolvedValue = this.instantiateClass(provider, requestCache);
|
|
103
|
+
}
|
|
104
|
+
else if (provider && typeof provider === 'object') {
|
|
100
105
|
if ('scope' in provider && provider.scope) {
|
|
101
106
|
scope = provider.scope;
|
|
102
107
|
}
|
package/dist/di/container.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":";;;AAsBa,QAAA,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;AACpD,QAAA,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;AACxD,QAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AAExD,MAAa,SAAS;IAAtB;QACU,cAAS,GAAG,IAAI,GAAG,EAAsB,CAAA;QACzC,mBAAc,GAAG,IAAI,GAAG,EAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -132,7 +132,7 @@ $ npx exisjs routes [options]
|
|
|
132
132
|
|
|
133
133
|
### `exisjs init`
|
|
134
134
|
|
|
135
|
-
Initializes a new ExisJS project in the current directory using
|
|
135
|
+
Initializes a new ExisJS project in the current directory using `create-exisjs`.
|
|
136
136
|
|
|
137
137
|
```bash
|
|
138
138
|
$ npx exisjs init
|
|
@@ -101,13 +101,29 @@ In most cases, you don't need to manually access the entire request object. Inst
|
|
|
101
101
|
<td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>Ip()</td>
|
|
102
102
|
<td className="px-4 py-3 text-muted-foreground">The client's IP address</td>
|
|
103
103
|
</tr>
|
|
104
|
+
<tr className="bg-background hover:bg-muted/30 transition-colors">
|
|
105
|
+
<td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>Cookies(name?) / <span className="text-primary">@</span>Cookie(name?)</td>
|
|
106
|
+
<td className="px-4 py-3 text-muted-foreground">Incoming parsed cookies or specific cookie value</td>
|
|
107
|
+
</tr>
|
|
108
|
+
<tr className="bg-background hover:bg-muted/30 transition-colors">
|
|
109
|
+
<td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>State(key?)</td>
|
|
110
|
+
<td className="px-4 py-3 text-muted-foreground">Request state from execution context or middleware</td>
|
|
111
|
+
</tr>
|
|
112
|
+
<tr className="bg-background hover:bg-muted/30 transition-colors">
|
|
113
|
+
<td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>AppCtx()</td>
|
|
114
|
+
<td className="px-4 py-3 text-muted-foreground">The root ExisJS Application instance</td>
|
|
115
|
+
</tr>
|
|
116
|
+
<tr className="bg-background hover:bg-muted/30 transition-colors">
|
|
117
|
+
<td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>Fields(name?)</td>
|
|
118
|
+
<td className="px-4 py-3 text-muted-foreground">Non-file multipart form fields</td>
|
|
119
|
+
</tr>
|
|
104
120
|
<tr className="bg-background hover:bg-muted/30 transition-colors">
|
|
105
121
|
<td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>UploadedFile()</td>
|
|
106
122
|
<td className="px-4 py-3 text-muted-foreground">A single uploaded file (multipart/form-data)</td>
|
|
107
123
|
</tr>
|
|
108
124
|
<tr className="bg-background hover:bg-muted/30 transition-colors">
|
|
109
125
|
<td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>UploadedFiles()</td>
|
|
110
|
-
<td className="px-4 py-3 text-muted-foreground">Array of uploaded files</td>
|
|
126
|
+
<td className="px-4 py-3 text-muted-foreground">Array or dictionary of uploaded files</td>
|
|
111
127
|
</tr>
|
|
112
128
|
</tbody>
|
|
113
129
|
</table>
|
|
@@ -115,22 +131,123 @@ In most cases, you don't need to manually access the entire request object. Inst
|
|
|
115
131
|
|
|
116
132
|
## Payloads & Validation
|
|
117
133
|
|
|
118
|
-
For POST and
|
|
134
|
+
For POST, PUT, and PATCH endpoints, you can validate and read incoming payloads using either method-level schemas or parameter-level `@Body(Schema)` decorators:
|
|
119
135
|
|
|
120
136
|
```typescript filename="src/http/users/route.ts"
|
|
121
|
-
import { Controller, Post, Body } from 'exisjs/decorators'
|
|
137
|
+
import { Controller, Post, Body, HttpCode } from 'exisjs/decorators'
|
|
138
|
+
import { tex } from 'exisjs/validator'
|
|
139
|
+
import type { ResolveSchema } from 'exisjs/validator'
|
|
140
|
+
|
|
141
|
+
export const CreateUserSchema = tex.object({
|
|
142
|
+
name: tex.string({ min: 2 }),
|
|
143
|
+
email: tex.email(),
|
|
144
|
+
role: tex.enum(['admin', 'user'], { default: 'user' }),
|
|
145
|
+
})
|
|
122
146
|
|
|
123
|
-
export
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
147
|
+
export type CreateUserDto = ResolveSchema<typeof CreateUserSchema>
|
|
148
|
+
|
|
149
|
+
@Controller('users')
|
|
150
|
+
export default class UsersController {
|
|
151
|
+
// 1. Parameter-level validation schema
|
|
152
|
+
@Post('/')
|
|
153
|
+
@HttpCode(201)
|
|
154
|
+
async create(@Body(CreateUserSchema) dto: CreateUserDto) {
|
|
155
|
+
return { id: 3, ...dto }
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// 2. Or method-level schema object
|
|
159
|
+
@Post('/raw', { body: CreateUserSchema })
|
|
160
|
+
async createWithMethodSchema(@Body() dto: CreateUserDto) {
|
|
161
|
+
return { id: 4, ...dto }
|
|
162
|
+
}
|
|
127
163
|
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Dependency Injection in Controllers
|
|
167
|
+
|
|
168
|
+
Controllers can inject services using either the ergonomic `inject()` helper or standard constructor injection:
|
|
169
|
+
|
|
170
|
+
```typescript filename="src/http/users/route.ts"
|
|
171
|
+
import { Controller, Get, Param } from 'exisjs/decorators'
|
|
172
|
+
import { inject, Inject, Optional } from 'exisjs/di'
|
|
173
|
+
import { UsersService } from './service'
|
|
128
174
|
|
|
129
175
|
@Controller('users')
|
|
130
176
|
export default class UsersController {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
177
|
+
// Approach A: Property-level injection (Recommended)
|
|
178
|
+
private usersService = inject(UsersService)
|
|
179
|
+
|
|
180
|
+
// Approach B: Constructor injection
|
|
181
|
+
constructor(
|
|
182
|
+
@Inject('DATABASE_URL') private dbUrl: string,
|
|
183
|
+
@Optional() @Inject('METRICS') private metrics?: any
|
|
184
|
+
) {}
|
|
185
|
+
|
|
186
|
+
@Get('/:id')
|
|
187
|
+
async getUser(@Param('id') id: string) {
|
|
188
|
+
return this.usersService.findById(id)
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## File Uploads
|
|
194
|
+
|
|
195
|
+
You can process file uploads in OOP controllers using `@UseUpload` or `@Upload` decorators alongside `@UploadedFile()` and `@UploadedFiles()`:
|
|
196
|
+
|
|
197
|
+
```typescript filename="src/http/users/route.ts"
|
|
198
|
+
import { Controller, Post, UseUpload, UploadedFile, Body } from 'exisjs/decorators'
|
|
199
|
+
import type { UploadedFile as IUploadedFile } from 'exisjs/router'
|
|
200
|
+
|
|
201
|
+
@Controller('users')
|
|
202
|
+
export default class UsersController {
|
|
203
|
+
@Post('/avatar')
|
|
204
|
+
@UseUpload({
|
|
205
|
+
field: 'avatar',
|
|
206
|
+
maxBytes: 5 * 1024 * 1024,
|
|
207
|
+
mimeTypes: ['image/jpeg', 'image/png', 'image/webp'],
|
|
208
|
+
})
|
|
209
|
+
async uploadAvatar(
|
|
210
|
+
@UploadedFile() file: IUploadedFile,
|
|
211
|
+
@Body() body: { caption?: string }
|
|
212
|
+
) {
|
|
213
|
+
return {
|
|
214
|
+
success: true,
|
|
215
|
+
filename: file.filename,
|
|
216
|
+
size: file.size,
|
|
217
|
+
caption: body.caption,
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Streaming & Downloads
|
|
224
|
+
|
|
225
|
+
OOP controllers support all streaming features including Node.js `Readable` streams, Web `ReadableStream`, async generators, and file downloads:
|
|
226
|
+
|
|
227
|
+
```typescript filename="src/http/files/route.ts"
|
|
228
|
+
import { Controller, Get, Res } from 'exisjs/decorators'
|
|
229
|
+
import type { Response } from 'exisjs/router'
|
|
230
|
+
import fs from 'node:fs'
|
|
231
|
+
|
|
232
|
+
@Controller('files')
|
|
233
|
+
export default class FilesController {
|
|
234
|
+
// 1. Force file download
|
|
235
|
+
@Get('/download')
|
|
236
|
+
download(@Res() res: Response) {
|
|
237
|
+
res.download('./reports/annual.pdf', 'Annual-Report.pdf')
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// 2. Stream Node.js Readable or auto-pipe return value
|
|
241
|
+
@Get('/stream')
|
|
242
|
+
streamCsv() {
|
|
243
|
+
return fs.createReadStream('./data/export.csv')
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// 3. Server-Sent Events (SSE)
|
|
247
|
+
@Get('/events')
|
|
248
|
+
events(@Res() res: Response) {
|
|
249
|
+
const sse = res.sse()
|
|
250
|
+
sse.send({ event: 'ping', data: { time: Date.now() } })
|
|
134
251
|
}
|
|
135
252
|
}
|
|
136
253
|
```
|