@depup/nestjs__core 11.1.17-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/PACKAGE.md +1 -0
- package/README.md +25 -0
- package/Readme.md +146 -0
- package/adapters/http-adapter.d.ts +80 -0
- package/adapters/http-adapter.js +90 -0
- package/adapters/index.d.ts +1 -0
- package/adapters/index.js +4 -0
- package/application-config.d.ts +47 -0
- package/application-config.js +107 -0
- package/changes.json +5 -0
- package/constants.d.ts +14 -0
- package/constants.js +21 -0
- package/discovery/discoverable-meta-host-collection.d.ts +46 -0
- package/discovery/discoverable-meta-host-collection.js +98 -0
- package/discovery/discovery-module.d.ts +5 -0
- package/discovery/discovery-module.js +19 -0
- package/discovery/discovery-service.d.ts +76 -0
- package/discovery/discovery-service.js +98 -0
- package/discovery/index.d.ts +2 -0
- package/discovery/index.js +5 -0
- package/errors/exception-handler.d.ts +4 -0
- package/errors/exception-handler.js +11 -0
- package/errors/exceptions/circular-dependency.exception.d.ts +4 -0
- package/errors/exceptions/circular-dependency.exception.js +11 -0
- package/errors/exceptions/index.d.ts +8 -0
- package/errors/exceptions/index.js +11 -0
- package/errors/exceptions/invalid-class-module.exception.d.ts +4 -0
- package/errors/exceptions/invalid-class-module.exception.js +11 -0
- package/errors/exceptions/invalid-class-scope.exception.d.ts +5 -0
- package/errors/exceptions/invalid-class-scope.exception.js +16 -0
- package/errors/exceptions/invalid-class.exception.d.ts +4 -0
- package/errors/exceptions/invalid-class.exception.js +11 -0
- package/errors/exceptions/invalid-exception-filter.exception.d.ts +4 -0
- package/errors/exceptions/invalid-exception-filter.exception.js +11 -0
- package/errors/exceptions/invalid-middleware-configuration.exception.d.ts +4 -0
- package/errors/exceptions/invalid-middleware-configuration.exception.js +11 -0
- package/errors/exceptions/invalid-middleware.exception.d.ts +4 -0
- package/errors/exceptions/invalid-middleware.exception.js +11 -0
- package/errors/exceptions/invalid-module.exception.d.ts +4 -0
- package/errors/exceptions/invalid-module.exception.js +11 -0
- package/errors/exceptions/runtime.exception.d.ts +4 -0
- package/errors/exceptions/runtime.exception.js +12 -0
- package/errors/exceptions/undefined-dependency.exception.d.ts +6 -0
- package/errors/exceptions/undefined-dependency.exception.js +11 -0
- package/errors/exceptions/undefined-forwardref.exception.d.ts +5 -0
- package/errors/exceptions/undefined-forwardref.exception.js +11 -0
- package/errors/exceptions/undefined-module.exception.d.ts +4 -0
- package/errors/exceptions/undefined-module.exception.js +11 -0
- package/errors/exceptions/unknown-dependencies.exception.d.ts +16 -0
- package/errors/exceptions/unknown-dependencies.exception.js +15 -0
- package/errors/exceptions/unknown-element.exception.d.ts +4 -0
- package/errors/exceptions/unknown-element.exception.js +11 -0
- package/errors/exceptions/unknown-export.exception.d.ts +4 -0
- package/errors/exceptions/unknown-export.exception.js +11 -0
- package/errors/exceptions/unknown-module.exception.d.ts +4 -0
- package/errors/exceptions/unknown-module.exception.js +10 -0
- package/errors/exceptions/unknown-request-mapping.exception.d.ts +5 -0
- package/errors/exceptions/unknown-request-mapping.exception.js +11 -0
- package/errors/exceptions-zone.d.ts +5 -0
- package/errors/exceptions-zone.js +34 -0
- package/errors/messages.d.ts +17 -0
- package/errors/messages.js +174 -0
- package/exceptions/base-exception-filter-context.d.ts +14 -0
- package/exceptions/base-exception-filter-context.js +56 -0
- package/exceptions/base-exception-filter.d.ts +20 -0
- package/exceptions/base-exception-filter.js +72 -0
- package/exceptions/exceptions-handler.d.ts +10 -0
- package/exceptions/exceptions-handler.js +34 -0
- package/exceptions/external-exception-filter-context.d.ts +12 -0
- package/exceptions/external-exception-filter-context.js +42 -0
- package/exceptions/external-exception-filter.d.ts +5 -0
- package/exceptions/external-exception-filter.js +15 -0
- package/exceptions/external-exceptions-handler.d.ts +9 -0
- package/exceptions/external-exceptions-handler.js +34 -0
- package/exceptions/index.d.ts +1 -0
- package/exceptions/index.js +4 -0
- package/guards/constants.d.ts +1 -0
- package/guards/constants.js +4 -0
- package/guards/guards-consumer.d.ts +9 -0
- package/guards/guards-consumer.js +39 -0
- package/guards/guards-context-creator.d.ts +17 -0
- package/guards/guards-context-creator.js +70 -0
- package/guards/index.d.ts +3 -0
- package/guards/index.js +6 -0
- package/helpers/barrier.d.ts +30 -0
- package/helpers/barrier.js +46 -0
- package/helpers/context-creator.d.ts +10 -0
- package/helpers/context-creator.js +33 -0
- package/helpers/context-id-factory.d.ts +41 -0
- package/helpers/context-id-factory.js +67 -0
- package/helpers/context-utils.d.ts +23 -0
- package/helpers/context-utils.js +55 -0
- package/helpers/execution-context-host.d.ts +19 -0
- package/helpers/execution-context-host.js +50 -0
- package/helpers/external-context-creator.d.ts +51 -0
- package/helpers/external-context-creator.js +166 -0
- package/helpers/external-proxy.d.ts +5 -0
- package/helpers/external-proxy.js +19 -0
- package/helpers/get-class-scope.d.ts +3 -0
- package/helpers/get-class-scope.js +8 -0
- package/helpers/handler-metadata-storage.d.ts +27 -0
- package/helpers/handler-metadata-storage.js +26 -0
- package/helpers/http-adapter-host.d.ts +51 -0
- package/helpers/http-adapter-host.js +73 -0
- package/helpers/index.d.ts +3 -0
- package/helpers/index.js +6 -0
- package/helpers/interfaces/external-handler-metadata.interface.d.ts +11 -0
- package/helpers/interfaces/external-handler-metadata.interface.js +2 -0
- package/helpers/interfaces/index.d.ts +2 -0
- package/helpers/interfaces/index.js +5 -0
- package/helpers/interfaces/params-metadata.interface.d.ts +6 -0
- package/helpers/interfaces/params-metadata.interface.js +2 -0
- package/helpers/is-durable.d.ts +2 -0
- package/helpers/is-durable.js +8 -0
- package/helpers/load-adapter.d.ts +1 -0
- package/helpers/load-adapter.js +15 -0
- package/helpers/messages.d.ts +7 -0
- package/helpers/messages.js +29 -0
- package/helpers/optional-require.d.ts +1 -0
- package/helpers/optional-require.js +11 -0
- package/helpers/rethrow.d.ts +1 -0
- package/helpers/rethrow.js +7 -0
- package/helpers/router-method-factory.d.ts +23 -0
- package/helpers/router-method-factory.js +33 -0
- package/hooks/before-app-shutdown.hook.d.ts +9 -0
- package/hooks/before-app-shutdown.hook.js +51 -0
- package/hooks/index.d.ts +5 -0
- package/hooks/index.js +8 -0
- package/hooks/on-app-bootstrap.hook.d.ts +8 -0
- package/hooks/on-app-bootstrap.hook.js +53 -0
- package/hooks/on-app-shutdown.hook.d.ts +9 -0
- package/hooks/on-app-shutdown.hook.js +54 -0
- package/hooks/on-module-destroy.hook.d.ts +8 -0
- package/hooks/on-module-destroy.hook.js +53 -0
- package/hooks/on-module-init.hook.d.ts +8 -0
- package/hooks/on-module-init.hook.js +53 -0
- package/hooks/utils/get-instances-grouped-by-hierarchy-level.d.ts +3 -0
- package/hooks/utils/get-instances-grouped-by-hierarchy-level.js +27 -0
- package/hooks/utils/get-sorted-hierarchy-levels.d.ts +1 -0
- package/hooks/utils/get-sorted-hierarchy-levels.js +7 -0
- package/index.d.ts +17 -0
- package/index.js +32 -0
- package/injector/abstract-instance-resolver.d.ts +16 -0
- package/injector/abstract-instance-resolver.js +49 -0
- package/injector/compiler.d.ts +18 -0
- package/injector/compiler.js +35 -0
- package/injector/constants.d.ts +3 -0
- package/injector/constants.js +8 -0
- package/injector/container.d.ts +67 -0
- package/injector/container.js +233 -0
- package/injector/helpers/provider-classifier.d.ts +4 -0
- package/injector/helpers/provider-classifier.js +16 -0
- package/injector/helpers/silent-logger.d.ts +10 -0
- package/injector/helpers/silent-logger.js +18 -0
- package/injector/helpers/transient-instances.d.ts +12 -0
- package/injector/helpers/transient-instances.js +28 -0
- package/injector/index.d.ts +6 -0
- package/injector/index.js +8 -0
- package/injector/injector.d.ts +104 -0
- package/injector/injector.js +554 -0
- package/injector/inquirer/index.d.ts +1 -0
- package/injector/inquirer/index.js +4 -0
- package/injector/inquirer/inquirer-constants.d.ts +1 -0
- package/injector/inquirer/inquirer-constants.js +4 -0
- package/injector/inquirer/inquirer-providers.d.ts +2 -0
- package/injector/inquirer/inquirer-providers.js +11 -0
- package/injector/instance-links-host.d.ts +22 -0
- package/injector/instance-links-host.js +56 -0
- package/injector/instance-loader.d.ts +23 -0
- package/injector/instance-loader.js +88 -0
- package/injector/instance-wrapper.d.ts +99 -0
- package/injector/instance-wrapper.js +350 -0
- package/injector/internal-core-module/index.d.ts +1 -0
- package/injector/internal-core-module/index.js +4 -0
- package/injector/internal-core-module/internal-core-module-factory.d.ts +9 -0
- package/injector/internal-core-module/internal-core-module-factory.js +52 -0
- package/injector/internal-core-module/internal-core-module.d.ts +5 -0
- package/injector/internal-core-module/internal-core-module.js +40 -0
- package/injector/internal-providers-storage.d.ts +9 -0
- package/injector/internal-providers-storage.js +19 -0
- package/injector/lazy-module-loader/lazy-module-loader-options.interface.d.ts +6 -0
- package/injector/lazy-module-loader/lazy-module-loader-options.interface.js +2 -0
- package/injector/lazy-module-loader/lazy-module-loader.d.ts +20 -0
- package/injector/lazy-module-loader/lazy-module-loader.js +49 -0
- package/injector/module-ref.d.ts +106 -0
- package/injector/module-ref.js +66 -0
- package/injector/module.d.ts +82 -0
- package/injector/module.js +432 -0
- package/injector/modules-container.d.ts +27 -0
- package/injector/modules-container.js +42 -0
- package/injector/opaque-key-factory/by-reference-module-opaque-key-factory.d.ts +15 -0
- package/injector/opaque-key-factory/by-reference-module-opaque-key-factory.js +41 -0
- package/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.d.ts +15 -0
- package/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.js +83 -0
- package/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.d.ts +18 -0
- package/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.js +2 -0
- package/injector/settlement-signal.d.ts +37 -0
- package/injector/settlement-signal.js +55 -0
- package/injector/topology-tree/topology-tree.d.ts +8 -0
- package/injector/topology-tree/topology-tree.js +51 -0
- package/injector/topology-tree/tree-node.d.ts +14 -0
- package/injector/topology-tree/tree-node.js +54 -0
- package/inspector/deterministic-uuid-registry.d.ts +6 -0
- package/inspector/deterministic-uuid-registry.js +24 -0
- package/inspector/graph-inspector.d.ts +26 -0
- package/inspector/graph-inspector.js +166 -0
- package/inspector/index.d.ts +4 -0
- package/inspector/index.js +7 -0
- package/inspector/initialize-on-preview.allowlist.d.ts +6 -0
- package/inspector/initialize-on-preview.allowlist.js +13 -0
- package/inspector/interfaces/edge.interface.d.ts +28 -0
- package/inspector/interfaces/edge.interface.js +2 -0
- package/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts +12 -0
- package/inspector/interfaces/enhancer-metadata-cache-entry.interface.js +2 -0
- package/inspector/interfaces/entrypoint.interface.d.ts +23 -0
- package/inspector/interfaces/entrypoint.interface.js +2 -0
- package/inspector/interfaces/extras.interface.d.ts +18 -0
- package/inspector/interfaces/extras.interface.js +2 -0
- package/inspector/interfaces/node.interface.d.ts +48 -0
- package/inspector/interfaces/node.interface.js +2 -0
- package/inspector/interfaces/serialized-graph-json.interface.d.ts +14 -0
- package/inspector/interfaces/serialized-graph-json.interface.js +2 -0
- package/inspector/interfaces/serialized-graph-metadata.interface.d.ts +10 -0
- package/inspector/interfaces/serialized-graph-metadata.interface.js +2 -0
- package/inspector/noop-graph-inspector.d.ts +2 -0
- package/inspector/noop-graph-inspector.js +8 -0
- package/inspector/partial-graph.host.d.ts +7 -0
- package/inspector/partial-graph.host.js +15 -0
- package/inspector/serialized-graph.d.ts +52 -0
- package/inspector/serialized-graph.js +124 -0
- package/inspector/uuid-factory.d.ts +9 -0
- package/inspector/uuid-factory.js +22 -0
- package/interceptors/index.d.ts +2 -0
- package/interceptors/index.js +5 -0
- package/interceptors/interceptors-consumer.d.ts +9 -0
- package/interceptors/interceptors-consumer.js +37 -0
- package/interceptors/interceptors-context-creator.d.ts +16 -0
- package/interceptors/interceptors-context-creator.js +69 -0
- package/interfaces/index.d.ts +2 -0
- package/interfaces/index.js +2 -0
- package/interfaces/module-definition.interface.d.ts +3 -0
- package/interfaces/module-definition.interface.js +2 -0
- package/interfaces/module-override.interface.d.ts +5 -0
- package/interfaces/module-override.interface.js +2 -0
- package/internal.d.ts +38 -0
- package/internal.js +46 -0
- package/metadata-scanner.d.ts +17 -0
- package/metadata-scanner.js +83 -0
- package/middleware/builder.d.ts +15 -0
- package/middleware/builder.js +91 -0
- package/middleware/container.d.ts +14 -0
- package/middleware/container.js +49 -0
- package/middleware/index.d.ts +1 -0
- package/middleware/index.js +4 -0
- package/middleware/middleware-module.d.ts +33 -0
- package/middleware/middleware-module.js +208 -0
- package/middleware/resolver.d.ts +10 -0
- package/middleware/resolver.js +18 -0
- package/middleware/route-info-path-extractor.d.ts +15 -0
- package/middleware/route-info-path-extractor.js +81 -0
- package/middleware/routes-mapper.d.ts +19 -0
- package/middleware/routes-mapper.js +117 -0
- package/middleware/utils.d.ts +8 -0
- package/middleware/utils.js +106 -0
- package/nest-application-context.d.ts +173 -0
- package/nest-application-context.js +327 -0
- package/nest-application.d.ts +64 -0
- package/nest-application.js +328 -0
- package/nest-factory.d.ts +83 -0
- package/nest-factory.js +232 -0
- package/package.json +73 -0
- package/pipes/index.d.ts +3 -0
- package/pipes/index.js +6 -0
- package/pipes/params-token-factory.d.ts +5 -0
- package/pipes/params-token-factory.js +19 -0
- package/pipes/pipes-consumer.d.ts +10 -0
- package/pipes/pipes-consumer.js +21 -0
- package/pipes/pipes-context-creator.d.ts +17 -0
- package/pipes/pipes-context-creator.js +72 -0
- package/repl/assign-to-object.util.d.ts +5 -0
- package/repl/assign-to-object.util.js +14 -0
- package/repl/constants.d.ts +1 -0
- package/repl/constants.js +4 -0
- package/repl/index.d.ts +1 -0
- package/repl/index.js +4 -0
- package/repl/native-functions/debug-repl-fn.d.ts +9 -0
- package/repl/native-functions/debug-repl-fn.js +46 -0
- package/repl/native-functions/get-repl-fn.d.ts +7 -0
- package/repl/native-functions/get-repl-fn.js +19 -0
- package/repl/native-functions/help-repl-fn.d.ts +7 -0
- package/repl/native-functions/help-repl-fn.js +29 -0
- package/repl/native-functions/index.d.ts +6 -0
- package/repl/native-functions/index.js +9 -0
- package/repl/native-functions/methods-repl-fn.d.ts +8 -0
- package/repl/native-functions/methods-repl-fn.js +28 -0
- package/repl/native-functions/resolve-repl-fn.d.ts +7 -0
- package/repl/native-functions/resolve-repl-fn.js +18 -0
- package/repl/native-functions/select-relp-fn.d.ts +7 -0
- package/repl/native-functions/select-relp-fn.js +18 -0
- package/repl/repl-context.d.ts +26 -0
- package/repl/repl-context.js +126 -0
- package/repl/repl-function.d.ts +18 -0
- package/repl/repl-function.js +19 -0
- package/repl/repl-logger.d.ts +5 -0
- package/repl/repl-logger.js +22 -0
- package/repl/repl-native-commands.d.ts +2 -0
- package/repl/repl-native-commands.js +46 -0
- package/repl/repl.d.ts +3 -0
- package/repl/repl.interfaces.d.ts +16 -0
- package/repl/repl.interfaces.js +2 -0
- package/repl/repl.js +32 -0
- package/router/index.d.ts +3 -0
- package/router/index.js +8 -0
- package/router/interfaces/exceptions-filter.interface.d.ts +6 -0
- package/router/interfaces/exceptions-filter.interface.js +2 -0
- package/router/interfaces/exclude-route-metadata.interface.d.ts +15 -0
- package/router/interfaces/exclude-route-metadata.interface.js +2 -0
- package/router/interfaces/index.d.ts +1 -0
- package/router/interfaces/index.js +4 -0
- package/router/interfaces/resolver.interface.d.ts +5 -0
- package/router/interfaces/resolver.interface.js +2 -0
- package/router/interfaces/route-params-factory.interface.d.ts +8 -0
- package/router/interfaces/route-params-factory.interface.js +2 -0
- package/router/interfaces/route-path-metadata.interface.d.ts +32 -0
- package/router/interfaces/route-path-metadata.interface.js +2 -0
- package/router/interfaces/routes.interface.d.ts +7 -0
- package/router/interfaces/routes.interface.js +2 -0
- package/router/legacy-route-converter.d.ts +16 -0
- package/router/legacy-route-converter.js +61 -0
- package/router/paths-explorer.d.ts +18 -0
- package/router/paths-explorer.js +45 -0
- package/router/request/index.d.ts +1 -0
- package/router/request/index.js +5 -0
- package/router/request/request-constants.d.ts +2 -0
- package/router/request/request-constants.js +5 -0
- package/router/request/request-providers.d.ts +2 -0
- package/router/request/request-providers.js +11 -0
- package/router/route-params-factory.d.ts +9 -0
- package/router/route-params-factory.js +41 -0
- package/router/route-path-factory.d.ts +14 -0
- package/router/route-path-factory.js +101 -0
- package/router/router-exception-filters.d.ts +14 -0
- package/router/router-exception-filters.js +40 -0
- package/router/router-execution-context.d.ts +54 -0
- package/router/router-execution-context.js +186 -0
- package/router/router-explorer.d.ts +47 -0
- package/router/router-explorer.js +234 -0
- package/router/router-module.d.ts +19 -0
- package/router/router-module.js +80 -0
- package/router/router-proxy.d.ts +6 -0
- package/router/router-proxy.js +31 -0
- package/router/router-response-controller.d.ts +28 -0
- package/router/router-response-controller.js +98 -0
- package/router/routes-resolver.d.ts +27 -0
- package/router/routes-resolver.js +129 -0
- package/router/sse-stream.d.ts +43 -0
- package/router/sse-stream.js +83 -0
- package/router/utils/exclude-route.util.d.ts +4 -0
- package/router/utils/exclude-route.util.js +19 -0
- package/router/utils/flatten-route-paths.util.d.ts +6 -0
- package/router/utils/flatten-route-paths.util.js +25 -0
- package/router/utils/index.d.ts +2 -0
- package/router/utils/index.js +5 -0
- package/scanner.d.ts +89 -0
- package/scanner.js +416 -0
- package/services/index.d.ts +1 -0
- package/services/index.js +4 -0
- package/services/reflector.service.d.ts +111 -0
- package/services/reflector.service.js +100 -0
- package/tsconfig.build.json +21 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RouteParamsFactory = void 0;
|
|
4
|
+
const route_paramtypes_enum_1 = require("@nestjs/common/enums/route-paramtypes.enum");
|
|
5
|
+
class RouteParamsFactory {
|
|
6
|
+
exchangeKeyForValue(key, data, { req, res, next }) {
|
|
7
|
+
switch (key) {
|
|
8
|
+
case route_paramtypes_enum_1.RouteParamtypes.NEXT:
|
|
9
|
+
return next;
|
|
10
|
+
case route_paramtypes_enum_1.RouteParamtypes.REQUEST:
|
|
11
|
+
return req;
|
|
12
|
+
case route_paramtypes_enum_1.RouteParamtypes.RESPONSE:
|
|
13
|
+
return res;
|
|
14
|
+
case route_paramtypes_enum_1.RouteParamtypes.BODY:
|
|
15
|
+
return data && req.body ? req.body[data] : req.body;
|
|
16
|
+
case route_paramtypes_enum_1.RouteParamtypes.RAW_BODY:
|
|
17
|
+
return req.rawBody;
|
|
18
|
+
case route_paramtypes_enum_1.RouteParamtypes.PARAM:
|
|
19
|
+
return data ? req.params[data] : req.params;
|
|
20
|
+
case route_paramtypes_enum_1.RouteParamtypes.HOST:
|
|
21
|
+
/* eslint-disable-next-line no-case-declarations */
|
|
22
|
+
const hosts = req.hosts || {};
|
|
23
|
+
return data ? hosts[data] : hosts;
|
|
24
|
+
case route_paramtypes_enum_1.RouteParamtypes.QUERY:
|
|
25
|
+
return data ? req.query[data] : req.query;
|
|
26
|
+
case route_paramtypes_enum_1.RouteParamtypes.HEADERS:
|
|
27
|
+
return data ? req.headers[data.toLowerCase()] : req.headers;
|
|
28
|
+
case route_paramtypes_enum_1.RouteParamtypes.SESSION:
|
|
29
|
+
return req.session;
|
|
30
|
+
case route_paramtypes_enum_1.RouteParamtypes.FILE:
|
|
31
|
+
return req[data || 'file'];
|
|
32
|
+
case route_paramtypes_enum_1.RouteParamtypes.FILES:
|
|
33
|
+
return req.files;
|
|
34
|
+
case route_paramtypes_enum_1.RouteParamtypes.IP:
|
|
35
|
+
return req.ip;
|
|
36
|
+
default:
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.RouteParamsFactory = RouteParamsFactory;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { RequestMethod, VersioningOptions } from '@nestjs/common';
|
|
2
|
+
import { VersionValue } from '@nestjs/common/interfaces';
|
|
3
|
+
import { ApplicationConfig } from '../application-config';
|
|
4
|
+
import { RoutePathMetadata } from './interfaces/route-path-metadata.interface';
|
|
5
|
+
export declare class RoutePathFactory {
|
|
6
|
+
private readonly applicationConfig;
|
|
7
|
+
constructor(applicationConfig: ApplicationConfig);
|
|
8
|
+
create(metadata: RoutePathMetadata, requestMethod?: RequestMethod): string[];
|
|
9
|
+
getVersion(metadata: RoutePathMetadata): VersionValue | undefined;
|
|
10
|
+
getVersionPrefix(versioningOptions: VersioningOptions): string;
|
|
11
|
+
appendToAllIfDefined(paths: string[], fragmentToAppend: string | string[] | undefined): string[];
|
|
12
|
+
isExcludedFromGlobalPrefix(path: string, requestMethod?: RequestMethod, versionOrVersions?: VersionValue, versioningOptions?: VersioningOptions): boolean;
|
|
13
|
+
private truncateVersionPrefixFromPath;
|
|
14
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RoutePathFactory = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
class RoutePathFactory {
|
|
8
|
+
constructor(applicationConfig) {
|
|
9
|
+
this.applicationConfig = applicationConfig;
|
|
10
|
+
}
|
|
11
|
+
create(metadata, requestMethod) {
|
|
12
|
+
let paths = [''];
|
|
13
|
+
const versionOrVersions = this.getVersion(metadata);
|
|
14
|
+
if (versionOrVersions &&
|
|
15
|
+
metadata.versioningOptions?.type === common_1.VersioningType.URI) {
|
|
16
|
+
const versionPrefix = this.getVersionPrefix(metadata.versioningOptions);
|
|
17
|
+
if (Array.isArray(versionOrVersions)) {
|
|
18
|
+
paths = (0, common_1.flatten)(paths.map(path => versionOrVersions.map(version =>
|
|
19
|
+
// Version Neutral - Do not include version in URL
|
|
20
|
+
version === common_1.VERSION_NEUTRAL
|
|
21
|
+
? path
|
|
22
|
+
: `${path}/${versionPrefix}${version}`)));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// Version Neutral - Do not include version in URL
|
|
26
|
+
if (versionOrVersions !== common_1.VERSION_NEUTRAL) {
|
|
27
|
+
paths = paths.map(path => `${path}/${versionPrefix}${versionOrVersions}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
paths = this.appendToAllIfDefined(paths, metadata.modulePath);
|
|
32
|
+
paths = this.appendToAllIfDefined(paths, metadata.ctrlPath);
|
|
33
|
+
paths = this.appendToAllIfDefined(paths, metadata.methodPath);
|
|
34
|
+
if (metadata.globalPrefix) {
|
|
35
|
+
paths = paths.map(path => {
|
|
36
|
+
if (this.isExcludedFromGlobalPrefix(path, requestMethod, versionOrVersions, metadata.versioningOptions)) {
|
|
37
|
+
return path;
|
|
38
|
+
}
|
|
39
|
+
return (0, shared_utils_1.stripEndSlash)(metadata.globalPrefix || '') + path;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return paths
|
|
43
|
+
.map(path => (0, shared_utils_1.addLeadingSlash)(path || '/'))
|
|
44
|
+
.map(path => (path !== '/' ? (0, shared_utils_1.stripEndSlash)(path) : path));
|
|
45
|
+
}
|
|
46
|
+
getVersion(metadata) {
|
|
47
|
+
// The version will be either the path version or the controller version,
|
|
48
|
+
// with the pathVersion taking priority.
|
|
49
|
+
return metadata.methodVersion || metadata.controllerVersion;
|
|
50
|
+
}
|
|
51
|
+
getVersionPrefix(versioningOptions) {
|
|
52
|
+
const defaultPrefix = 'v';
|
|
53
|
+
if (versioningOptions.type === common_1.VersioningType.URI) {
|
|
54
|
+
if (versioningOptions.prefix === false) {
|
|
55
|
+
return '';
|
|
56
|
+
}
|
|
57
|
+
else if (versioningOptions.prefix !== undefined) {
|
|
58
|
+
return versioningOptions.prefix;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return defaultPrefix;
|
|
62
|
+
}
|
|
63
|
+
appendToAllIfDefined(paths, fragmentToAppend) {
|
|
64
|
+
if (!fragmentToAppend) {
|
|
65
|
+
return paths;
|
|
66
|
+
}
|
|
67
|
+
const concatPaths = (a, b) => (0, shared_utils_1.stripEndSlash)(a) + (0, shared_utils_1.addLeadingSlash)(b);
|
|
68
|
+
if (Array.isArray(fragmentToAppend)) {
|
|
69
|
+
const paths2dArray = paths.map(path => fragmentToAppend.map(fragment => concatPaths(path, fragment)));
|
|
70
|
+
return (0, common_1.flatten)(paths2dArray);
|
|
71
|
+
}
|
|
72
|
+
return paths.map(path => concatPaths(path, fragmentToAppend));
|
|
73
|
+
}
|
|
74
|
+
isExcludedFromGlobalPrefix(path, requestMethod, versionOrVersions, versioningOptions) {
|
|
75
|
+
if ((0, shared_utils_1.isUndefined)(requestMethod)) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
const options = this.applicationConfig.getGlobalPrefixOptions();
|
|
79
|
+
const excludedRoutes = options.exclude;
|
|
80
|
+
if (versionOrVersions &&
|
|
81
|
+
versionOrVersions !== common_1.VERSION_NEUTRAL &&
|
|
82
|
+
versioningOptions?.type === common_1.VersioningType.URI) {
|
|
83
|
+
path = this.truncateVersionPrefixFromPath(path, versionOrVersions, versioningOptions);
|
|
84
|
+
}
|
|
85
|
+
return (Array.isArray(excludedRoutes) &&
|
|
86
|
+
(0, utils_1.isRouteExcluded)(excludedRoutes, path, requestMethod));
|
|
87
|
+
}
|
|
88
|
+
truncateVersionPrefixFromPath(path, versionValue, versioningOptions) {
|
|
89
|
+
if (typeof versionValue !== 'string') {
|
|
90
|
+
versionValue.forEach(version => {
|
|
91
|
+
if (typeof version === 'string') {
|
|
92
|
+
path = this.truncateVersionPrefixFromPath(path, version, versioningOptions);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
return path;
|
|
96
|
+
}
|
|
97
|
+
const prefix = `/${this.getVersionPrefix(versioningOptions)}${versionValue}`;
|
|
98
|
+
return path.startsWith(prefix) ? path.replace(prefix, '') : path;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.RoutePathFactory = RoutePathFactory;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HttpServer } from '@nestjs/common';
|
|
2
|
+
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
|
|
3
|
+
import { ApplicationConfig } from '../application-config';
|
|
4
|
+
import { BaseExceptionFilterContext } from '../exceptions/base-exception-filter-context';
|
|
5
|
+
import { ExceptionsHandler } from '../exceptions/exceptions-handler';
|
|
6
|
+
import { NestContainer } from '../injector/container';
|
|
7
|
+
import { RouterProxyCallback } from './router-proxy';
|
|
8
|
+
export declare class RouterExceptionFilters extends BaseExceptionFilterContext {
|
|
9
|
+
private readonly config;
|
|
10
|
+
private readonly applicationRef;
|
|
11
|
+
constructor(container: NestContainer, config: ApplicationConfig, applicationRef: HttpServer);
|
|
12
|
+
create(instance: Controller, callback: RouterProxyCallback, moduleKey: string | undefined, contextId?: import("../injector/instance-wrapper").ContextId, inquirerId?: string): ExceptionsHandler;
|
|
13
|
+
getGlobalMetadata<T extends unknown[]>(contextId?: import("../injector/instance-wrapper").ContextId, inquirerId?: string): T;
|
|
14
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RouterExceptionFilters = void 0;
|
|
4
|
+
const constants_1 = require("@nestjs/common/constants");
|
|
5
|
+
const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
|
|
6
|
+
const iterare_1 = require("iterare");
|
|
7
|
+
const base_exception_filter_context_1 = require("../exceptions/base-exception-filter-context");
|
|
8
|
+
const exceptions_handler_1 = require("../exceptions/exceptions-handler");
|
|
9
|
+
const constants_2 = require("../injector/constants");
|
|
10
|
+
class RouterExceptionFilters extends base_exception_filter_context_1.BaseExceptionFilterContext {
|
|
11
|
+
constructor(container, config, applicationRef) {
|
|
12
|
+
super(container);
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.applicationRef = applicationRef;
|
|
15
|
+
}
|
|
16
|
+
create(instance, callback, moduleKey, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
|
17
|
+
this.moduleContext = moduleKey;
|
|
18
|
+
const exceptionHandler = new exceptions_handler_1.ExceptionsHandler(this.applicationRef);
|
|
19
|
+
const filters = this.createContext(instance, callback, constants_1.EXCEPTION_FILTERS_METADATA, contextId, inquirerId);
|
|
20
|
+
if ((0, shared_utils_1.isEmpty)(filters)) {
|
|
21
|
+
return exceptionHandler;
|
|
22
|
+
}
|
|
23
|
+
exceptionHandler.setCustomFilters(filters.reverse());
|
|
24
|
+
return exceptionHandler;
|
|
25
|
+
}
|
|
26
|
+
getGlobalMetadata(contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
|
27
|
+
const globalFilters = this.config.getGlobalFilters();
|
|
28
|
+
if (contextId === constants_2.STATIC_CONTEXT && !inquirerId) {
|
|
29
|
+
return globalFilters;
|
|
30
|
+
}
|
|
31
|
+
const scopedFilterWrappers = this.config.getGlobalRequestFilters();
|
|
32
|
+
const scopedFilters = (0, iterare_1.iterate)(scopedFilterWrappers)
|
|
33
|
+
.map(wrapper => wrapper.getInstanceByContextId(contextId, inquirerId))
|
|
34
|
+
.filter(host => !!host)
|
|
35
|
+
.map(host => host.instance)
|
|
36
|
+
.toArray();
|
|
37
|
+
return globalFilters.concat(scopedFilters);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.RouterExceptionFilters = RouterExceptionFilters;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { CanActivate, HttpServer, ParamData, PipeTransform, RequestMethod } from '@nestjs/common';
|
|
2
|
+
import { RouteParamMetadata } from '@nestjs/common/decorators';
|
|
3
|
+
import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum';
|
|
4
|
+
import { ContextType, Controller } from '@nestjs/common/interfaces';
|
|
5
|
+
import { GuardsConsumer, GuardsContextCreator } from '../guards';
|
|
6
|
+
import { ExecutionContextHost } from '../helpers/execution-context-host';
|
|
7
|
+
import { HandleResponseFn, HandlerMetadata } from '../helpers/handler-metadata-storage';
|
|
8
|
+
import { InterceptorsConsumer } from '../interceptors/interceptors-consumer';
|
|
9
|
+
import { InterceptorsContextCreator } from '../interceptors/interceptors-context-creator';
|
|
10
|
+
import { PipesConsumer } from '../pipes/pipes-consumer';
|
|
11
|
+
import { PipesContextCreator } from '../pipes/pipes-context-creator';
|
|
12
|
+
import { IRouteParamsFactory } from './interfaces/route-params-factory.interface';
|
|
13
|
+
import { CustomHeader, RedirectResponse } from './router-response-controller';
|
|
14
|
+
export interface ParamProperties {
|
|
15
|
+
index: number;
|
|
16
|
+
type: RouteParamtypes | string;
|
|
17
|
+
data: ParamData;
|
|
18
|
+
pipes: PipeTransform[];
|
|
19
|
+
extractValue: <TRequest, TResponse>(req: TRequest, res: TResponse, next: Function) => any;
|
|
20
|
+
}
|
|
21
|
+
export declare class RouterExecutionContext {
|
|
22
|
+
private readonly paramsFactory;
|
|
23
|
+
private readonly pipesContextCreator;
|
|
24
|
+
private readonly pipesConsumer;
|
|
25
|
+
private readonly guardsContextCreator;
|
|
26
|
+
private readonly guardsConsumer;
|
|
27
|
+
private readonly interceptorsContextCreator;
|
|
28
|
+
private readonly interceptorsConsumer;
|
|
29
|
+
readonly applicationRef: HttpServer;
|
|
30
|
+
private readonly handlerMetadataStorage;
|
|
31
|
+
private readonly contextUtils;
|
|
32
|
+
private readonly responseController;
|
|
33
|
+
constructor(paramsFactory: IRouteParamsFactory, pipesContextCreator: PipesContextCreator, pipesConsumer: PipesConsumer, guardsContextCreator: GuardsContextCreator, guardsConsumer: GuardsConsumer, interceptorsContextCreator: InterceptorsContextCreator, interceptorsConsumer: InterceptorsConsumer, applicationRef: HttpServer);
|
|
34
|
+
create(instance: Controller, callback: (...args: any[]) => unknown, methodName: string, moduleKey: string, requestMethod: RequestMethod, contextId?: import("..").ContextId, inquirerId?: string): <TRequest, TResponse>(req: TRequest, res: TResponse, next: Function) => Promise<void>;
|
|
35
|
+
getMetadata<TContext extends ContextType = ContextType>(instance: Controller, callback: (...args: any[]) => any, methodName: string, moduleKey: string, requestMethod: RequestMethod, contextType: TContext): HandlerMetadata;
|
|
36
|
+
reflectRedirect(callback: (...args: unknown[]) => unknown): RedirectResponse;
|
|
37
|
+
reflectHttpStatusCode(callback: (...args: unknown[]) => unknown): number;
|
|
38
|
+
reflectRenderTemplate(callback: (...args: unknown[]) => unknown): string;
|
|
39
|
+
reflectResponseHeaders(callback: (...args: unknown[]) => unknown): CustomHeader[];
|
|
40
|
+
reflectSse(callback: (...args: unknown[]) => unknown): string;
|
|
41
|
+
exchangeKeysForValues(keys: string[], metadata: Record<number, RouteParamMetadata>, moduleContext: string, contextId?: import("..").ContextId, inquirerId?: string, contextFactory?: (args: unknown[]) => ExecutionContextHost): ParamProperties[];
|
|
42
|
+
getParamValue<T>(value: T, { metatype, type, data, }: {
|
|
43
|
+
metatype: unknown;
|
|
44
|
+
type: RouteParamtypes;
|
|
45
|
+
data: unknown;
|
|
46
|
+
}, pipes: PipeTransform[]): Promise<unknown>;
|
|
47
|
+
isPipeable(type: number | string): boolean;
|
|
48
|
+
createGuardsFn<TContext extends string = ContextType>(guards: CanActivate[], instance: Controller, callback: (...args: any[]) => any, contextType?: TContext): ((args: any[]) => Promise<void>) | null;
|
|
49
|
+
createPipesFn(pipes: PipeTransform[], paramsOptions: (ParamProperties & {
|
|
50
|
+
metatype?: any;
|
|
51
|
+
})[]): (<TRequest, TResponse>(args: any[], req: TRequest, res: TResponse, next: Function) => Promise<void>) | null;
|
|
52
|
+
createHandleResponseFn(callback: (...args: unknown[]) => unknown, isResponseHandled: boolean, redirectResponse?: RedirectResponse, httpStatusCode?: number): HandleResponseFn;
|
|
53
|
+
private isResponseHandled;
|
|
54
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RouterExecutionContext = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const constants_1 = require("@nestjs/common/constants");
|
|
6
|
+
const route_paramtypes_enum_1 = require("@nestjs/common/enums/route-paramtypes.enum");
|
|
7
|
+
const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
|
|
8
|
+
const guards_1 = require("../guards");
|
|
9
|
+
const context_utils_1 = require("../helpers/context-utils");
|
|
10
|
+
const handler_metadata_storage_1 = require("../helpers/handler-metadata-storage");
|
|
11
|
+
const constants_2 = require("../injector/constants");
|
|
12
|
+
const router_response_controller_1 = require("./router-response-controller");
|
|
13
|
+
class RouterExecutionContext {
|
|
14
|
+
constructor(paramsFactory, pipesContextCreator, pipesConsumer, guardsContextCreator, guardsConsumer, interceptorsContextCreator, interceptorsConsumer, applicationRef) {
|
|
15
|
+
this.paramsFactory = paramsFactory;
|
|
16
|
+
this.pipesContextCreator = pipesContextCreator;
|
|
17
|
+
this.pipesConsumer = pipesConsumer;
|
|
18
|
+
this.guardsContextCreator = guardsContextCreator;
|
|
19
|
+
this.guardsConsumer = guardsConsumer;
|
|
20
|
+
this.interceptorsContextCreator = interceptorsContextCreator;
|
|
21
|
+
this.interceptorsConsumer = interceptorsConsumer;
|
|
22
|
+
this.applicationRef = applicationRef;
|
|
23
|
+
this.handlerMetadataStorage = new handler_metadata_storage_1.HandlerMetadataStorage();
|
|
24
|
+
this.contextUtils = new context_utils_1.ContextUtils();
|
|
25
|
+
this.responseController = new router_response_controller_1.RouterResponseController(applicationRef);
|
|
26
|
+
}
|
|
27
|
+
create(instance, callback, methodName, moduleKey, requestMethod, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
|
28
|
+
const contextType = 'http';
|
|
29
|
+
const { argsLength, fnHandleResponse, paramtypes, getParamsMetadata, httpStatusCode, responseHeaders, hasCustomHeaders, } = this.getMetadata(instance, callback, methodName, moduleKey, requestMethod, contextType);
|
|
30
|
+
const paramsOptions = this.contextUtils.mergeParamsMetatypes(getParamsMetadata(moduleKey, contextId, inquirerId), paramtypes);
|
|
31
|
+
const pipes = this.pipesContextCreator.create(instance, callback, moduleKey, contextId, inquirerId);
|
|
32
|
+
const guards = this.guardsContextCreator.create(instance, callback, moduleKey, contextId, inquirerId);
|
|
33
|
+
const interceptors = this.interceptorsContextCreator.create(instance, callback, moduleKey, contextId, inquirerId);
|
|
34
|
+
const fnCanActivate = this.createGuardsFn(guards, instance, callback, contextType);
|
|
35
|
+
const fnApplyPipes = this.createPipesFn(pipes, paramsOptions);
|
|
36
|
+
const handler = (args, req, res, next) => async () => {
|
|
37
|
+
fnApplyPipes && (await fnApplyPipes(args, req, res, next));
|
|
38
|
+
return callback.apply(instance, args);
|
|
39
|
+
};
|
|
40
|
+
return async (req, res, next) => {
|
|
41
|
+
const args = this.contextUtils.createNullArray(argsLength);
|
|
42
|
+
fnCanActivate && (await fnCanActivate([req, res, next]));
|
|
43
|
+
this.responseController.setStatus(res, httpStatusCode);
|
|
44
|
+
hasCustomHeaders &&
|
|
45
|
+
this.responseController.setHeaders(res, responseHeaders);
|
|
46
|
+
const result = await this.interceptorsConsumer.intercept(interceptors, [req, res, next], instance, callback, handler(args, req, res, next), contextType);
|
|
47
|
+
await fnHandleResponse(result, res, req);
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
getMetadata(instance, callback, methodName, moduleKey, requestMethod, contextType) {
|
|
51
|
+
const cacheMetadata = this.handlerMetadataStorage.get(instance, methodName);
|
|
52
|
+
if (cacheMetadata) {
|
|
53
|
+
return cacheMetadata;
|
|
54
|
+
}
|
|
55
|
+
const metadata = this.contextUtils.reflectCallbackMetadata(instance, methodName, constants_1.ROUTE_ARGS_METADATA) || {};
|
|
56
|
+
const keys = Object.keys(metadata);
|
|
57
|
+
const argsLength = this.contextUtils.getArgumentsLength(keys, metadata);
|
|
58
|
+
const paramtypes = this.contextUtils.reflectCallbackParamtypes(instance, methodName);
|
|
59
|
+
const contextFactory = this.contextUtils.getContextFactory(contextType, instance, callback);
|
|
60
|
+
const getParamsMetadata = (moduleKey, contextId = constants_2.STATIC_CONTEXT, inquirerId) => this.exchangeKeysForValues(keys, metadata, moduleKey, contextId, inquirerId, contextFactory);
|
|
61
|
+
const paramsMetadata = getParamsMetadata(moduleKey);
|
|
62
|
+
const isResponseHandled = this.isResponseHandled(instance, methodName, paramsMetadata);
|
|
63
|
+
const httpRedirectResponse = this.reflectRedirect(callback);
|
|
64
|
+
const fnHandleResponse = this.createHandleResponseFn(callback, isResponseHandled, httpRedirectResponse);
|
|
65
|
+
const httpCode = this.reflectHttpStatusCode(callback);
|
|
66
|
+
const httpStatusCode = httpCode
|
|
67
|
+
? httpCode
|
|
68
|
+
: this.responseController.getStatusByMethod(requestMethod);
|
|
69
|
+
const responseHeaders = this.reflectResponseHeaders(callback);
|
|
70
|
+
const hasCustomHeaders = !(0, shared_utils_1.isEmpty)(responseHeaders);
|
|
71
|
+
const handlerMetadata = {
|
|
72
|
+
argsLength,
|
|
73
|
+
fnHandleResponse,
|
|
74
|
+
paramtypes,
|
|
75
|
+
getParamsMetadata,
|
|
76
|
+
httpStatusCode,
|
|
77
|
+
hasCustomHeaders,
|
|
78
|
+
responseHeaders,
|
|
79
|
+
};
|
|
80
|
+
this.handlerMetadataStorage.set(instance, methodName, handlerMetadata);
|
|
81
|
+
return handlerMetadata;
|
|
82
|
+
}
|
|
83
|
+
reflectRedirect(callback) {
|
|
84
|
+
return Reflect.getMetadata(constants_1.REDIRECT_METADATA, callback);
|
|
85
|
+
}
|
|
86
|
+
reflectHttpStatusCode(callback) {
|
|
87
|
+
return Reflect.getMetadata(constants_1.HTTP_CODE_METADATA, callback);
|
|
88
|
+
}
|
|
89
|
+
reflectRenderTemplate(callback) {
|
|
90
|
+
return Reflect.getMetadata(constants_1.RENDER_METADATA, callback);
|
|
91
|
+
}
|
|
92
|
+
reflectResponseHeaders(callback) {
|
|
93
|
+
return Reflect.getMetadata(constants_1.HEADERS_METADATA, callback) || [];
|
|
94
|
+
}
|
|
95
|
+
reflectSse(callback) {
|
|
96
|
+
return Reflect.getMetadata(constants_1.SSE_METADATA, callback);
|
|
97
|
+
}
|
|
98
|
+
exchangeKeysForValues(keys, metadata, moduleContext, contextId = constants_2.STATIC_CONTEXT, inquirerId, contextFactory) {
|
|
99
|
+
this.pipesContextCreator.setModuleContext(moduleContext);
|
|
100
|
+
return keys.map(key => {
|
|
101
|
+
const { index, data, pipes: pipesCollection } = metadata[key];
|
|
102
|
+
const pipes = this.pipesContextCreator.createConcreteContext(pipesCollection, contextId, inquirerId);
|
|
103
|
+
const type = this.contextUtils.mapParamType(key);
|
|
104
|
+
if (key.includes(constants_1.CUSTOM_ROUTE_ARGS_METADATA)) {
|
|
105
|
+
const { factory } = metadata[key];
|
|
106
|
+
const customExtractValue = this.contextUtils.getCustomFactory(factory, data, contextFactory);
|
|
107
|
+
return { index, extractValue: customExtractValue, type, data, pipes };
|
|
108
|
+
}
|
|
109
|
+
const numericType = Number(type);
|
|
110
|
+
const extractValue = (req, res, next) => this.paramsFactory.exchangeKeyForValue(numericType, data, {
|
|
111
|
+
req: req,
|
|
112
|
+
res,
|
|
113
|
+
next,
|
|
114
|
+
});
|
|
115
|
+
return { index, extractValue, type: numericType, data, pipes };
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
async getParamValue(value, { metatype, type, data, }, pipes) {
|
|
119
|
+
if (!(0, shared_utils_1.isEmpty)(pipes)) {
|
|
120
|
+
return this.pipesConsumer.apply(value, { metatype, type, data }, pipes);
|
|
121
|
+
}
|
|
122
|
+
return value;
|
|
123
|
+
}
|
|
124
|
+
isPipeable(type) {
|
|
125
|
+
return (type === route_paramtypes_enum_1.RouteParamtypes.BODY ||
|
|
126
|
+
type === route_paramtypes_enum_1.RouteParamtypes.RAW_BODY ||
|
|
127
|
+
type === route_paramtypes_enum_1.RouteParamtypes.QUERY ||
|
|
128
|
+
type === route_paramtypes_enum_1.RouteParamtypes.PARAM ||
|
|
129
|
+
type === route_paramtypes_enum_1.RouteParamtypes.FILE ||
|
|
130
|
+
type === route_paramtypes_enum_1.RouteParamtypes.FILES ||
|
|
131
|
+
(0, shared_utils_1.isString)(type));
|
|
132
|
+
}
|
|
133
|
+
createGuardsFn(guards, instance, callback, contextType) {
|
|
134
|
+
const canActivateFn = async (args) => {
|
|
135
|
+
const canActivate = await this.guardsConsumer.tryActivate(guards, args, instance, callback, contextType);
|
|
136
|
+
if (!canActivate) {
|
|
137
|
+
throw new common_1.ForbiddenException(guards_1.FORBIDDEN_MESSAGE);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
return guards.length ? canActivateFn : null;
|
|
141
|
+
}
|
|
142
|
+
createPipesFn(pipes, paramsOptions) {
|
|
143
|
+
const pipesFn = async (args, req, res, next) => {
|
|
144
|
+
const resolveParamValue = async (param) => {
|
|
145
|
+
const { index, extractValue, type, data, metatype, pipes: paramPipes, } = param;
|
|
146
|
+
const value = extractValue(req, res, next);
|
|
147
|
+
args[index] = this.isPipeable(type)
|
|
148
|
+
? await this.getParamValue(value, { metatype, type, data }, pipes.concat(paramPipes))
|
|
149
|
+
: value;
|
|
150
|
+
};
|
|
151
|
+
await Promise.all(paramsOptions.map(resolveParamValue));
|
|
152
|
+
};
|
|
153
|
+
return paramsOptions.length ? pipesFn : null;
|
|
154
|
+
}
|
|
155
|
+
createHandleResponseFn(callback, isResponseHandled, redirectResponse, httpStatusCode) {
|
|
156
|
+
const renderTemplate = this.reflectRenderTemplate(callback);
|
|
157
|
+
if (renderTemplate) {
|
|
158
|
+
return async (result, res) => {
|
|
159
|
+
return await this.responseController.render(result, res, renderTemplate);
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
if (redirectResponse && (0, shared_utils_1.isString)(redirectResponse.url)) {
|
|
163
|
+
return async (result, res) => {
|
|
164
|
+
await this.responseController.redirect(result, res, redirectResponse);
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
const isSseHandler = !!this.reflectSse(callback);
|
|
168
|
+
if (isSseHandler) {
|
|
169
|
+
return async (result, res, req) => {
|
|
170
|
+
await this.responseController.sse(result, res.raw || res, req.raw || req, { additionalHeaders: res.getHeaders?.() });
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
return async (result, res) => {
|
|
174
|
+
result = await this.responseController.transformToResult(result);
|
|
175
|
+
!isResponseHandled &&
|
|
176
|
+
(await this.responseController.apply(result, res, httpStatusCode));
|
|
177
|
+
return res;
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
isResponseHandled(instance, methodName, paramsMetadata) {
|
|
181
|
+
const hasResponseOrNextDecorator = paramsMetadata.some(({ type }) => type === route_paramtypes_enum_1.RouteParamtypes.RESPONSE || type === route_paramtypes_enum_1.RouteParamtypes.NEXT);
|
|
182
|
+
const isPassthroughEnabled = this.contextUtils.reflectPassthrough(instance, methodName);
|
|
183
|
+
return hasResponseOrNextDecorator && !isPassthroughEnabled;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
exports.RouterExecutionContext = RouterExecutionContext;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { HttpServer } from '@nestjs/common';
|
|
2
|
+
import { RequestMethod } from '@nestjs/common/enums';
|
|
3
|
+
import { Controller } from '@nestjs/common/interfaces/controllers/controller.interface';
|
|
4
|
+
import { Type } from '@nestjs/common/interfaces/type.interface';
|
|
5
|
+
import { VersionValue } from '@nestjs/common/interfaces/version-options.interface';
|
|
6
|
+
import { ApplicationConfig } from '../application-config';
|
|
7
|
+
import { NestContainer } from '../injector/container';
|
|
8
|
+
import { Injector } from '../injector/injector';
|
|
9
|
+
import { InstanceWrapper } from '../injector/instance-wrapper';
|
|
10
|
+
import { Module } from '../injector/module';
|
|
11
|
+
import { GraphInspector } from '../inspector/graph-inspector';
|
|
12
|
+
import { MetadataScanner } from '../metadata-scanner';
|
|
13
|
+
import { ExceptionsFilter } from './interfaces/exceptions-filter.interface';
|
|
14
|
+
import { RoutePathMetadata } from './interfaces/route-path-metadata.interface';
|
|
15
|
+
import { RoutePathFactory } from './route-path-factory';
|
|
16
|
+
import { RouterProxy, RouterProxyCallback } from './router-proxy';
|
|
17
|
+
export interface RouteDefinition {
|
|
18
|
+
path: string[];
|
|
19
|
+
requestMethod: RequestMethod;
|
|
20
|
+
targetCallback: RouterProxyCallback;
|
|
21
|
+
methodName: string;
|
|
22
|
+
version?: VersionValue;
|
|
23
|
+
}
|
|
24
|
+
export declare class RouterExplorer {
|
|
25
|
+
private readonly container;
|
|
26
|
+
private readonly injector;
|
|
27
|
+
private readonly routerProxy;
|
|
28
|
+
private readonly exceptionsFilter;
|
|
29
|
+
private readonly routePathFactory;
|
|
30
|
+
private readonly graphInspector;
|
|
31
|
+
private readonly executionContextCreator;
|
|
32
|
+
private readonly pathsExplorer;
|
|
33
|
+
private readonly routerMethodFactory;
|
|
34
|
+
private readonly logger;
|
|
35
|
+
private readonly exceptionFiltersCache;
|
|
36
|
+
constructor(metadataScanner: MetadataScanner, container: NestContainer, injector: Injector, routerProxy: RouterProxy, exceptionsFilter: ExceptionsFilter, config: ApplicationConfig, routePathFactory: RoutePathFactory, graphInspector: GraphInspector);
|
|
37
|
+
explore<T extends HttpServer = any>(instanceWrapper: InstanceWrapper, moduleKey: string, httpAdapterRef: T, host: string | RegExp | Array<string | RegExp>, routePathMetadata: RoutePathMetadata): void;
|
|
38
|
+
extractRouterPath(metatype: Type<Controller>): string[];
|
|
39
|
+
applyPathsToRouterProxy<T extends HttpServer>(router: T, routeDefinitions: RouteDefinition[], instanceWrapper: InstanceWrapper, moduleKey: string, routePathMetadata: RoutePathMetadata, host: string | RegExp | Array<string | RegExp>): void;
|
|
40
|
+
private applyCallbackToRouter;
|
|
41
|
+
private applyHostFilter;
|
|
42
|
+
private applyVersionFilter;
|
|
43
|
+
private createCallbackProxy;
|
|
44
|
+
createRequestScopedHandler(instanceWrapper: InstanceWrapper, requestMethod: RequestMethod, moduleRef: Module, moduleKey: string, methodName: string): <TRequest extends Record<any, any>, TResponse>(req: TRequest, res: TResponse, next: () => void) => Promise<void>;
|
|
45
|
+
private getContextId;
|
|
46
|
+
private copyMetadataToCallback;
|
|
47
|
+
}
|