@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,9 @@
|
|
|
1
|
+
import { CanActivate } from '@nestjs/common';
|
|
2
|
+
import { ContextType, Controller } from '@nestjs/common/interfaces';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { ExecutionContextHost } from '../helpers/execution-context-host';
|
|
5
|
+
export declare class GuardsConsumer {
|
|
6
|
+
tryActivate<TContext extends string = ContextType>(guards: CanActivate[], args: unknown[], instance: Controller, callback: (...args: unknown[]) => unknown, type?: TContext): Promise<boolean>;
|
|
7
|
+
createContext(args: unknown[], instance: Controller, callback: (...args: unknown[]) => unknown): ExecutionContextHost;
|
|
8
|
+
pickResult(result: boolean | Promise<boolean> | Observable<boolean>): Promise<boolean>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GuardsConsumer = void 0;
|
|
4
|
+
const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
|
|
5
|
+
const rxjs_1 = require("rxjs");
|
|
6
|
+
const execution_context_host_1 = require("../helpers/execution-context-host");
|
|
7
|
+
class GuardsConsumer {
|
|
8
|
+
async tryActivate(guards, args, instance, callback, type) {
|
|
9
|
+
if (!guards || (0, shared_utils_1.isEmpty)(guards)) {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
const context = this.createContext(args, instance, callback);
|
|
13
|
+
context.setType(type);
|
|
14
|
+
for (const guard of guards) {
|
|
15
|
+
const result = guard.canActivate(context);
|
|
16
|
+
if (typeof result === 'boolean') {
|
|
17
|
+
if (!result) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (await this.pickResult(result)) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
createContext(args, instance, callback) {
|
|
30
|
+
return new execution_context_host_1.ExecutionContextHost(args, instance.constructor, callback);
|
|
31
|
+
}
|
|
32
|
+
async pickResult(result) {
|
|
33
|
+
if (result instanceof rxjs_1.Observable) {
|
|
34
|
+
return (0, rxjs_1.lastValueFrom)(result);
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.GuardsConsumer = GuardsConsumer;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CanActivate } from '@nestjs/common';
|
|
2
|
+
import { Controller, Type } from '@nestjs/common/interfaces';
|
|
3
|
+
import { ApplicationConfig } from '../application-config';
|
|
4
|
+
import { ContextCreator } from '../helpers/context-creator';
|
|
5
|
+
import { NestContainer } from '../injector/container';
|
|
6
|
+
import { InstanceWrapper } from '../injector/instance-wrapper';
|
|
7
|
+
export declare class GuardsContextCreator extends ContextCreator {
|
|
8
|
+
private readonly container;
|
|
9
|
+
private readonly config?;
|
|
10
|
+
private moduleContext;
|
|
11
|
+
constructor(container: NestContainer, config?: ApplicationConfig | undefined);
|
|
12
|
+
create(instance: Controller, callback: (...args: unknown[]) => unknown, module: string, contextId?: import("../injector/instance-wrapper").ContextId, inquirerId?: string): CanActivate[];
|
|
13
|
+
createConcreteContext<T extends unknown[], R extends unknown[]>(metadata: T, contextId?: import("../injector/instance-wrapper").ContextId, inquirerId?: string): R;
|
|
14
|
+
getGuardInstance(metatype: Function | CanActivate, contextId?: import("../injector/instance-wrapper").ContextId, inquirerId?: string): CanActivate | null;
|
|
15
|
+
getInstanceByMetatype(metatype: Type<unknown>): InstanceWrapper | undefined;
|
|
16
|
+
getGlobalMetadata<T extends unknown[]>(contextId?: import("../injector/instance-wrapper").ContextId, inquirerId?: string): T;
|
|
17
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GuardsContextCreator = 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 context_creator_1 = require("../helpers/context-creator");
|
|
8
|
+
const constants_2 = require("../injector/constants");
|
|
9
|
+
class GuardsContextCreator extends context_creator_1.ContextCreator {
|
|
10
|
+
constructor(container, config) {
|
|
11
|
+
super();
|
|
12
|
+
this.container = container;
|
|
13
|
+
this.config = config;
|
|
14
|
+
}
|
|
15
|
+
create(instance, callback, module, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
|
16
|
+
this.moduleContext = module;
|
|
17
|
+
return this.createContext(instance, callback, constants_1.GUARDS_METADATA, contextId, inquirerId);
|
|
18
|
+
}
|
|
19
|
+
createConcreteContext(metadata, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
|
20
|
+
if ((0, shared_utils_1.isEmpty)(metadata)) {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
return (0, iterare_1.iterate)(metadata)
|
|
24
|
+
.filter((guard) => guard && (guard.name || guard.canActivate))
|
|
25
|
+
.map(guard => this.getGuardInstance(guard, contextId, inquirerId))
|
|
26
|
+
.filter((guard) => !!guard && (0, shared_utils_1.isFunction)(guard.canActivate))
|
|
27
|
+
.toArray();
|
|
28
|
+
}
|
|
29
|
+
getGuardInstance(metatype, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
|
30
|
+
const isObject = !!metatype.canActivate;
|
|
31
|
+
if (isObject) {
|
|
32
|
+
return metatype;
|
|
33
|
+
}
|
|
34
|
+
const instanceWrapper = this.getInstanceByMetatype(metatype);
|
|
35
|
+
if (!instanceWrapper) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const instanceHost = instanceWrapper.getInstanceByContextId(this.getContextId(contextId, instanceWrapper), inquirerId);
|
|
39
|
+
return instanceHost && instanceHost.instance;
|
|
40
|
+
}
|
|
41
|
+
getInstanceByMetatype(metatype) {
|
|
42
|
+
if (!this.moduleContext) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const collection = this.container.getModules();
|
|
46
|
+
const moduleRef = collection.get(this.moduleContext);
|
|
47
|
+
if (!moduleRef) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const injectables = moduleRef.injectables;
|
|
51
|
+
return injectables.get(metatype);
|
|
52
|
+
}
|
|
53
|
+
getGlobalMetadata(contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
|
54
|
+
if (!this.config) {
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
const globalGuards = this.config.getGlobalGuards();
|
|
58
|
+
if (contextId === constants_2.STATIC_CONTEXT && !inquirerId) {
|
|
59
|
+
return globalGuards;
|
|
60
|
+
}
|
|
61
|
+
const scopedGuardWrappers = this.config.getGlobalRequestGuards();
|
|
62
|
+
const scopedGuards = (0, iterare_1.iterate)(scopedGuardWrappers)
|
|
63
|
+
.map(wrapper => wrapper.getInstanceByContextId(this.getContextId(contextId, wrapper), inquirerId))
|
|
64
|
+
.filter(host => !!host)
|
|
65
|
+
.map(host => host.instance)
|
|
66
|
+
.toArray();
|
|
67
|
+
return globalGuards.concat(scopedGuards);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.GuardsContextCreator = GuardsContextCreator;
|
package/guards/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./constants"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./guards-consumer"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./guards-context-creator"), exports);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A simple barrier to synchronize flow of multiple async operations.
|
|
3
|
+
*/
|
|
4
|
+
export declare class Barrier {
|
|
5
|
+
private currentCount;
|
|
6
|
+
private targetCount;
|
|
7
|
+
private promise;
|
|
8
|
+
private resolve;
|
|
9
|
+
constructor(targetCount: number);
|
|
10
|
+
/**
|
|
11
|
+
* Signal that a participant has reached the barrier.
|
|
12
|
+
*
|
|
13
|
+
* The barrier will be resolved once `targetCount` participants have reached it.
|
|
14
|
+
*/
|
|
15
|
+
signal(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Wait for the barrier to be resolved.
|
|
18
|
+
*
|
|
19
|
+
* @returns A promise that resolves when the barrier is resolved.
|
|
20
|
+
*/
|
|
21
|
+
wait(): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Signal that a participant has reached the barrier and wait for the barrier to be resolved.
|
|
24
|
+
*
|
|
25
|
+
* The barrier will be resolved once `targetCount` participants have reached it.
|
|
26
|
+
*
|
|
27
|
+
* @returns A promise that resolves when the barrier is resolved.
|
|
28
|
+
*/
|
|
29
|
+
signalAndWait(): Promise<void>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Barrier = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A simple barrier to synchronize flow of multiple async operations.
|
|
6
|
+
*/
|
|
7
|
+
class Barrier {
|
|
8
|
+
constructor(targetCount) {
|
|
9
|
+
this.currentCount = 0;
|
|
10
|
+
this.targetCount = targetCount;
|
|
11
|
+
this.promise = new Promise(resolve => {
|
|
12
|
+
this.resolve = resolve;
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Signal that a participant has reached the barrier.
|
|
17
|
+
*
|
|
18
|
+
* The barrier will be resolved once `targetCount` participants have reached it.
|
|
19
|
+
*/
|
|
20
|
+
signal() {
|
|
21
|
+
this.currentCount += 1;
|
|
22
|
+
if (this.currentCount === this.targetCount) {
|
|
23
|
+
this.resolve();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Wait for the barrier to be resolved.
|
|
28
|
+
*
|
|
29
|
+
* @returns A promise that resolves when the barrier is resolved.
|
|
30
|
+
*/
|
|
31
|
+
async wait() {
|
|
32
|
+
return this.promise;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Signal that a participant has reached the barrier and wait for the barrier to be resolved.
|
|
36
|
+
*
|
|
37
|
+
* The barrier will be resolved once `targetCount` participants have reached it.
|
|
38
|
+
*
|
|
39
|
+
* @returns A promise that resolves when the barrier is resolved.
|
|
40
|
+
*/
|
|
41
|
+
async signalAndWait() {
|
|
42
|
+
this.signal();
|
|
43
|
+
return this.wait();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.Barrier = Barrier;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Controller } from '@nestjs/common/interfaces';
|
|
2
|
+
import { ContextId, InstanceWrapper } from '../injector/instance-wrapper';
|
|
3
|
+
export declare abstract class ContextCreator {
|
|
4
|
+
abstract createConcreteContext<T extends any[], R extends any[]>(metadata: T, contextId?: ContextId, inquirerId?: string): R;
|
|
5
|
+
getGlobalMetadata?<T extends any[]>(contextId?: ContextId, inquirerId?: string): T;
|
|
6
|
+
createContext<T extends unknown[] = any, R extends unknown[] = any>(instance: Controller, callback: (...args: any[]) => void, metadataKey: string, contextId?: ContextId, inquirerId?: string): R;
|
|
7
|
+
reflectClassMetadata<T>(instance: Controller, metadataKey: string): T;
|
|
8
|
+
reflectMethodMetadata<T>(callback: (...args: unknown[]) => unknown, metadataKey: string): T;
|
|
9
|
+
protected getContextId(contextId: ContextId, instanceWrapper: InstanceWrapper): ContextId;
|
|
10
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContextCreator = void 0;
|
|
4
|
+
const constants_1 = require("../injector/constants");
|
|
5
|
+
class ContextCreator {
|
|
6
|
+
createContext(instance, callback, metadataKey, contextId = constants_1.STATIC_CONTEXT, inquirerId) {
|
|
7
|
+
const globalMetadata = this.getGlobalMetadata &&
|
|
8
|
+
this.getGlobalMetadata(contextId, inquirerId);
|
|
9
|
+
const classMetadata = this.reflectClassMetadata(instance, metadataKey);
|
|
10
|
+
const methodMetadata = this.reflectMethodMetadata(callback, metadataKey);
|
|
11
|
+
return [
|
|
12
|
+
...this.createConcreteContext(globalMetadata || [], contextId, inquirerId),
|
|
13
|
+
...this.createConcreteContext(classMetadata, contextId, inquirerId),
|
|
14
|
+
...this.createConcreteContext(methodMetadata, contextId, inquirerId),
|
|
15
|
+
];
|
|
16
|
+
}
|
|
17
|
+
reflectClassMetadata(instance, metadataKey) {
|
|
18
|
+
const prototype = Object.getPrototypeOf(instance);
|
|
19
|
+
return Reflect.getMetadata(metadataKey, prototype.constructor);
|
|
20
|
+
}
|
|
21
|
+
reflectMethodMetadata(callback, metadataKey) {
|
|
22
|
+
return Reflect.getMetadata(metadataKey, callback);
|
|
23
|
+
}
|
|
24
|
+
getContextId(contextId, instanceWrapper) {
|
|
25
|
+
return contextId.getParent
|
|
26
|
+
? contextId.getParent({
|
|
27
|
+
token: instanceWrapper.token,
|
|
28
|
+
isTreeDurable: instanceWrapper.isDependencyTreeDurable(),
|
|
29
|
+
})
|
|
30
|
+
: contextId;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.ContextCreator = ContextCreator;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ContextId, HostComponentInfo } from '../injector/instance-wrapper';
|
|
2
|
+
export declare function createContextId(): ContextId;
|
|
3
|
+
export type ContextIdResolverFn = (info: HostComponentInfo) => ContextId;
|
|
4
|
+
export interface ContextIdResolver {
|
|
5
|
+
/**
|
|
6
|
+
* Payload associated with the custom context id
|
|
7
|
+
*/
|
|
8
|
+
payload: unknown;
|
|
9
|
+
/**
|
|
10
|
+
* A context id resolver function
|
|
11
|
+
*/
|
|
12
|
+
resolve: ContextIdResolverFn;
|
|
13
|
+
}
|
|
14
|
+
export interface ContextIdStrategy<T = any> {
|
|
15
|
+
/**
|
|
16
|
+
* Allows to attach a parent context id to the existing child context id.
|
|
17
|
+
* This lets you construct durable DI sub-trees that can be shared between contexts.
|
|
18
|
+
* @param contextId auto-generated child context id
|
|
19
|
+
* @param request request object
|
|
20
|
+
*/
|
|
21
|
+
attach(contextId: ContextId, request: T): ContextIdResolverFn | ContextIdResolver | undefined;
|
|
22
|
+
}
|
|
23
|
+
export declare class ContextIdFactory {
|
|
24
|
+
private static strategy?;
|
|
25
|
+
/**
|
|
26
|
+
* Generates a context identifier based on the request object.
|
|
27
|
+
*/
|
|
28
|
+
static create(): ContextId;
|
|
29
|
+
/**
|
|
30
|
+
* Generates a random identifier to track asynchronous execution context.
|
|
31
|
+
* @param request request object
|
|
32
|
+
*/
|
|
33
|
+
static getByRequest<T extends Record<any, any> = any>(request: T, propsToInspect?: string[]): ContextId;
|
|
34
|
+
/**
|
|
35
|
+
* Registers a custom context id strategy that lets you attach
|
|
36
|
+
* a parent context id to the existing context id object.
|
|
37
|
+
* @param strategy strategy instance
|
|
38
|
+
*/
|
|
39
|
+
static apply(strategy: ContextIdStrategy): void;
|
|
40
|
+
private static isContextIdResolverWithPayload;
|
|
41
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContextIdFactory = void 0;
|
|
4
|
+
exports.createContextId = createContextId;
|
|
5
|
+
const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
|
|
6
|
+
const request_constants_1 = require("../router/request/request-constants");
|
|
7
|
+
function createContextId() {
|
|
8
|
+
/**
|
|
9
|
+
* We are generating random identifier to track asynchronous
|
|
10
|
+
* execution context. An identifier does not have to be neither unique
|
|
11
|
+
* nor unpredictable because WeakMap uses objects as keys (reference comparison).
|
|
12
|
+
* Thus, even though identifier number might be equal, WeakMap would properly
|
|
13
|
+
* associate asynchronous context with its internal map values using object reference.
|
|
14
|
+
* Object is automatically removed once request has been processed (closure).
|
|
15
|
+
*/
|
|
16
|
+
return { id: Math.random() };
|
|
17
|
+
}
|
|
18
|
+
class ContextIdFactory {
|
|
19
|
+
/**
|
|
20
|
+
* Generates a context identifier based on the request object.
|
|
21
|
+
*/
|
|
22
|
+
static create() {
|
|
23
|
+
return createContextId();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Generates a random identifier to track asynchronous execution context.
|
|
27
|
+
* @param request request object
|
|
28
|
+
*/
|
|
29
|
+
static getByRequest(request, propsToInspect = ['raw']) {
|
|
30
|
+
if (!request) {
|
|
31
|
+
return ContextIdFactory.create();
|
|
32
|
+
}
|
|
33
|
+
if (request[request_constants_1.REQUEST_CONTEXT_ID]) {
|
|
34
|
+
return request[request_constants_1.REQUEST_CONTEXT_ID];
|
|
35
|
+
}
|
|
36
|
+
for (const key of propsToInspect) {
|
|
37
|
+
if (request[key]?.[request_constants_1.REQUEST_CONTEXT_ID]) {
|
|
38
|
+
return request[key][request_constants_1.REQUEST_CONTEXT_ID];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (!this.strategy) {
|
|
42
|
+
return ContextIdFactory.create();
|
|
43
|
+
}
|
|
44
|
+
const contextId = createContextId();
|
|
45
|
+
const resolverObjectOrFunction = this.strategy.attach(contextId, request);
|
|
46
|
+
if (this.isContextIdResolverWithPayload(resolverObjectOrFunction)) {
|
|
47
|
+
contextId.getParent = resolverObjectOrFunction.resolve;
|
|
48
|
+
contextId.payload = resolverObjectOrFunction.payload;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
contextId.getParent = resolverObjectOrFunction;
|
|
52
|
+
}
|
|
53
|
+
return contextId;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Registers a custom context id strategy that lets you attach
|
|
57
|
+
* a parent context id to the existing context id object.
|
|
58
|
+
* @param strategy strategy instance
|
|
59
|
+
*/
|
|
60
|
+
static apply(strategy) {
|
|
61
|
+
this.strategy = strategy;
|
|
62
|
+
}
|
|
63
|
+
static isContextIdResolverWithPayload(resolverOrResolverFn) {
|
|
64
|
+
return (0, shared_utils_1.isObject)(resolverOrResolverFn);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.ContextIdFactory = ContextIdFactory;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ParamData } from '@nestjs/common';
|
|
2
|
+
import { ContextType, Controller, PipeTransform } from '@nestjs/common/interfaces';
|
|
3
|
+
import { ExecutionContextHost } from './execution-context-host';
|
|
4
|
+
export interface ParamProperties<T = any, IExtractor extends Function = any> {
|
|
5
|
+
index: number;
|
|
6
|
+
type: T | string;
|
|
7
|
+
data: ParamData;
|
|
8
|
+
pipes: PipeTransform[];
|
|
9
|
+
extractValue: IExtractor;
|
|
10
|
+
}
|
|
11
|
+
export declare class ContextUtils {
|
|
12
|
+
mapParamType(key: string): string;
|
|
13
|
+
reflectCallbackParamtypes(instance: Controller, methodName: string): any[];
|
|
14
|
+
reflectCallbackMetadata<T = any>(instance: Controller, methodName: string, metadataKey: string): T;
|
|
15
|
+
reflectPassthrough(instance: Controller, methodName: string): boolean;
|
|
16
|
+
getArgumentsLength<T>(keys: string[], metadata: T): number;
|
|
17
|
+
createNullArray(length: number): any[];
|
|
18
|
+
mergeParamsMetatypes(paramsProperties: ParamProperties[], paramtypes: any[]): (ParamProperties & {
|
|
19
|
+
metatype?: any;
|
|
20
|
+
})[];
|
|
21
|
+
getCustomFactory(factory: (...args: unknown[]) => void, data: unknown, contextFactory: (args: unknown[]) => ExecutionContextHost): (...args: unknown[]) => unknown;
|
|
22
|
+
getContextFactory<TContext extends string = ContextType>(contextType: TContext, instance?: object, callback?: Function): (args: unknown[]) => ExecutionContextHost;
|
|
23
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContextUtils = void 0;
|
|
4
|
+
const constants_1 = require("@nestjs/common/constants");
|
|
5
|
+
const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
|
|
6
|
+
const execution_context_host_1 = require("./execution-context-host");
|
|
7
|
+
class ContextUtils {
|
|
8
|
+
mapParamType(key) {
|
|
9
|
+
const keyPair = key.split(':');
|
|
10
|
+
return keyPair[0];
|
|
11
|
+
}
|
|
12
|
+
reflectCallbackParamtypes(instance, methodName) {
|
|
13
|
+
return Reflect.getMetadata(constants_1.PARAMTYPES_METADATA, instance, methodName);
|
|
14
|
+
}
|
|
15
|
+
reflectCallbackMetadata(instance, methodName, metadataKey) {
|
|
16
|
+
return Reflect.getMetadata(metadataKey, instance.constructor, methodName);
|
|
17
|
+
}
|
|
18
|
+
reflectPassthrough(instance, methodName) {
|
|
19
|
+
return Reflect.getMetadata(constants_1.RESPONSE_PASSTHROUGH_METADATA, instance.constructor, methodName);
|
|
20
|
+
}
|
|
21
|
+
getArgumentsLength(keys, metadata) {
|
|
22
|
+
return keys.length
|
|
23
|
+
? Math.max(...keys.map(key => metadata[key].index)) + 1
|
|
24
|
+
: 0;
|
|
25
|
+
}
|
|
26
|
+
createNullArray(length) {
|
|
27
|
+
const a = new Array(length);
|
|
28
|
+
for (let i = 0; i < length; ++i)
|
|
29
|
+
a[i] = undefined;
|
|
30
|
+
return a;
|
|
31
|
+
}
|
|
32
|
+
mergeParamsMetatypes(paramsProperties, paramtypes) {
|
|
33
|
+
if (!paramtypes) {
|
|
34
|
+
return paramsProperties;
|
|
35
|
+
}
|
|
36
|
+
return paramsProperties.map(param => ({
|
|
37
|
+
...param,
|
|
38
|
+
metatype: paramtypes[param.index],
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
getCustomFactory(factory, data, contextFactory) {
|
|
42
|
+
return (0, shared_utils_1.isFunction)(factory)
|
|
43
|
+
? (...args) => factory(data, contextFactory(args))
|
|
44
|
+
: () => null;
|
|
45
|
+
}
|
|
46
|
+
getContextFactory(contextType, instance, callback) {
|
|
47
|
+
const type = instance && instance.constructor;
|
|
48
|
+
return (args) => {
|
|
49
|
+
const ctx = new execution_context_host_1.ExecutionContextHost(args, type, callback);
|
|
50
|
+
ctx.setType(contextType);
|
|
51
|
+
return ctx;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.ContextUtils = ContextUtils;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ExecutionContext } from '@nestjs/common';
|
|
2
|
+
import { Type } from '@nestjs/common/interfaces';
|
|
3
|
+
import { ContextType, HttpArgumentsHost, RpcArgumentsHost, WsArgumentsHost } from '@nestjs/common/interfaces/features/arguments-host.interface';
|
|
4
|
+
export declare class ExecutionContextHost implements ExecutionContext {
|
|
5
|
+
private readonly args;
|
|
6
|
+
private readonly constructorRef;
|
|
7
|
+
private readonly handler;
|
|
8
|
+
private contextType;
|
|
9
|
+
constructor(args: any[], constructorRef?: Type<any> | null, handler?: Function | null);
|
|
10
|
+
setType<TContext extends string = ContextType>(type: TContext): void;
|
|
11
|
+
getType<TContext extends string = ContextType>(): TContext;
|
|
12
|
+
getClass<T = any>(): Type<T>;
|
|
13
|
+
getHandler(): Function;
|
|
14
|
+
getArgs<T extends Array<any> = any[]>(): T;
|
|
15
|
+
getArgByIndex<T = any>(index: number): T;
|
|
16
|
+
switchToRpc(): RpcArgumentsHost;
|
|
17
|
+
switchToHttp(): HttpArgumentsHost;
|
|
18
|
+
switchToWs(): WsArgumentsHost;
|
|
19
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExecutionContextHost = void 0;
|
|
4
|
+
class ExecutionContextHost {
|
|
5
|
+
constructor(args, constructorRef = null, handler = null) {
|
|
6
|
+
this.args = args;
|
|
7
|
+
this.constructorRef = constructorRef;
|
|
8
|
+
this.handler = handler;
|
|
9
|
+
this.contextType = 'http';
|
|
10
|
+
}
|
|
11
|
+
setType(type) {
|
|
12
|
+
type && (this.contextType = type);
|
|
13
|
+
}
|
|
14
|
+
getType() {
|
|
15
|
+
return this.contextType;
|
|
16
|
+
}
|
|
17
|
+
getClass() {
|
|
18
|
+
return this.constructorRef;
|
|
19
|
+
}
|
|
20
|
+
getHandler() {
|
|
21
|
+
return this.handler;
|
|
22
|
+
}
|
|
23
|
+
getArgs() {
|
|
24
|
+
return this.args;
|
|
25
|
+
}
|
|
26
|
+
getArgByIndex(index) {
|
|
27
|
+
return this.args[index];
|
|
28
|
+
}
|
|
29
|
+
switchToRpc() {
|
|
30
|
+
return Object.assign(this, {
|
|
31
|
+
getData: () => this.getArgByIndex(0),
|
|
32
|
+
getContext: () => this.getArgByIndex(1),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
switchToHttp() {
|
|
36
|
+
return Object.assign(this, {
|
|
37
|
+
getRequest: () => this.getArgByIndex(0),
|
|
38
|
+
getResponse: () => this.getArgByIndex(1),
|
|
39
|
+
getNext: () => this.getArgByIndex(2),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
switchToWs() {
|
|
43
|
+
return Object.assign(this, {
|
|
44
|
+
getClient: () => this.getArgByIndex(0),
|
|
45
|
+
getData: () => this.getArgByIndex(1),
|
|
46
|
+
getPattern: () => this.getArgByIndex(this.getArgs().length - 1),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.ExecutionContextHost = ExecutionContextHost;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ParamData } from '@nestjs/common';
|
|
2
|
+
import { ContextType, Controller, PipeTransform } from '@nestjs/common/interfaces';
|
|
3
|
+
import { ExternalExceptionFilterContext } from '../exceptions/external-exception-filter-context';
|
|
4
|
+
import { GuardsConsumer, GuardsContextCreator } from '../guards';
|
|
5
|
+
import { NestContainer } from '../injector/container';
|
|
6
|
+
import { ContextId } from '../injector/instance-wrapper';
|
|
7
|
+
import { ModulesContainer } from '../injector/modules-container';
|
|
8
|
+
import { InterceptorsConsumer, InterceptorsContextCreator } from '../interceptors';
|
|
9
|
+
import { PipesConsumer, PipesContextCreator } from '../pipes';
|
|
10
|
+
import { ParamProperties } from './context-utils';
|
|
11
|
+
import { ExternalHandlerMetadata } from './interfaces/external-handler-metadata.interface';
|
|
12
|
+
import { ParamsMetadata } from './interfaces/params-metadata.interface';
|
|
13
|
+
export interface ParamsFactory {
|
|
14
|
+
exchangeKeyForValue(type: number, data: ParamData, args: any): any;
|
|
15
|
+
}
|
|
16
|
+
export interface ExternalContextOptions {
|
|
17
|
+
guards?: boolean;
|
|
18
|
+
interceptors?: boolean;
|
|
19
|
+
filters?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare class ExternalContextCreator {
|
|
22
|
+
private readonly guardsContextCreator;
|
|
23
|
+
private readonly guardsConsumer;
|
|
24
|
+
private readonly interceptorsContextCreator;
|
|
25
|
+
private readonly interceptorsConsumer;
|
|
26
|
+
private readonly modulesContainer;
|
|
27
|
+
private readonly pipesContextCreator;
|
|
28
|
+
private readonly pipesConsumer;
|
|
29
|
+
private readonly filtersContextCreator;
|
|
30
|
+
private readonly contextUtils;
|
|
31
|
+
private readonly externalErrorProxy;
|
|
32
|
+
private readonly handlerMetadataStorage;
|
|
33
|
+
private container;
|
|
34
|
+
constructor(guardsContextCreator: GuardsContextCreator, guardsConsumer: GuardsConsumer, interceptorsContextCreator: InterceptorsContextCreator, interceptorsConsumer: InterceptorsConsumer, modulesContainer: ModulesContainer, pipesContextCreator: PipesContextCreator, pipesConsumer: PipesConsumer, filtersContextCreator: ExternalExceptionFilterContext);
|
|
35
|
+
static fromContainer(container: NestContainer): ExternalContextCreator;
|
|
36
|
+
create<TParamsMetadata extends ParamsMetadata = ParamsMetadata, TContext extends string = ContextType>(instance: Controller, callback: (...args: unknown[]) => unknown, methodName: string, metadataKey?: string, paramsFactory?: ParamsFactory, contextId?: ContextId, inquirerId?: string, options?: ExternalContextOptions, contextType?: TContext): (...args: any[]) => Promise<any>;
|
|
37
|
+
getMetadata<TMetadata, TContext extends string = ContextType>(instance: Controller, methodName: string, metadataKey?: string, paramsFactory?: ParamsFactory, contextType?: TContext): ExternalHandlerMetadata;
|
|
38
|
+
getContextModuleKey(moduleCtor: Function | undefined): string;
|
|
39
|
+
exchangeKeysForValues<TMetadata = any>(keys: string[], metadata: TMetadata, moduleContext: string, paramsFactory: ParamsFactory, contextId?: ContextId, inquirerId?: string, contextFactory?: (args: unknown[]) => import("./execution-context-host").ExecutionContextHost): ParamProperties[];
|
|
40
|
+
createPipesFn(pipes: PipeTransform[], paramsOptions: (ParamProperties & {
|
|
41
|
+
metatype?: unknown;
|
|
42
|
+
})[]): ((args: unknown[], ...params: unknown[]) => Promise<void>) | null;
|
|
43
|
+
getParamValue<T>(value: T, { metatype, type, data }: {
|
|
44
|
+
metatype: any;
|
|
45
|
+
type: any;
|
|
46
|
+
data: any;
|
|
47
|
+
}, pipes: PipeTransform[]): Promise<any>;
|
|
48
|
+
transformToResult(resultOrDeferred: any): Promise<any>;
|
|
49
|
+
createGuardsFn<TContext extends string = ContextType>(guards: any[], instance: Controller, callback: (...args: any[]) => any, contextType?: TContext): Function | null;
|
|
50
|
+
registerRequestProvider<T = any>(request: T, contextId: ContextId): void;
|
|
51
|
+
}
|