@nestjs/core 11.1.16 → 12.0.0-alpha.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/adapters/http-adapter.d.ts +5 -3
- package/adapters/http-adapter.js +8 -5
- package/adapters/index.d.ts +1 -1
- package/adapters/index.js +1 -4
- package/application-config.d.ts +7 -4
- package/application-config.js +20 -15
- package/constants.d.ts +1 -1
- package/constants.js +10 -13
- package/discovery/discoverable-meta-host-collection.d.ts +3 -3
- package/discovery/discoverable-meta-host-collection.js +15 -19
- package/discovery/discovery-module.js +9 -12
- package/discovery/discovery-service.d.ts +4 -4
- package/discovery/discovery-service.js +17 -19
- package/discovery/index.d.ts +2 -2
- package/discovery/index.js +2 -5
- package/errors/exception-handler.js +3 -7
- package/errors/exceptions/circular-dependency.exception.d.ts +1 -1
- package/errors/exceptions/circular-dependency.exception.js +2 -6
- package/errors/exceptions/index.d.ts +8 -8
- package/errors/exceptions/index.js +8 -11
- package/errors/exceptions/invalid-class-module.exception.d.ts +1 -1
- package/errors/exceptions/invalid-class-module.exception.js +4 -8
- package/errors/exceptions/invalid-class-scope.exception.d.ts +2 -2
- package/errors/exceptions/invalid-class-scope.exception.js +6 -10
- package/errors/exceptions/invalid-class.exception.d.ts +1 -1
- package/errors/exceptions/invalid-class.exception.js +4 -8
- package/errors/exceptions/invalid-exception-filter.exception.d.ts +1 -1
- package/errors/exceptions/invalid-exception-filter.exception.js +4 -8
- package/errors/exceptions/invalid-middleware-configuration.exception.d.ts +1 -1
- package/errors/exceptions/invalid-middleware-configuration.exception.js +4 -8
- package/errors/exceptions/invalid-middleware.exception.d.ts +1 -1
- package/errors/exceptions/invalid-middleware.exception.js +4 -8
- package/errors/exceptions/invalid-module.exception.d.ts +1 -1
- package/errors/exceptions/invalid-module.exception.js +4 -8
- package/errors/exceptions/runtime.exception.js +1 -5
- package/errors/exceptions/undefined-dependency.exception.d.ts +3 -3
- package/errors/exceptions/undefined-dependency.exception.js +4 -8
- package/errors/exceptions/undefined-forwardref.exception.d.ts +2 -2
- package/errors/exceptions/undefined-forwardref.exception.js +4 -8
- package/errors/exceptions/undefined-module.exception.d.ts +1 -1
- package/errors/exceptions/undefined-module.exception.js +4 -8
- package/errors/exceptions/unknown-dependencies.exception.d.ts +3 -3
- package/errors/exceptions/unknown-dependencies.exception.js +8 -8
- package/errors/exceptions/unknown-element.exception.d.ts +1 -1
- package/errors/exceptions/unknown-element.exception.js +2 -6
- package/errors/exceptions/unknown-export.exception.d.ts +1 -1
- package/errors/exceptions/unknown-export.exception.js +4 -8
- package/errors/exceptions/unknown-module.exception.d.ts +1 -1
- package/errors/exceptions/unknown-module.exception.js +2 -6
- package/errors/exceptions/unknown-request-mapping.exception.d.ts +1 -1
- package/errors/exceptions/unknown-request-mapping.exception.js +4 -8
- package/errors/exceptions-zone.js +6 -10
- package/errors/messages.d.ts +2 -2
- package/errors/messages.js +20 -36
- package/exceptions/base-exception-filter-context.d.ts +6 -7
- package/exceptions/base-exception-filter-context.js +13 -16
- package/exceptions/base-exception-filter.d.ts +4 -4
- package/exceptions/base-exception-filter.js +33 -23
- package/exceptions/exceptions-handler.d.ts +4 -4
- package/exceptions/exceptions-handler.js +8 -16
- package/exceptions/external-exception-filter-context.d.ts +8 -8
- package/exceptions/external-exception-filter-context.js +14 -18
- package/exceptions/external-exception-filter.d.ts +1 -1
- package/exceptions/external-exception-filter.js +4 -8
- package/exceptions/external-exceptions-handler.d.ts +3 -3
- package/exceptions/external-exceptions-handler.js +8 -16
- package/exceptions/index.d.ts +1 -1
- package/exceptions/index.js +1 -4
- package/guards/constants.js +1 -4
- package/guards/guards-consumer.d.ts +4 -3
- package/guards/guards-consumer.js +8 -12
- package/guards/guards-context-creator.d.ts +11 -10
- package/guards/guards-context-creator.js +18 -20
- package/guards/index.d.ts +3 -3
- package/guards/index.js +3 -6
- package/helpers/barrier.js +5 -5
- package/helpers/context-creator.d.ts +2 -2
- package/helpers/context-creator.js +3 -7
- package/helpers/context-id-factory.d.ts +1 -1
- package/helpers/context-id-factory.js +10 -14
- package/helpers/context-utils.d.ts +6 -3
- package/helpers/context-utils.js +7 -12
- package/helpers/execution-context-host.d.ts +3 -3
- package/helpers/execution-context-host.js +5 -6
- package/helpers/external-context-creator.d.ts +15 -18
- package/helpers/external-context-creator.js +54 -43
- package/helpers/external-proxy.d.ts +2 -2
- package/helpers/external-proxy.js +3 -7
- package/helpers/get-class-scope.d.ts +2 -2
- package/helpers/get-class-scope.js +3 -6
- package/helpers/handler-metadata-storage.d.ts +4 -4
- package/helpers/handler-metadata-storage.js +7 -15
- package/helpers/http-adapter-host.d.ts +1 -1
- package/helpers/http-adapter-host.js +6 -11
- package/helpers/index.d.ts +3 -3
- package/helpers/index.js +3 -6
- package/helpers/interfaces/external-handler-metadata.interface.d.ts +2 -2
- package/helpers/interfaces/external-handler-metadata.interface.js +1 -2
- package/helpers/interfaces/index.d.ts +2 -2
- package/helpers/interfaces/index.js +2 -5
- package/helpers/interfaces/params-metadata.interface.d.ts +1 -1
- package/helpers/interfaces/params-metadata.interface.js +1 -2
- package/helpers/is-durable.d.ts +1 -1
- package/helpers/is-durable.js +3 -6
- package/helpers/load-adapter.d.ts +1 -1
- package/helpers/load-adapter.js +4 -7
- package/helpers/messages.d.ts +1 -1
- package/helpers/messages.js +10 -20
- package/helpers/optional-require.d.ts +1 -1
- package/helpers/optional-require.js +2 -5
- package/helpers/rethrow.js +1 -5
- package/helpers/router-method-factory.d.ts +2 -2
- package/helpers/router-method-factory.js +20 -24
- package/hooks/before-app-shutdown.hook.d.ts +3 -3
- package/hooks/before-app-shutdown.hook.js +15 -22
- package/hooks/index.d.ts +5 -5
- package/hooks/index.js +5 -8
- package/hooks/on-app-bootstrap.hook.d.ts +3 -3
- package/hooks/on-app-bootstrap.hook.js +15 -22
- package/hooks/on-app-shutdown.hook.d.ts +3 -3
- package/hooks/on-app-shutdown.hook.js +15 -22
- package/hooks/on-module-destroy.hook.d.ts +3 -3
- package/hooks/on-module-destroy.hook.js +15 -22
- package/hooks/on-module-init.hook.d.ts +3 -3
- package/hooks/on-module-init.hook.js +15 -22
- 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 +16 -16
- package/index.js +17 -26
- package/injector/abstract-instance-resolver.d.ts +6 -6
- package/injector/abstract-instance-resolver.js +7 -11
- package/injector/compiler.d.ts +2 -2
- package/injector/compiler.js +2 -5
- package/injector/constants.d.ts +1 -1
- package/injector/constants.js +2 -5
- package/injector/container.d.ts +13 -14
- package/injector/container.js +40 -40
- package/injector/helpers/provider-classifier.d.ts +1 -1
- package/injector/helpers/provider-classifier.js +5 -10
- package/injector/helpers/silent-logger.js +9 -16
- package/injector/index.d.ts +6 -6
- package/injector/index.js +5 -8
- package/injector/injector.d.ts +7 -6
- package/injector/injector.js +78 -78
- package/injector/inquirer/index.d.ts +1 -1
- package/injector/inquirer/index.js +1 -4
- package/injector/inquirer/inquirer-constants.js +1 -4
- package/injector/inquirer/inquirer-providers.d.ts +1 -1
- package/injector/inquirer/inquirer-providers.js +5 -8
- package/injector/instance-links-host.d.ts +3 -3
- package/injector/instance-links-host.js +8 -11
- package/injector/instance-loader.d.ts +5 -5
- package/injector/instance-loader.js +11 -11
- package/injector/instance-wrapper.d.ts +8 -5
- package/injector/instance-wrapper.js +93 -74
- package/injector/internal-core-module/index.d.ts +1 -1
- package/injector/internal-core-module/index.js +1 -4
- package/injector/internal-core-module/internal-core-module-factory.d.ts +6 -6
- package/injector/internal-core-module/internal-core-module-factory.js +23 -27
- package/injector/internal-core-module/internal-core-module.d.ts +2 -2
- package/injector/internal-core-module/internal-core-module.js +17 -20
- package/injector/internal-providers-storage.d.ts +2 -2
- package/injector/internal-providers-storage.js +4 -9
- package/injector/lazy-module-loader/lazy-module-loader-options.interface.js +1 -2
- package/injector/lazy-module-loader/lazy-module-loader.d.ts +8 -8
- package/injector/lazy-module-loader/lazy-module-loader.js +10 -9
- package/injector/module-ref.d.ts +7 -7
- package/injector/module-ref.js +19 -20
- package/injector/module.d.ts +5 -5
- package/injector/module.js +93 -79
- package/injector/modules-container.d.ts +1 -1
- package/injector/modules-container.js +5 -12
- package/injector/opaque-key-factory/by-reference-module-opaque-key-factory.d.ts +2 -4
- package/injector/opaque-key-factory/by-reference-module-opaque-key-factory.js +6 -9
- package/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.d.ts +2 -3
- package/injector/opaque-key-factory/deep-hashed-module-opaque-key-factory.js +17 -22
- package/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.d.ts +1 -3
- package/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.js +1 -2
- package/injector/settlement-signal.js +5 -7
- package/injector/topology-tree/topology-tree.d.ts +1 -1
- package/injector/topology-tree/topology-tree.js +6 -9
- package/injector/topology-tree/tree-node.js +4 -6
- package/inspector/deterministic-uuid-registry.js +2 -6
- package/inspector/graph-inspector.d.ts +7 -7
- package/inspector/graph-inspector.js +10 -12
- package/inspector/index.d.ts +4 -4
- package/inspector/index.js +4 -7
- package/inspector/initialize-on-preview.allowlist.d.ts +1 -1
- package/inspector/initialize-on-preview.allowlist.js +2 -6
- package/inspector/interfaces/edge.interface.d.ts +1 -1
- package/inspector/interfaces/edge.interface.js +1 -2
- package/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts +3 -3
- package/inspector/interfaces/enhancer-metadata-cache-entry.interface.js +1 -2
- package/inspector/interfaces/entrypoint.interface.d.ts +2 -2
- package/inspector/interfaces/entrypoint.interface.js +1 -2
- package/inspector/interfaces/extras.interface.d.ts +1 -1
- package/inspector/interfaces/extras.interface.js +1 -2
- package/inspector/interfaces/node.interface.d.ts +2 -2
- package/inspector/interfaces/node.interface.js +1 -2
- package/inspector/interfaces/serialized-graph-json.interface.d.ts +6 -6
- package/inspector/interfaces/serialized-graph-json.interface.js +1 -2
- package/inspector/interfaces/serialized-graph-metadata.interface.d.ts +1 -1
- package/inspector/interfaces/serialized-graph-metadata.interface.js +1 -2
- package/inspector/noop-graph-inspector.d.ts +1 -1
- package/inspector/noop-graph-inspector.js +2 -5
- package/inspector/partial-graph.host.d.ts +2 -2
- package/inspector/partial-graph.host.js +2 -5
- package/inspector/serialized-graph.d.ts +7 -7
- package/inspector/serialized-graph.js +35 -40
- package/inspector/uuid-factory.js +8 -12
- package/interceptors/index.d.ts +2 -2
- package/interceptors/index.js +2 -5
- package/interceptors/interceptors-consumer.d.ts +4 -3
- package/interceptors/interceptors-consumer.js +13 -17
- package/interceptors/interceptors-context-creator.d.ts +10 -9
- package/interceptors/interceptors-context-creator.js +18 -20
- package/interfaces/index.d.ts +2 -0
- package/interfaces/index.js +2 -0
- package/interfaces/module-definition.interface.d.ts +2 -2
- package/interfaces/module-definition.interface.js +1 -2
- package/interfaces/module-override.interface.d.ts +1 -1
- package/interfaces/module-override.interface.js +1 -2
- package/internal.d.ts +38 -0
- package/internal.js +46 -0
- package/metadata-scanner.d.ts +1 -1
- package/metadata-scanner.js +8 -14
- package/middleware/builder.d.ts +4 -4
- package/middleware/builder.js +78 -76
- package/middleware/container.d.ts +4 -4
- package/middleware/container.js +10 -13
- package/middleware/index.d.ts +1 -1
- package/middleware/index.js +1 -4
- package/middleware/middleware-module.d.ts +8 -9
- package/middleware/middleware-module.js +47 -44
- package/middleware/resolver.d.ts +3 -3
- package/middleware/resolver.js +3 -5
- package/middleware/route-info-path-extractor.d.ts +2 -2
- package/middleware/route-info-path-extractor.js +26 -25
- package/middleware/routes-mapper.d.ts +4 -3
- package/middleware/routes-mapper.js +22 -24
- package/middleware/utils.d.ts +3 -2
- package/middleware/utils.js +34 -45
- package/nest-application-context.d.ts +10 -9
- package/nest-application-context.js +50 -47
- package/nest-application.d.ts +18 -10
- package/nest-application.js +87 -55
- package/nest-factory.d.ts +4 -5
- package/nest-factory.js +61 -68
- package/package.json +32 -3
- package/pipes/index.d.ts +3 -3
- package/pipes/index.js +3 -6
- package/pipes/params-token-factory.d.ts +2 -2
- package/pipes/params-token-factory.js +5 -9
- package/pipes/pipes-consumer.d.ts +3 -7
- package/pipes/pipes-consumer.js +17 -18
- package/pipes/pipes-context-creator.d.ts +10 -9
- package/pipes/pipes-context-creator.js +18 -20
- package/repl/assign-to-object.util.js +1 -4
- package/repl/constants.js +1 -4
- package/repl/index.d.ts +1 -1
- package/repl/index.js +1 -4
- package/repl/native-functions/debug-repl-fn.d.ts +2 -2
- package/repl/native-functions/debug-repl-fn.js +14 -21
- package/repl/native-functions/get-repl-fn.d.ts +2 -2
- package/repl/native-functions/get-repl-fn.js +8 -15
- package/repl/native-functions/help-repl-fn.d.ts +2 -2
- package/repl/native-functions/help-repl-fn.js +13 -20
- package/repl/native-functions/index.d.ts +6 -6
- package/repl/native-functions/index.js +6 -9
- package/repl/native-functions/methods-repl-fn.d.ts +2 -2
- package/repl/native-functions/methods-repl-fn.js +12 -19
- package/repl/native-functions/resolve-repl-fn.d.ts +2 -2
- package/repl/native-functions/resolve-repl-fn.js +7 -14
- package/repl/native-functions/select-relp-fn.d.ts +2 -2
- package/repl/native-functions/select-relp-fn.js +7 -14
- package/repl/repl-context.d.ts +3 -3
- package/repl/repl-context.js +21 -23
- package/repl/repl-function.d.ts +3 -3
- package/repl/repl-function.js +5 -7
- package/repl/repl-logger.js +10 -14
- package/repl/repl-native-commands.js +1 -4
- package/repl/repl.d.ts +1 -1
- package/repl/repl.interfaces.d.ts +2 -2
- package/repl/repl.interfaces.js +1 -2
- package/repl/repl.js +17 -20
- package/router/index.d.ts +3 -3
- package/router/index.js +3 -8
- package/router/interfaces/exceptions-filter.interface.d.ts +3 -3
- package/router/interfaces/exceptions-filter.interface.js +1 -2
- package/router/interfaces/exclude-route-metadata.interface.d.ts +1 -1
- package/router/interfaces/exclude-route-metadata.interface.js +1 -2
- package/router/interfaces/index.d.ts +1 -1
- package/router/interfaces/index.js +1 -4
- package/router/interfaces/resolver.interface.js +1 -2
- package/router/interfaces/route-params-factory.interface.d.ts +1 -1
- package/router/interfaces/route-params-factory.interface.js +1 -2
- package/router/interfaces/route-path-metadata.interface.d.ts +2 -2
- package/router/interfaces/route-path-metadata.interface.js +1 -2
- package/router/interfaces/routes.interface.d.ts +1 -1
- package/router/interfaces/routes.interface.js +1 -2
- package/router/legacy-route-converter.js +3 -7
- package/router/paths-explorer.d.ts +4 -5
- package/router/paths-explorer.js +11 -15
- package/router/request/index.d.ts +1 -1
- package/router/request/index.js +1 -5
- package/router/request/request-constants.js +2 -5
- package/router/request/request-providers.d.ts +1 -1
- package/router/request/request-providers.js +5 -8
- package/router/route-params-factory.d.ts +2 -2
- package/router/route-params-factory.js +15 -19
- package/router/route-path-factory.d.ts +4 -4
- package/router/route-path-factory.js +19 -22
- package/router/router-exception-filters.d.ts +9 -9
- package/router/router-exception-filters.js +15 -18
- package/router/router-execution-context.d.ts +17 -20
- package/router/router-execution-context.js +57 -49
- package/router/router-explorer.d.ts +14 -16
- package/router/router-explorer.js +55 -54
- package/router/router-module.d.ts +4 -4
- package/router/router-module.js +21 -23
- package/router/router-proxy.d.ts +1 -1
- package/router/router-proxy.js +4 -8
- package/router/router-response-controller.d.ts +2 -2
- package/router/router-response-controller.js +20 -23
- package/router/routes-resolver.d.ts +8 -9
- package/router/routes-resolver.js +36 -51
- package/router/sse-stream.d.ts +1 -1
- package/router/sse-stream.js +5 -9
- package/router/utils/exclude-route.util.d.ts +1 -1
- package/router/utils/exclude-route.util.js +7 -12
- package/router/utils/flatten-route-paths.util.d.ts +2 -2
- package/router/utils/flatten-route-paths.util.js +4 -7
- package/router/utils/index.d.ts +2 -2
- package/router/utils/index.js +2 -5
- package/scanner.d.ts +11 -11
- package/scanner.js +64 -65
- package/services/index.d.ts +1 -1
- package/services/index.js +1 -4
- package/services/reflector.service.d.ts +1 -1
- package/services/reflector.service.js +9 -13
- package/tsconfig.build.json +1 -9
|
@@ -1,16 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { ForbiddenException, } from '@nestjs/common';
|
|
2
|
+
import { CUSTOM_ROUTE_ARGS_METADATA, HEADERS_METADATA, HTTP_CODE_METADATA, isEmptyArray, isString, REDIRECT_METADATA, RENDER_METADATA, ROUTE_ARGS_METADATA, RouteParamtypes, SSE_METADATA, } from '@nestjs/common/internal';
|
|
3
|
+
import { FORBIDDEN_MESSAGE, } from '../guards/index.js';
|
|
4
|
+
import { ContextUtils } from '../helpers/context-utils.js';
|
|
5
|
+
import { HandlerMetadataStorage, } from '../helpers/handler-metadata-storage.js';
|
|
6
|
+
import { STATIC_CONTEXT } from '../injector/constants.js';
|
|
7
|
+
import { RouterResponseController, } from './router-response-controller.js';
|
|
8
|
+
export class RouterExecutionContext {
|
|
9
|
+
paramsFactory;
|
|
10
|
+
pipesContextCreator;
|
|
11
|
+
pipesConsumer;
|
|
12
|
+
guardsContextCreator;
|
|
13
|
+
guardsConsumer;
|
|
14
|
+
interceptorsContextCreator;
|
|
15
|
+
interceptorsConsumer;
|
|
16
|
+
applicationRef;
|
|
17
|
+
handlerMetadataStorage = new HandlerMetadataStorage();
|
|
18
|
+
contextUtils = new ContextUtils();
|
|
19
|
+
responseController;
|
|
14
20
|
constructor(paramsFactory, pipesContextCreator, pipesConsumer, guardsContextCreator, guardsConsumer, interceptorsContextCreator, interceptorsConsumer, applicationRef) {
|
|
15
21
|
this.paramsFactory = paramsFactory;
|
|
16
22
|
this.pipesContextCreator = pipesContextCreator;
|
|
@@ -20,11 +26,9 @@ class RouterExecutionContext {
|
|
|
20
26
|
this.interceptorsContextCreator = interceptorsContextCreator;
|
|
21
27
|
this.interceptorsConsumer = interceptorsConsumer;
|
|
22
28
|
this.applicationRef = applicationRef;
|
|
23
|
-
this.
|
|
24
|
-
this.contextUtils = new context_utils_1.ContextUtils();
|
|
25
|
-
this.responseController = new router_response_controller_1.RouterResponseController(applicationRef);
|
|
29
|
+
this.responseController = new RouterResponseController(applicationRef);
|
|
26
30
|
}
|
|
27
|
-
create(instance, callback, methodName, moduleKey, requestMethod, contextId =
|
|
31
|
+
create(instance, callback, methodName, moduleKey, requestMethod, contextId = STATIC_CONTEXT, inquirerId) {
|
|
28
32
|
const contextType = 'http';
|
|
29
33
|
const { argsLength, fnHandleResponse, paramtypes, getParamsMetadata, httpStatusCode, responseHeaders, hasCustomHeaders, } = this.getMetadata(instance, callback, methodName, moduleKey, requestMethod, contextType);
|
|
30
34
|
const paramsOptions = this.contextUtils.mergeParamsMetatypes(getParamsMetadata(moduleKey, contextId, inquirerId), paramtypes);
|
|
@@ -52,22 +56,20 @@ class RouterExecutionContext {
|
|
|
52
56
|
if (cacheMetadata) {
|
|
53
57
|
return cacheMetadata;
|
|
54
58
|
}
|
|
55
|
-
const metadata = this.contextUtils.reflectCallbackMetadata(instance, methodName,
|
|
59
|
+
const metadata = this.contextUtils.reflectCallbackMetadata(instance, methodName, ROUTE_ARGS_METADATA) || {};
|
|
56
60
|
const keys = Object.keys(metadata);
|
|
57
61
|
const argsLength = this.contextUtils.getArgumentsLength(keys, metadata);
|
|
58
62
|
const paramtypes = this.contextUtils.reflectCallbackParamtypes(instance, methodName);
|
|
59
63
|
const contextFactory = this.contextUtils.getContextFactory(contextType, instance, callback);
|
|
60
|
-
const getParamsMetadata = (moduleKey, contextId =
|
|
64
|
+
const getParamsMetadata = (moduleKey, contextId = STATIC_CONTEXT, inquirerId) => this.exchangeKeysForValues(keys, metadata, moduleKey, contextId, inquirerId, contextFactory);
|
|
61
65
|
const paramsMetadata = getParamsMetadata(moduleKey);
|
|
62
66
|
const isResponseHandled = this.isResponseHandled(instance, methodName, paramsMetadata);
|
|
63
67
|
const httpRedirectResponse = this.reflectRedirect(callback);
|
|
64
68
|
const fnHandleResponse = this.createHandleResponseFn(callback, isResponseHandled, httpRedirectResponse);
|
|
65
69
|
const httpCode = this.reflectHttpStatusCode(callback);
|
|
66
|
-
const httpStatusCode = httpCode
|
|
67
|
-
? httpCode
|
|
68
|
-
: this.responseController.getStatusByMethod(requestMethod);
|
|
70
|
+
const httpStatusCode = httpCode ?? this.responseController.getStatusByMethod(requestMethod);
|
|
69
71
|
const responseHeaders = this.reflectResponseHeaders(callback);
|
|
70
|
-
const hasCustomHeaders = !(
|
|
72
|
+
const hasCustomHeaders = !isEmptyArray(responseHeaders);
|
|
71
73
|
const handlerMetadata = {
|
|
72
74
|
argsLength,
|
|
73
75
|
fnHandleResponse,
|
|
@@ -81,30 +83,37 @@ class RouterExecutionContext {
|
|
|
81
83
|
return handlerMetadata;
|
|
82
84
|
}
|
|
83
85
|
reflectRedirect(callback) {
|
|
84
|
-
return Reflect.getMetadata(
|
|
86
|
+
return Reflect.getMetadata(REDIRECT_METADATA, callback);
|
|
85
87
|
}
|
|
86
88
|
reflectHttpStatusCode(callback) {
|
|
87
|
-
return Reflect.getMetadata(
|
|
89
|
+
return Reflect.getMetadata(HTTP_CODE_METADATA, callback);
|
|
88
90
|
}
|
|
89
91
|
reflectRenderTemplate(callback) {
|
|
90
|
-
return Reflect.getMetadata(
|
|
92
|
+
return Reflect.getMetadata(RENDER_METADATA, callback);
|
|
91
93
|
}
|
|
92
94
|
reflectResponseHeaders(callback) {
|
|
93
|
-
return Reflect.getMetadata(
|
|
95
|
+
return Reflect.getMetadata(HEADERS_METADATA, callback) || [];
|
|
94
96
|
}
|
|
95
97
|
reflectSse(callback) {
|
|
96
|
-
return Reflect.getMetadata(
|
|
98
|
+
return Reflect.getMetadata(SSE_METADATA, callback);
|
|
97
99
|
}
|
|
98
|
-
exchangeKeysForValues(keys, metadata, moduleContext, contextId =
|
|
100
|
+
exchangeKeysForValues(keys, metadata, moduleContext, contextId = STATIC_CONTEXT, inquirerId, contextFactory) {
|
|
99
101
|
this.pipesContextCreator.setModuleContext(moduleContext);
|
|
100
102
|
return keys.map(key => {
|
|
101
|
-
const { index, data, pipes: pipesCollection } = metadata[key];
|
|
103
|
+
const { index, data, pipes: pipesCollection, schema } = metadata[key];
|
|
102
104
|
const pipes = this.pipesContextCreator.createConcreteContext(pipesCollection, contextId, inquirerId);
|
|
103
105
|
const type = this.contextUtils.mapParamType(key);
|
|
104
|
-
if (key.includes(
|
|
106
|
+
if (key.includes(CUSTOM_ROUTE_ARGS_METADATA)) {
|
|
105
107
|
const { factory } = metadata[key];
|
|
106
108
|
const customExtractValue = this.contextUtils.getCustomFactory(factory, data, contextFactory);
|
|
107
|
-
return {
|
|
109
|
+
return {
|
|
110
|
+
index,
|
|
111
|
+
extractValue: customExtractValue,
|
|
112
|
+
type,
|
|
113
|
+
data,
|
|
114
|
+
pipes,
|
|
115
|
+
schema,
|
|
116
|
+
};
|
|
108
117
|
}
|
|
109
118
|
const numericType = Number(type);
|
|
110
119
|
const extractValue = (req, res, next) => this.paramsFactory.exchangeKeyForValue(numericType, data, {
|
|
@@ -112,29 +121,29 @@ class RouterExecutionContext {
|
|
|
112
121
|
res,
|
|
113
122
|
next,
|
|
114
123
|
});
|
|
115
|
-
return { index, extractValue, type: numericType, data, pipes };
|
|
124
|
+
return { index, extractValue, type: numericType, data, pipes, schema };
|
|
116
125
|
});
|
|
117
126
|
}
|
|
118
|
-
async getParamValue(value,
|
|
119
|
-
if (!(
|
|
120
|
-
return this.pipesConsumer.apply(value,
|
|
127
|
+
async getParamValue(value, metadata, pipes) {
|
|
128
|
+
if (!isEmptyArray(pipes)) {
|
|
129
|
+
return this.pipesConsumer.apply(value, metadata, pipes);
|
|
121
130
|
}
|
|
122
131
|
return value;
|
|
123
132
|
}
|
|
124
133
|
isPipeable(type) {
|
|
125
|
-
return (type ===
|
|
126
|
-
type ===
|
|
127
|
-
type ===
|
|
128
|
-
type ===
|
|
129
|
-
type ===
|
|
130
|
-
type ===
|
|
131
|
-
|
|
134
|
+
return (type === RouteParamtypes.BODY ||
|
|
135
|
+
type === RouteParamtypes.RAW_BODY ||
|
|
136
|
+
type === RouteParamtypes.QUERY ||
|
|
137
|
+
type === RouteParamtypes.PARAM ||
|
|
138
|
+
type === RouteParamtypes.FILE ||
|
|
139
|
+
type === RouteParamtypes.FILES ||
|
|
140
|
+
isString(type));
|
|
132
141
|
}
|
|
133
142
|
createGuardsFn(guards, instance, callback, contextType) {
|
|
134
143
|
const canActivateFn = async (args) => {
|
|
135
144
|
const canActivate = await this.guardsConsumer.tryActivate(guards, args, instance, callback, contextType);
|
|
136
145
|
if (!canActivate) {
|
|
137
|
-
throw new
|
|
146
|
+
throw new ForbiddenException(FORBIDDEN_MESSAGE);
|
|
138
147
|
}
|
|
139
148
|
};
|
|
140
149
|
return guards.length ? canActivateFn : null;
|
|
@@ -142,10 +151,10 @@ class RouterExecutionContext {
|
|
|
142
151
|
createPipesFn(pipes, paramsOptions) {
|
|
143
152
|
const pipesFn = async (args, req, res, next) => {
|
|
144
153
|
const resolveParamValue = async (param) => {
|
|
145
|
-
const { index, extractValue, type, data, metatype, pipes: paramPipes, } = param;
|
|
154
|
+
const { index, extractValue, type, data, metatype, pipes: paramPipes, schema, } = param;
|
|
146
155
|
const value = extractValue(req, res, next);
|
|
147
156
|
args[index] = this.isPipeable(type)
|
|
148
|
-
? await this.getParamValue(value, { metatype, type, data }, pipes.concat(paramPipes))
|
|
157
|
+
? await this.getParamValue(value, { metatype, type, data, schema }, pipes.concat(paramPipes))
|
|
149
158
|
: value;
|
|
150
159
|
};
|
|
151
160
|
await Promise.all(paramsOptions.map(resolveParamValue));
|
|
@@ -159,7 +168,7 @@ class RouterExecutionContext {
|
|
|
159
168
|
return await this.responseController.render(result, res, renderTemplate);
|
|
160
169
|
};
|
|
161
170
|
}
|
|
162
|
-
if (redirectResponse &&
|
|
171
|
+
if (redirectResponse && isString(redirectResponse.url)) {
|
|
163
172
|
return async (result, res) => {
|
|
164
173
|
await this.responseController.redirect(result, res, redirectResponse);
|
|
165
174
|
};
|
|
@@ -178,9 +187,8 @@ class RouterExecutionContext {
|
|
|
178
187
|
};
|
|
179
188
|
}
|
|
180
189
|
isResponseHandled(instance, methodName, paramsMetadata) {
|
|
181
|
-
const hasResponseOrNextDecorator = paramsMetadata.some(({ type }) => type ===
|
|
190
|
+
const hasResponseOrNextDecorator = paramsMetadata.some(({ type }) => type === RouteParamtypes.RESPONSE || type === RouteParamtypes.NEXT);
|
|
182
191
|
const isPassthroughEnabled = this.contextUtils.reflectPassthrough(instance, methodName);
|
|
183
192
|
return hasResponseOrNextDecorator && !isPassthroughEnabled;
|
|
184
193
|
}
|
|
185
194
|
}
|
|
186
|
-
exports.RouterExecutionContext = RouterExecutionContext;
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import { HttpServer } from '@nestjs/common';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { RoutePathFactory } from './route-path-factory';
|
|
16
|
-
import { RouterProxy, RouterProxyCallback } from './router-proxy';
|
|
1
|
+
import type { HttpServer } from '@nestjs/common';
|
|
2
|
+
import { ApplicationConfig } from '../application-config.js';
|
|
3
|
+
import { NestContainer } from '../injector/container.js';
|
|
4
|
+
import { Injector } from '../injector/injector.js';
|
|
5
|
+
import { InstanceWrapper } from '../injector/instance-wrapper.js';
|
|
6
|
+
import { Module } from '../injector/module.js';
|
|
7
|
+
import { GraphInspector } from '../inspector/graph-inspector.js';
|
|
8
|
+
import { MetadataScanner } from '../metadata-scanner.js';
|
|
9
|
+
import { ExceptionsFilter } from './interfaces/exceptions-filter.interface.js';
|
|
10
|
+
import { RoutePathMetadata } from './interfaces/route-path-metadata.interface.js';
|
|
11
|
+
import { RoutePathFactory } from './route-path-factory.js';
|
|
12
|
+
import { RouterProxy, RouterProxyCallback } from './router-proxy.js';
|
|
13
|
+
import { type Controller, type VersionValue } from '@nestjs/common/internal';
|
|
14
|
+
import { RequestMethod, type Type } from '@nestjs/common';
|
|
17
15
|
export interface RouteDefinition {
|
|
18
16
|
path: string[];
|
|
19
17
|
requestMethod: RequestMethod;
|
|
@@ -1,26 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
import { pathToRegexp } from 'path-to-regexp';
|
|
2
|
+
import { UnknownRequestMappingException } from '../errors/exceptions/unknown-request-mapping.exception.js';
|
|
3
|
+
import { GuardsConsumer, GuardsContextCreator } from '../guards/index.js';
|
|
4
|
+
import { ContextIdFactory } from '../helpers/context-id-factory.js';
|
|
5
|
+
import { ExecutionContextHost } from '../helpers/execution-context-host.js';
|
|
6
|
+
import { ROUTE_MAPPED_MESSAGE, VERSIONED_ROUTE_MAPPED_MESSAGE, } from '../helpers/messages.js';
|
|
7
|
+
import { RouterMethodFactory } from '../helpers/router-method-factory.js';
|
|
8
|
+
import { STATIC_CONTEXT } from '../injector/constants.js';
|
|
9
|
+
import { InterceptorsConsumer, InterceptorsContextCreator, } from '../interceptors/index.js';
|
|
10
|
+
import { PipesConsumer, PipesContextCreator } from '../pipes/index.js';
|
|
11
|
+
import { PathsExplorer } from './paths-explorer.js';
|
|
12
|
+
import { REQUEST_CONTEXT_ID } from './request/request-constants.js';
|
|
13
|
+
import { RouteParamsFactory } from './route-params-factory.js';
|
|
14
|
+
import { RouterExecutionContext } from './router-execution-context.js';
|
|
15
|
+
import { PATH_METADATA, addLeadingSlash, isUndefined, } from '@nestjs/common/internal';
|
|
16
|
+
import { RequestMethod, VersioningType, InternalServerErrorException, Logger, } from '@nestjs/common';
|
|
17
|
+
export class RouterExplorer {
|
|
18
|
+
container;
|
|
19
|
+
injector;
|
|
20
|
+
routerProxy;
|
|
21
|
+
exceptionsFilter;
|
|
22
|
+
routePathFactory;
|
|
23
|
+
graphInspector;
|
|
24
|
+
executionContextCreator;
|
|
25
|
+
pathsExplorer;
|
|
26
|
+
routerMethodFactory = new RouterMethodFactory();
|
|
27
|
+
logger = new Logger(RouterExplorer.name, {
|
|
28
|
+
timestamp: true,
|
|
29
|
+
});
|
|
30
|
+
exceptionFiltersCache = new WeakMap();
|
|
24
31
|
constructor(metadataScanner, container, injector, routerProxy, exceptionsFilter, config, routePathFactory, graphInspector) {
|
|
25
32
|
this.container = container;
|
|
26
33
|
this.injector = injector;
|
|
@@ -28,20 +35,15 @@ class RouterExplorer {
|
|
|
28
35
|
this.exceptionsFilter = exceptionsFilter;
|
|
29
36
|
this.routePathFactory = routePathFactory;
|
|
30
37
|
this.graphInspector = graphInspector;
|
|
31
|
-
this.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
const guardsContextCreator = new guards_1.GuardsContextCreator(container, config);
|
|
41
|
-
const guardsConsumer = new guards_1.GuardsConsumer();
|
|
42
|
-
const interceptorsContextCreator = new interceptors_1.InterceptorsContextCreator(container, config);
|
|
43
|
-
const interceptorsConsumer = new interceptors_1.InterceptorsConsumer();
|
|
44
|
-
this.executionContextCreator = new router_execution_context_1.RouterExecutionContext(routeParamsFactory, pipesContextCreator, pipesConsumer, guardsContextCreator, guardsConsumer, interceptorsContextCreator, interceptorsConsumer, container.getHttpAdapterRef());
|
|
38
|
+
this.pathsExplorer = new PathsExplorer(metadataScanner);
|
|
39
|
+
const routeParamsFactory = new RouteParamsFactory();
|
|
40
|
+
const pipesContextCreator = new PipesContextCreator(container, config);
|
|
41
|
+
const pipesConsumer = new PipesConsumer();
|
|
42
|
+
const guardsContextCreator = new GuardsContextCreator(container, config);
|
|
43
|
+
const guardsConsumer = new GuardsConsumer();
|
|
44
|
+
const interceptorsContextCreator = new InterceptorsContextCreator(container, config);
|
|
45
|
+
const interceptorsConsumer = new InterceptorsConsumer();
|
|
46
|
+
this.executionContextCreator = new RouterExecutionContext(routeParamsFactory, pipesContextCreator, pipesConsumer, guardsContextCreator, guardsConsumer, interceptorsContextCreator, interceptorsConsumer, container.getHttpAdapterRef());
|
|
45
47
|
}
|
|
46
48
|
explore(instanceWrapper, moduleKey, httpAdapterRef, host, routePathMetadata) {
|
|
47
49
|
const { instance } = instanceWrapper;
|
|
@@ -49,14 +51,14 @@ class RouterExplorer {
|
|
|
49
51
|
this.applyPathsToRouterProxy(httpAdapterRef, routerPaths, instanceWrapper, moduleKey, routePathMetadata, host);
|
|
50
52
|
}
|
|
51
53
|
extractRouterPath(metatype) {
|
|
52
|
-
const path = Reflect.getMetadata(
|
|
53
|
-
if (
|
|
54
|
-
throw new
|
|
54
|
+
const path = Reflect.getMetadata(PATH_METADATA, metatype);
|
|
55
|
+
if (isUndefined(path)) {
|
|
56
|
+
throw new UnknownRequestMappingException(metatype);
|
|
55
57
|
}
|
|
56
58
|
if (Array.isArray(path)) {
|
|
57
|
-
return path.map(p =>
|
|
59
|
+
return path.map(p => addLeadingSlash(p));
|
|
58
60
|
}
|
|
59
|
-
return [
|
|
61
|
+
return [addLeadingSlash(path)];
|
|
60
62
|
}
|
|
61
63
|
applyPathsToRouterProxy(router, routeDefinitions, instanceWrapper, moduleKey, routePathMetadata, host) {
|
|
62
64
|
(routeDefinitions || []).forEach(routeDefinition => {
|
|
@@ -81,7 +83,7 @@ class RouterExplorer {
|
|
|
81
83
|
let routeHandler = this.applyHostFilter(host, proxy);
|
|
82
84
|
paths.forEach(path => {
|
|
83
85
|
if (isVersioned &&
|
|
84
|
-
routePathMetadata.versioningOptions.type !==
|
|
86
|
+
routePathMetadata.versioningOptions.type !== VersioningType.URI) {
|
|
85
87
|
// All versioning (except for URI Versioning) is done via the "Version Filter"
|
|
86
88
|
routeHandler = this.applyVersionFilter(router, routePathMetadata, routeHandler);
|
|
87
89
|
}
|
|
@@ -96,7 +98,7 @@ class RouterExplorer {
|
|
|
96
98
|
metadata: {
|
|
97
99
|
key: path,
|
|
98
100
|
path,
|
|
99
|
-
requestMethod:
|
|
101
|
+
requestMethod: RequestMethod[requestMethod],
|
|
100
102
|
methodVersion: routePathMetadata.methodVersion,
|
|
101
103
|
controllerVersion: routePathMetadata.controllerVersion,
|
|
102
104
|
},
|
|
@@ -125,10 +127,10 @@ class RouterExplorer {
|
|
|
125
127
|
pathsToLog.forEach(path => {
|
|
126
128
|
if (isVersioned) {
|
|
127
129
|
const version = this.routePathFactory.getVersion(routePathMetadata);
|
|
128
|
-
this.logger.log(
|
|
130
|
+
this.logger.log(VERSIONED_ROUTE_MAPPED_MESSAGE(path, requestMethod, version));
|
|
129
131
|
}
|
|
130
132
|
else {
|
|
131
|
-
this.logger.log(
|
|
133
|
+
this.logger.log(ROUTE_MAPPED_MESSAGE(path, requestMethod));
|
|
132
134
|
}
|
|
133
135
|
});
|
|
134
136
|
});
|
|
@@ -142,7 +144,7 @@ class RouterExplorer {
|
|
|
142
144
|
const hostRegExps = hosts.map((host) => {
|
|
143
145
|
if (typeof host === 'string') {
|
|
144
146
|
try {
|
|
145
|
-
return
|
|
147
|
+
return pathToRegexp(host);
|
|
146
148
|
}
|
|
147
149
|
catch (e) {
|
|
148
150
|
if (e instanceof TypeError) {
|
|
@@ -174,7 +176,7 @@ class RouterExplorer {
|
|
|
174
176
|
}
|
|
175
177
|
}
|
|
176
178
|
if (!next) {
|
|
177
|
-
throw new
|
|
179
|
+
throw new InternalServerErrorException(unsupportedFilteringErrorMessage);
|
|
178
180
|
}
|
|
179
181
|
return next();
|
|
180
182
|
};
|
|
@@ -183,7 +185,7 @@ class RouterExplorer {
|
|
|
183
185
|
const version = this.routePathFactory.getVersion(routePathMetadata);
|
|
184
186
|
return router.applyVersionFilter(handler, version, routePathMetadata.versioningOptions);
|
|
185
187
|
}
|
|
186
|
-
createCallbackProxy(instance, callback, methodName, moduleRef, requestMethod, contextId =
|
|
188
|
+
createCallbackProxy(instance, callback, methodName, moduleRef, requestMethod, contextId = STATIC_CONTEXT, inquirerId) {
|
|
187
189
|
const executionContext = this.executionContextCreator.create(instance, callback, methodName, moduleRef, requestMethod, contextId, inquirerId);
|
|
188
190
|
const exceptionFilter = this.exceptionsFilter.create(instance, callback, moduleRef, contextId, inquirerId);
|
|
189
191
|
return this.routerProxy.createProxy(executionContext, exceptionFilter);
|
|
@@ -204,15 +206,15 @@ class RouterExplorer {
|
|
|
204
206
|
exceptionFilter = this.exceptionsFilter.create(instance, instance[methodName], moduleKey);
|
|
205
207
|
this.exceptionFiltersCache.set(instance[methodName], exceptionFilter);
|
|
206
208
|
}
|
|
207
|
-
const host = new
|
|
209
|
+
const host = new ExecutionContextHost([req, res, next]);
|
|
208
210
|
exceptionFilter.next(err, host);
|
|
209
211
|
}
|
|
210
212
|
};
|
|
211
213
|
}
|
|
212
214
|
getContextId(request, isTreeDurable) {
|
|
213
|
-
const contextId =
|
|
214
|
-
if (!request[
|
|
215
|
-
Object.defineProperty(request,
|
|
215
|
+
const contextId = ContextIdFactory.getByRequest(request);
|
|
216
|
+
if (!request[REQUEST_CONTEXT_ID]) {
|
|
217
|
+
Object.defineProperty(request, REQUEST_CONTEXT_ID, {
|
|
216
218
|
value: contextId,
|
|
217
219
|
enumerable: false,
|
|
218
220
|
writable: false,
|
|
@@ -231,4 +233,3 @@ class RouterExplorer {
|
|
|
231
233
|
}
|
|
232
234
|
}
|
|
233
235
|
}
|
|
234
|
-
exports.RouterExplorer = RouterExplorer;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DynamicModule } from '@nestjs/common';
|
|
2
|
-
import { Module as ModuleClass } from '../injector/module';
|
|
3
|
-
import { ModulesContainer } from '../injector/modules-container';
|
|
4
|
-
import { Routes } from './interfaces';
|
|
1
|
+
import { type DynamicModule } from '@nestjs/common';
|
|
2
|
+
import { Module as ModuleClass } from '../injector/module.js';
|
|
3
|
+
import { ModulesContainer } from '../injector/modules-container.js';
|
|
4
|
+
import { Routes } from './interfaces/index.js';
|
|
5
5
|
export declare const ROUTES: unique symbol;
|
|
6
6
|
export declare const targetModulesByContainer: WeakMap<ModulesContainer, WeakSet<ModuleClass>>;
|
|
7
7
|
/**
|
package/router/router-module.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var RouterModule_1;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const utils_1 = require("./utils");
|
|
11
|
-
exports.ROUTES = Symbol('ROUTES');
|
|
12
|
-
exports.targetModulesByContainer = new WeakMap();
|
|
2
|
+
import { __decorate, __metadata, __param } from "tslib";
|
|
3
|
+
import { Inject, Module } from '@nestjs/common';
|
|
4
|
+
import { ModulesContainer } from '../injector/modules-container.js';
|
|
5
|
+
import { flattenRoutePaths } from './utils/index.js';
|
|
6
|
+
import { MODULE_PATH, normalizePath } from '@nestjs/common/internal';
|
|
7
|
+
export const ROUTES = Symbol('ROUTES');
|
|
8
|
+
export const targetModulesByContainer = new WeakMap();
|
|
13
9
|
/**
|
|
14
10
|
* @publicApi
|
|
15
11
|
*/
|
|
16
12
|
let RouterModule = RouterModule_1 = class RouterModule {
|
|
13
|
+
modulesContainer;
|
|
14
|
+
routes;
|
|
17
15
|
constructor(modulesContainer, routes) {
|
|
18
16
|
this.modulesContainer = modulesContainer;
|
|
19
17
|
this.routes = routes;
|
|
@@ -25,7 +23,7 @@ let RouterModule = RouterModule_1 = class RouterModule {
|
|
|
25
23
|
module: RouterModule_1,
|
|
26
24
|
providers: [
|
|
27
25
|
{
|
|
28
|
-
provide:
|
|
26
|
+
provide: ROUTES,
|
|
29
27
|
useValue: routes,
|
|
30
28
|
},
|
|
31
29
|
],
|
|
@@ -46,24 +44,24 @@ let RouterModule = RouterModule_1 = class RouterModule {
|
|
|
46
44
|
});
|
|
47
45
|
}
|
|
48
46
|
initialize() {
|
|
49
|
-
const flattenedRoutes =
|
|
47
|
+
const flattenedRoutes = flattenRoutePaths(this.routes);
|
|
50
48
|
flattenedRoutes.forEach(route => {
|
|
51
|
-
const modulePath =
|
|
49
|
+
const modulePath = normalizePath(route.path);
|
|
52
50
|
this.registerModulePathMetadata(route.module, modulePath);
|
|
53
51
|
this.updateTargetModulesCache(route.module);
|
|
54
52
|
});
|
|
55
53
|
}
|
|
56
54
|
registerModulePathMetadata(moduleCtor, modulePath) {
|
|
57
|
-
Reflect.defineMetadata(
|
|
55
|
+
Reflect.defineMetadata(MODULE_PATH + this.modulesContainer.applicationId, modulePath, moduleCtor);
|
|
58
56
|
}
|
|
59
57
|
updateTargetModulesCache(moduleCtor) {
|
|
60
58
|
let moduleClassSet;
|
|
61
|
-
if (
|
|
62
|
-
moduleClassSet =
|
|
59
|
+
if (targetModulesByContainer.has(this.modulesContainer)) {
|
|
60
|
+
moduleClassSet = targetModulesByContainer.get(this.modulesContainer);
|
|
63
61
|
}
|
|
64
62
|
else {
|
|
65
63
|
moduleClassSet = new WeakSet();
|
|
66
|
-
|
|
64
|
+
targetModulesByContainer.set(this.modulesContainer, moduleClassSet);
|
|
67
65
|
}
|
|
68
66
|
const moduleRef = Array.from(this.modulesContainer.values()).find(item => item?.metatype === moduleCtor);
|
|
69
67
|
if (!moduleRef) {
|
|
@@ -72,9 +70,9 @@ let RouterModule = RouterModule_1 = class RouterModule {
|
|
|
72
70
|
moduleClassSet.add(moduleRef);
|
|
73
71
|
}
|
|
74
72
|
};
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
(
|
|
78
|
-
|
|
79
|
-
tslib_1.__metadata("design:paramtypes", [modules_container_1.ModulesContainer, Array])
|
|
73
|
+
RouterModule = RouterModule_1 = __decorate([
|
|
74
|
+
Module({}),
|
|
75
|
+
__param(1, Inject(ROUTES)),
|
|
76
|
+
__metadata("design:paramtypes", [ModulesContainer, Array])
|
|
80
77
|
], RouterModule);
|
|
78
|
+
export { RouterModule };
|
package/router/router-proxy.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ExceptionsHandler } from '../exceptions/exceptions-handler';
|
|
1
|
+
import { ExceptionsHandler } from '../exceptions/exceptions-handler.js';
|
|
2
2
|
export type RouterProxyCallback = <TRequest, TResponse>(req: TRequest, res: TResponse, next: () => void) => void | Promise<void>;
|
|
3
3
|
export declare class RouterProxy {
|
|
4
4
|
createProxy(targetCallback: RouterProxyCallback, exceptionsHandler: ExceptionsHandler): <TRequest, TResponse>(req: TRequest, res: TResponse, next: () => void) => Promise<TResponse | undefined>;
|
package/router/router-proxy.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.RouterProxy = void 0;
|
|
4
|
-
const execution_context_host_1 = require("../helpers/execution-context-host");
|
|
5
|
-
class RouterProxy {
|
|
1
|
+
import { ExecutionContextHost } from '../helpers/execution-context-host.js';
|
|
2
|
+
export class RouterProxy {
|
|
6
3
|
createProxy(targetCallback, exceptionsHandler) {
|
|
7
4
|
return async (req, res, next) => {
|
|
8
5
|
try {
|
|
9
6
|
await targetCallback(req, res, next);
|
|
10
7
|
}
|
|
11
8
|
catch (e) {
|
|
12
|
-
const host = new
|
|
9
|
+
const host = new ExecutionContextHost([req, res, next]);
|
|
13
10
|
exceptionsHandler.next(e, host);
|
|
14
11
|
return res;
|
|
15
12
|
}
|
|
@@ -21,11 +18,10 @@ class RouterProxy {
|
|
|
21
18
|
await targetCallback(err, req, res, next);
|
|
22
19
|
}
|
|
23
20
|
catch (e) {
|
|
24
|
-
const host = new
|
|
21
|
+
const host = new ExecutionContextHost([req, res, next]);
|
|
25
22
|
exceptionsHandler.next(e, host);
|
|
26
23
|
return res;
|
|
27
24
|
}
|
|
28
25
|
};
|
|
29
26
|
}
|
|
30
27
|
}
|
|
31
|
-
exports.RouterProxy = RouterProxy;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { HttpServer, RequestMethod } from '@nestjs/common';
|
|
1
|
+
import { type HttpServer, RequestMethod } from '@nestjs/common';
|
|
2
2
|
import { IncomingMessage } from 'http';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
|
-
import { AdditionalHeaders, WritableHeaderStream } from './sse-stream';
|
|
4
|
+
import { AdditionalHeaders, WritableHeaderStream } from './sse-stream.js';
|
|
5
5
|
export interface CustomHeader {
|
|
6
6
|
name: string;
|
|
7
7
|
value: string | (() => string);
|