@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
package/injector/injector.js
CHANGED
|
@@ -1,51 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const settlement_signal_1 = require("./settlement-signal");
|
|
19
|
-
class Injector {
|
|
1
|
+
import { Logger, } from '@nestjs/common';
|
|
2
|
+
import { OPTIONAL_DEPS_METADATA, OPTIONAL_PROPERTY_DEPS_METADATA, PARAMTYPES_METADATA, PROPERTY_DEPS_METADATA, SELF_DECLARED_DEPS_METADATA, clc, isFunction, isNil, isObject, isString, isSymbol, isUndefined, } from '@nestjs/common/internal';
|
|
3
|
+
import { iterate } from 'iterare';
|
|
4
|
+
import { performance } from 'perf_hooks';
|
|
5
|
+
import { CircularDependencyException } from '../errors/exceptions/index.js';
|
|
6
|
+
import { RuntimeException } from '../errors/exceptions/runtime.exception.js';
|
|
7
|
+
import { UndefinedDependencyException } from '../errors/exceptions/undefined-dependency.exception.js';
|
|
8
|
+
import { UnknownDependenciesException } from '../errors/exceptions/unknown-dependencies.exception.js';
|
|
9
|
+
import { Barrier } from '../helpers/barrier.js';
|
|
10
|
+
import { STATIC_CONTEXT } from './constants.js';
|
|
11
|
+
import { INQUIRER } from './inquirer/index.js';
|
|
12
|
+
import { InstanceWrapper, } from './instance-wrapper.js';
|
|
13
|
+
import { SettlementSignal } from './settlement-signal.js';
|
|
14
|
+
export class Injector {
|
|
15
|
+
options;
|
|
16
|
+
logger = new Logger('InjectorLogger');
|
|
17
|
+
instanceDecorator = (target) => target;
|
|
20
18
|
constructor(options) {
|
|
21
19
|
this.options = options;
|
|
22
|
-
this.logger = new common_1.Logger('InjectorLogger');
|
|
23
|
-
this.instanceDecorator = (target) => target;
|
|
24
20
|
if (options?.instanceDecorator) {
|
|
25
21
|
this.instanceDecorator = options.instanceDecorator;
|
|
26
22
|
}
|
|
27
23
|
}
|
|
28
|
-
loadPrototype({ token }, collection, contextId =
|
|
24
|
+
loadPrototype({ token }, collection, contextId = STATIC_CONTEXT) {
|
|
29
25
|
if (!collection) {
|
|
30
26
|
return;
|
|
31
27
|
}
|
|
32
28
|
const target = collection.get(token);
|
|
33
29
|
const instance = target.createPrototype(contextId);
|
|
34
30
|
if (instance) {
|
|
35
|
-
const wrapper = new
|
|
31
|
+
const wrapper = new InstanceWrapper({
|
|
36
32
|
...target,
|
|
37
33
|
instance,
|
|
38
34
|
});
|
|
39
35
|
collection.set(token, wrapper);
|
|
40
36
|
}
|
|
41
37
|
}
|
|
42
|
-
async loadInstance(wrapper, collection, moduleRef, contextId =
|
|
38
|
+
async loadInstance(wrapper, collection, moduleRef, contextId = STATIC_CONTEXT, inquirer) {
|
|
43
39
|
const inquirerId = this.getInquirerId(inquirer);
|
|
44
40
|
const instanceHost = wrapper.getInstanceByContextId(this.getContextId(contextId, wrapper), inquirerId);
|
|
45
41
|
if (instanceHost.isPending) {
|
|
46
42
|
const settlementSignal = wrapper.settlementSignal;
|
|
47
43
|
if (inquirer && settlementSignal?.isCycle(inquirer.id)) {
|
|
48
|
-
throw new
|
|
44
|
+
throw new CircularDependencyException(`"${wrapper.name}"`);
|
|
49
45
|
}
|
|
50
46
|
return instanceHost.donePromise.then((err) => {
|
|
51
47
|
if (err) {
|
|
@@ -57,18 +53,19 @@ class Injector {
|
|
|
57
53
|
const token = wrapper.token || wrapper.name;
|
|
58
54
|
const { inject } = wrapper;
|
|
59
55
|
const targetWrapper = collection.get(token);
|
|
60
|
-
if (
|
|
61
|
-
throw new
|
|
56
|
+
if (isUndefined(targetWrapper)) {
|
|
57
|
+
throw new RuntimeException();
|
|
62
58
|
}
|
|
63
59
|
if (instanceHost.isResolved) {
|
|
64
60
|
return settlementSignal.complete();
|
|
65
61
|
}
|
|
66
62
|
try {
|
|
67
63
|
const t0 = this.getNowTimestamp();
|
|
68
|
-
const callback = async (instances) => {
|
|
64
|
+
const callback = async (instances, depth = 0) => {
|
|
69
65
|
const properties = await this.resolveProperties(wrapper, moduleRef, inject, contextId, wrapper, inquirer);
|
|
70
66
|
const instance = await this.instantiateClass(instances, wrapper, targetWrapper, contextId, inquirer);
|
|
71
67
|
this.applyProperties(instance, properties);
|
|
68
|
+
wrapper.hierarchyLevel = depth + 1;
|
|
72
69
|
wrapper.initTime = this.getNowTimestamp() - t0;
|
|
73
70
|
settlementSignal.complete();
|
|
74
71
|
};
|
|
@@ -80,48 +77,49 @@ class Injector {
|
|
|
80
77
|
throw err;
|
|
81
78
|
}
|
|
82
79
|
}
|
|
83
|
-
async loadMiddleware(wrapper, collection, moduleRef, contextId =
|
|
80
|
+
async loadMiddleware(wrapper, collection, moduleRef, contextId = STATIC_CONTEXT, inquirer) {
|
|
84
81
|
const { metatype, token } = wrapper;
|
|
85
82
|
const targetWrapper = collection.get(token);
|
|
86
|
-
if (!
|
|
83
|
+
if (!isUndefined(targetWrapper.instance)) {
|
|
87
84
|
return;
|
|
88
85
|
}
|
|
89
86
|
targetWrapper.instance = Object.create(metatype.prototype);
|
|
90
87
|
await this.loadInstance(wrapper, collection, moduleRef, contextId, inquirer || wrapper);
|
|
91
88
|
}
|
|
92
|
-
async loadController(wrapper, moduleRef, contextId =
|
|
89
|
+
async loadController(wrapper, moduleRef, contextId = STATIC_CONTEXT) {
|
|
93
90
|
const controllers = moduleRef.controllers;
|
|
94
91
|
await this.loadInstance(wrapper, controllers, moduleRef, contextId, wrapper);
|
|
95
92
|
await this.loadEnhancersPerContext(wrapper, contextId, wrapper);
|
|
96
93
|
}
|
|
97
|
-
async loadInjectable(wrapper, moduleRef, contextId =
|
|
94
|
+
async loadInjectable(wrapper, moduleRef, contextId = STATIC_CONTEXT, inquirer) {
|
|
98
95
|
const injectables = moduleRef.injectables;
|
|
99
96
|
await this.loadInstance(wrapper, injectables, moduleRef, contextId, inquirer);
|
|
100
97
|
}
|
|
101
|
-
async loadProvider(wrapper, moduleRef, contextId =
|
|
98
|
+
async loadProvider(wrapper, moduleRef, contextId = STATIC_CONTEXT, inquirer) {
|
|
102
99
|
const providers = moduleRef.providers;
|
|
103
100
|
await this.loadInstance(wrapper, providers, moduleRef, contextId, inquirer);
|
|
104
101
|
await this.loadEnhancersPerContext(wrapper, contextId, wrapper);
|
|
105
102
|
}
|
|
106
103
|
applySettlementSignal(instancePerContext, host) {
|
|
107
|
-
const settlementSignal = new
|
|
104
|
+
const settlementSignal = new SettlementSignal();
|
|
108
105
|
instancePerContext.donePromise = settlementSignal.asPromise();
|
|
109
106
|
instancePerContext.isPending = true;
|
|
110
107
|
host.settlementSignal = settlementSignal;
|
|
111
108
|
return settlementSignal;
|
|
112
109
|
}
|
|
113
|
-
async resolveConstructorParams(wrapper, moduleRef, inject, callback, contextId =
|
|
110
|
+
async resolveConstructorParams(wrapper, moduleRef, inject, callback, contextId = STATIC_CONTEXT, inquirer, parentInquirer) {
|
|
114
111
|
const metadata = wrapper.getCtorMetadata();
|
|
115
|
-
if (metadata && contextId !==
|
|
112
|
+
if (metadata && contextId !== STATIC_CONTEXT) {
|
|
116
113
|
const deps = await this.loadCtorMetadata(metadata, contextId, inquirer, parentInquirer);
|
|
117
114
|
return callback(deps);
|
|
118
115
|
}
|
|
119
|
-
const isFactoryProvider = !
|
|
116
|
+
const isFactoryProvider = !isNil(inject);
|
|
120
117
|
const [dependencies, optionalDependenciesIds] = isFactoryProvider
|
|
121
118
|
? this.getFactoryProviderDependencies(wrapper)
|
|
122
119
|
: this.getClassDependencies(wrapper);
|
|
123
|
-
const paramBarrier = new
|
|
120
|
+
const paramBarrier = new Barrier(dependencies.length);
|
|
124
121
|
let isResolved = true;
|
|
122
|
+
let depth = 0;
|
|
125
123
|
const resolveParam = async (param, index) => {
|
|
126
124
|
try {
|
|
127
125
|
if (this.isInquirer(param, parentInquirer)) {
|
|
@@ -146,6 +144,9 @@ class Injector {
|
|
|
146
144
|
await paramBarrier.signalAndWait();
|
|
147
145
|
const effectiveInquirer = this.getEffectiveInquirer(paramWrapper, inquirer, parentInquirer, contextId);
|
|
148
146
|
const paramWrapperWithInstance = await this.resolveComponentHost(moduleRef, paramWrapper, contextId, effectiveInquirer);
|
|
147
|
+
if (paramWrapperWithInstance.hierarchyLevel > depth) {
|
|
148
|
+
depth = paramWrapperWithInstance.hierarchyLevel;
|
|
149
|
+
}
|
|
149
150
|
const instanceHost = paramWrapperWithInstance.getInstanceByContextId(this.getContextId(contextId, paramWrapperWithInstance), this.getInquirerId(effectiveInquirer));
|
|
150
151
|
if (!instanceHost.isResolved && !paramWrapperWithInstance.forwardRef) {
|
|
151
152
|
isResolved = false;
|
|
@@ -167,7 +168,7 @@ class Injector {
|
|
|
167
168
|
}
|
|
168
169
|
};
|
|
169
170
|
const instances = await Promise.all(dependencies.map(resolveParam));
|
|
170
|
-
isResolved && (await callback(instances));
|
|
171
|
+
isResolved && (await callback(instances, depth));
|
|
171
172
|
}
|
|
172
173
|
getClassDependencies(wrapper) {
|
|
173
174
|
const ctorRef = wrapper.metatype;
|
|
@@ -183,8 +184,8 @@ class Injector {
|
|
|
183
184
|
* We are duplicating it here because that one is not supposed to be exported.
|
|
184
185
|
*/
|
|
185
186
|
function isOptionalFactoryDependency(value) {
|
|
186
|
-
return (!
|
|
187
|
-
!
|
|
187
|
+
return (!isUndefined(value.token) &&
|
|
188
|
+
!isUndefined(value.optional) &&
|
|
188
189
|
!value.prototype);
|
|
189
190
|
}
|
|
190
191
|
const mapFactoryProviderInjectArray = (item, index) => {
|
|
@@ -206,22 +207,22 @@ class Injector {
|
|
|
206
207
|
}
|
|
207
208
|
reflectConstructorParams(type) {
|
|
208
209
|
const paramtypes = [
|
|
209
|
-
...(Reflect.getMetadata(
|
|
210
|
+
...(Reflect.getMetadata(PARAMTYPES_METADATA, type) || []),
|
|
210
211
|
];
|
|
211
212
|
const selfParams = this.reflectSelfParams(type);
|
|
212
213
|
selfParams.forEach(({ index, param }) => (paramtypes[index] = param));
|
|
213
214
|
return paramtypes;
|
|
214
215
|
}
|
|
215
216
|
reflectOptionalParams(type) {
|
|
216
|
-
return Reflect.getMetadata(
|
|
217
|
+
return Reflect.getMetadata(OPTIONAL_DEPS_METADATA, type) || [];
|
|
217
218
|
}
|
|
218
219
|
reflectSelfParams(type) {
|
|
219
|
-
return Reflect.getMetadata(
|
|
220
|
+
return Reflect.getMetadata(SELF_DECLARED_DEPS_METADATA, type) || [];
|
|
220
221
|
}
|
|
221
|
-
async resolveSingleParam(wrapper, param, dependencyContext, moduleRef, contextId =
|
|
222
|
-
if (
|
|
222
|
+
async resolveSingleParam(wrapper, param, dependencyContext, moduleRef, contextId = STATIC_CONTEXT, inquirer, keyOrIndex) {
|
|
223
|
+
if (isUndefined(param)) {
|
|
223
224
|
this.logger.log('Nest encountered an undefined dependency. This may be due to a circular import or a missing dependency declaration.');
|
|
224
|
-
throw new
|
|
225
|
+
throw new UndefinedDependencyException(wrapper.name, dependencyContext, moduleRef);
|
|
225
226
|
}
|
|
226
227
|
const token = this.resolveParamToken(wrapper, param);
|
|
227
228
|
return this.resolveComponentWrapper(moduleRef, token, dependencyContext, wrapper, contextId, inquirer, keyOrIndex);
|
|
@@ -233,13 +234,13 @@ class Injector {
|
|
|
233
234
|
}
|
|
234
235
|
return param;
|
|
235
236
|
}
|
|
236
|
-
async resolveComponentWrapper(moduleRef, token, dependencyContext, wrapper, contextId =
|
|
237
|
+
async resolveComponentWrapper(moduleRef, token, dependencyContext, wrapper, contextId = STATIC_CONTEXT, inquirer, keyOrIndex) {
|
|
237
238
|
this.printResolvingDependenciesLog(token, inquirer);
|
|
238
239
|
this.printLookingForProviderLog(token, moduleRef);
|
|
239
240
|
const providers = moduleRef.providers;
|
|
240
241
|
return this.lookupComponent(providers, moduleRef, { ...dependencyContext, name: token }, wrapper, contextId, inquirer, keyOrIndex);
|
|
241
242
|
}
|
|
242
|
-
async resolveComponentHost(moduleRef, instanceWrapper, contextId =
|
|
243
|
+
async resolveComponentHost(moduleRef, instanceWrapper, contextId = STATIC_CONTEXT, inquirer) {
|
|
243
244
|
const inquirerId = this.getInquirerId(inquirer);
|
|
244
245
|
const instanceHost = instanceWrapper.getInstanceByContextId(this.getContextId(contextId, instanceWrapper), inquirerId);
|
|
245
246
|
if (!instanceHost.isResolved && !instanceWrapper.forwardRef) {
|
|
@@ -248,7 +249,7 @@ class Injector {
|
|
|
248
249
|
}
|
|
249
250
|
else if (!instanceHost.isResolved &&
|
|
250
251
|
instanceWrapper.forwardRef &&
|
|
251
|
-
(contextId !==
|
|
252
|
+
(contextId !== STATIC_CONTEXT || !!inquirerId)) {
|
|
252
253
|
/**
|
|
253
254
|
* When circular dependency has been detected between
|
|
254
255
|
* either request/transient providers, we have to asynchronously
|
|
@@ -270,11 +271,11 @@ class Injector {
|
|
|
270
271
|
}
|
|
271
272
|
return instanceWrapper;
|
|
272
273
|
}
|
|
273
|
-
async lookupComponent(providers, moduleRef, dependencyContext, wrapper, contextId =
|
|
274
|
+
async lookupComponent(providers, moduleRef, dependencyContext, wrapper, contextId = STATIC_CONTEXT, inquirer, keyOrIndex) {
|
|
274
275
|
const token = wrapper.token || wrapper.name;
|
|
275
276
|
const { name } = dependencyContext;
|
|
276
277
|
if (wrapper && token === name) {
|
|
277
|
-
throw new
|
|
278
|
+
throw new UnknownDependenciesException(wrapper.name, dependencyContext, moduleRef, { id: wrapper.id });
|
|
278
279
|
}
|
|
279
280
|
if (name && providers.has(name)) {
|
|
280
281
|
const instanceWrapper = providers.get(name);
|
|
@@ -284,14 +285,14 @@ class Injector {
|
|
|
284
285
|
}
|
|
285
286
|
return this.lookupComponentInParentModules(dependencyContext, moduleRef, wrapper, contextId, inquirer, keyOrIndex);
|
|
286
287
|
}
|
|
287
|
-
async lookupComponentInParentModules(dependencyContext, moduleRef, wrapper, contextId =
|
|
288
|
+
async lookupComponentInParentModules(dependencyContext, moduleRef, wrapper, contextId = STATIC_CONTEXT, inquirer, keyOrIndex) {
|
|
288
289
|
const instanceWrapper = await this.lookupComponentInImports(moduleRef, dependencyContext.name, wrapper, new Set(), contextId, inquirer, keyOrIndex);
|
|
289
|
-
if (
|
|
290
|
-
throw new
|
|
290
|
+
if (isNil(instanceWrapper)) {
|
|
291
|
+
throw new UnknownDependenciesException(wrapper.name, dependencyContext, moduleRef, { id: wrapper.id });
|
|
291
292
|
}
|
|
292
293
|
return instanceWrapper;
|
|
293
294
|
}
|
|
294
|
-
async lookupComponentInImports(moduleRef, name, wrapper, moduleRegistry = new Set(), contextId =
|
|
295
|
+
async lookupComponentInImports(moduleRef, name, wrapper, moduleRegistry = new Set(), contextId = STATIC_CONTEXT, inquirer, keyOrIndex, isTraversing) {
|
|
295
296
|
let instanceWrapperRef = null;
|
|
296
297
|
const imports = moduleRef.imports || new Set();
|
|
297
298
|
const identity = (item) => item;
|
|
@@ -331,16 +332,16 @@ class Injector {
|
|
|
331
332
|
}
|
|
332
333
|
return instanceWrapperRef;
|
|
333
334
|
}
|
|
334
|
-
async resolveProperties(wrapper, moduleRef, inject, contextId =
|
|
335
|
-
if (!
|
|
335
|
+
async resolveProperties(wrapper, moduleRef, inject, contextId = STATIC_CONTEXT, inquirer, parentInquirer) {
|
|
336
|
+
if (!isNil(inject)) {
|
|
336
337
|
return [];
|
|
337
338
|
}
|
|
338
339
|
const metadata = wrapper.getPropertiesMetadata();
|
|
339
|
-
if (metadata && contextId !==
|
|
340
|
+
if (metadata && contextId !== STATIC_CONTEXT) {
|
|
340
341
|
return this.loadPropertiesMetadata(metadata, contextId, inquirer);
|
|
341
342
|
}
|
|
342
343
|
const properties = this.reflectProperties(wrapper.metatype);
|
|
343
|
-
const propertyBarrier = new
|
|
344
|
+
const propertyBarrier = new Barrier(properties.length);
|
|
344
345
|
const instances = await Promise.all(properties.map(async (item) => {
|
|
345
346
|
try {
|
|
346
347
|
const dependencyContext = {
|
|
@@ -388,8 +389,8 @@ class Injector {
|
|
|
388
389
|
}));
|
|
389
390
|
}
|
|
390
391
|
reflectProperties(type) {
|
|
391
|
-
const properties = Reflect.getMetadata(
|
|
392
|
-
const optionalKeys = Reflect.getMetadata(
|
|
392
|
+
const properties = Reflect.getMetadata(PROPERTY_DEPS_METADATA, type) || [];
|
|
393
|
+
const optionalKeys = Reflect.getMetadata(OPTIONAL_PROPERTY_DEPS_METADATA, type) || [];
|
|
393
394
|
return properties.map((item) => ({
|
|
394
395
|
...item,
|
|
395
396
|
name: item.type,
|
|
@@ -397,14 +398,14 @@ class Injector {
|
|
|
397
398
|
}));
|
|
398
399
|
}
|
|
399
400
|
applyProperties(instance, properties) {
|
|
400
|
-
if (!
|
|
401
|
-
return
|
|
401
|
+
if (!isObject(instance)) {
|
|
402
|
+
return;
|
|
402
403
|
}
|
|
403
|
-
|
|
404
|
-
.filter(item => !
|
|
404
|
+
iterate(properties)
|
|
405
|
+
.filter(item => !isNil(item.instance))
|
|
405
406
|
.forEach(item => (instance[item.key] = item.instance));
|
|
406
407
|
}
|
|
407
|
-
async instantiateClass(instances, wrapper, targetMetatype, contextId =
|
|
408
|
+
async instantiateClass(instances, wrapper, targetMetatype, contextId = STATIC_CONTEXT, inquirer) {
|
|
408
409
|
const { metatype, inject } = wrapper;
|
|
409
410
|
const inquirerId = this.getInquirerId(inquirer);
|
|
410
411
|
const instanceHost = targetMetatype.getInstanceByContextId(this.getContextId(contextId, targetMetatype), inquirerId);
|
|
@@ -416,7 +417,7 @@ class Injector {
|
|
|
416
417
|
instanceHost.isResolved = true;
|
|
417
418
|
return instanceHost.instance;
|
|
418
419
|
}
|
|
419
|
-
if (
|
|
420
|
+
if (isNil(inject) && isInContext) {
|
|
420
421
|
instanceHost.instance = wrapper.forwardRef
|
|
421
422
|
? Object.assign(instanceHost.instance, new metatype(...instances))
|
|
422
423
|
: new metatype(...instances);
|
|
@@ -484,7 +485,7 @@ class Injector {
|
|
|
484
485
|
return dependency?.isTransient &&
|
|
485
486
|
inquirer?.isTransient &&
|
|
486
487
|
parentInquirer &&
|
|
487
|
-
contextId !==
|
|
488
|
+
contextId !== STATIC_CONTEXT
|
|
488
489
|
? parentInquirer
|
|
489
490
|
: inquirer;
|
|
490
491
|
}
|
|
@@ -494,13 +495,13 @@ class Injector {
|
|
|
494
495
|
: this.resolveComponentHost(item.host, item, contextId, this.getEffectiveInquirer(item, inquirer, parentInquirer, contextId));
|
|
495
496
|
}
|
|
496
497
|
isInquirerRequest(item, parentInquirer) {
|
|
497
|
-
return item.isTransient && item.name ===
|
|
498
|
+
return item.isTransient && item.name === INQUIRER && parentInquirer;
|
|
498
499
|
}
|
|
499
500
|
isInquirer(param, parentInquirer) {
|
|
500
|
-
return param ===
|
|
501
|
+
return param === INQUIRER && parentInquirer;
|
|
501
502
|
}
|
|
502
503
|
addDependencyMetadata(keyOrIndex, hostWrapper, instanceWrapper) {
|
|
503
|
-
if (
|
|
504
|
+
if (isSymbol(keyOrIndex) || isString(keyOrIndex)) {
|
|
504
505
|
hostWrapper.addPropertiesMetadata(keyOrIndex, instanceWrapper);
|
|
505
506
|
}
|
|
506
507
|
else {
|
|
@@ -508,7 +509,7 @@ class Injector {
|
|
|
508
509
|
}
|
|
509
510
|
}
|
|
510
511
|
getTokenName(token) {
|
|
511
|
-
return
|
|
512
|
+
return isFunction(token) ? token.name : token.toString();
|
|
512
513
|
}
|
|
513
514
|
printResolvingDependenciesLog(token, inquirer) {
|
|
514
515
|
if (!this.isDebugMode()) {
|
|
@@ -517,7 +518,7 @@ class Injector {
|
|
|
517
518
|
const tokenName = this.getTokenName(token);
|
|
518
519
|
const dependentName = (inquirer?.name && inquirer.name.toString?.()) ?? 'unknown';
|
|
519
520
|
const isAlias = dependentName === tokenName;
|
|
520
|
-
const messageToPrint = `Resolving dependency ${
|
|
521
|
+
const messageToPrint = `Resolving dependency ${clc.cyanBright(tokenName)}${clc.green(' in the ')}${clc.yellow(dependentName)}${clc.green(` provider ${isAlias ? '(alias)' : ''}`)}`;
|
|
521
522
|
this.logger.log(messageToPrint);
|
|
522
523
|
}
|
|
523
524
|
printLookingForProviderLog(token, moduleRef) {
|
|
@@ -526,7 +527,7 @@ class Injector {
|
|
|
526
527
|
}
|
|
527
528
|
const tokenName = this.getTokenName(token);
|
|
528
529
|
const moduleRefName = moduleRef?.metatype?.name ?? 'unknown';
|
|
529
|
-
this.logger.log(`Looking for ${
|
|
530
|
+
this.logger.log(`Looking for ${clc.cyanBright(tokenName)}${clc.green(' in ')}${clc.magentaBright(moduleRefName)}`);
|
|
530
531
|
}
|
|
531
532
|
printFoundInModuleLog(token, moduleRef) {
|
|
532
533
|
if (!this.isDebugMode()) {
|
|
@@ -534,7 +535,7 @@ class Injector {
|
|
|
534
535
|
}
|
|
535
536
|
const tokenName = this.getTokenName(token);
|
|
536
537
|
const moduleRefName = moduleRef?.metatype?.name ?? 'unknown';
|
|
537
|
-
this.logger.log(`Found ${
|
|
538
|
+
this.logger.log(`Found ${clc.cyanBright(tokenName)}${clc.green(' in ')}${clc.magentaBright(moduleRefName)}`);
|
|
538
539
|
}
|
|
539
540
|
isDebugMode() {
|
|
540
541
|
return !!process.env.NEST_DEBUG;
|
|
@@ -548,7 +549,6 @@ class Injector {
|
|
|
548
549
|
: contextId;
|
|
549
550
|
}
|
|
550
551
|
getNowTimestamp() {
|
|
551
|
-
return
|
|
552
|
+
return performance.now();
|
|
552
553
|
}
|
|
553
554
|
}
|
|
554
|
-
exports.Injector = Injector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './inquirer-constants';
|
|
1
|
+
export * from './inquirer-constants.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Provider } from '@nestjs/common';
|
|
1
|
+
import { type Provider } from '@nestjs/common';
|
|
2
2
|
export declare const inquirerProvider: Provider;
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.inquirerProvider = void 0;
|
|
4
|
-
const common_1 = require("@nestjs/common");
|
|
5
|
-
const inquirer_constants_1 = require("./inquirer-constants");
|
|
1
|
+
import { Scope } from '@nestjs/common';
|
|
2
|
+
import { INQUIRER } from './inquirer-constants.js';
|
|
6
3
|
const noop = () => { };
|
|
7
|
-
|
|
8
|
-
provide:
|
|
9
|
-
scope:
|
|
4
|
+
export const inquirerProvider = {
|
|
5
|
+
provide: INQUIRER,
|
|
6
|
+
scope: Scope.TRANSIENT,
|
|
10
7
|
useFactory: noop,
|
|
11
8
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { InjectionToken } from '@nestjs/common';
|
|
2
|
-
import { NestContainer } from './container';
|
|
3
|
-
import { InstanceWrapper } from './instance-wrapper';
|
|
1
|
+
import type { InjectionToken } from '@nestjs/common';
|
|
2
|
+
import { NestContainer } from './container.js';
|
|
3
|
+
import { InstanceWrapper } from './instance-wrapper.js';
|
|
4
4
|
export interface InstanceLink<T = any> {
|
|
5
5
|
token: InjectionToken;
|
|
6
6
|
wrapperRef: InstanceWrapper<T>;
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class InstanceLinksHost {
|
|
1
|
+
import { UnknownElementException } from '../errors/exceptions/unknown-element.exception.js';
|
|
2
|
+
import { isFunction } from '@nestjs/common/internal';
|
|
3
|
+
export class InstanceLinksHost {
|
|
4
|
+
container;
|
|
5
|
+
instanceLinks = new Map();
|
|
7
6
|
constructor(container) {
|
|
8
7
|
this.container = container;
|
|
9
|
-
this.instanceLinks = new Map();
|
|
10
8
|
this.initialize();
|
|
11
9
|
}
|
|
12
10
|
get(token, options = {}) {
|
|
13
11
|
const instanceLinksForGivenToken = this.instanceLinks.get(token);
|
|
14
12
|
if (!instanceLinksForGivenToken) {
|
|
15
|
-
throw new
|
|
13
|
+
throw new UnknownElementException(this.getInstanceNameByToken(token));
|
|
16
14
|
}
|
|
17
15
|
if (options.each) {
|
|
18
16
|
return instanceLinksForGivenToken;
|
|
@@ -21,7 +19,7 @@ class InstanceLinksHost {
|
|
|
21
19
|
? instanceLinksForGivenToken.find(item => item.moduleId === options.moduleId)
|
|
22
20
|
: instanceLinksForGivenToken[instanceLinksForGivenToken.length - 1];
|
|
23
21
|
if (!instanceLink) {
|
|
24
|
-
throw new
|
|
22
|
+
throw new UnknownElementException(this.getInstanceNameByToken(token));
|
|
25
23
|
}
|
|
26
24
|
return instanceLink;
|
|
27
25
|
}
|
|
@@ -50,7 +48,6 @@ class InstanceLinksHost {
|
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
50
|
getInstanceNameByToken(token) {
|
|
53
|
-
return
|
|
51
|
+
return isFunction(token) ? token?.name : token;
|
|
54
52
|
}
|
|
55
53
|
}
|
|
56
|
-
exports.InstanceLinksHost = InstanceLinksHost;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Logger, LoggerService } from '@nestjs/common';
|
|
2
|
-
import { GraphInspector } from '../inspector/graph-inspector';
|
|
3
|
-
import { NestContainer } from './container';
|
|
4
|
-
import { Injector } from './injector';
|
|
5
|
-
import { Module } from './module';
|
|
1
|
+
import { Logger, type LoggerService } from '@nestjs/common';
|
|
2
|
+
import { GraphInspector } from '../inspector/graph-inspector.js';
|
|
3
|
+
import { NestContainer } from './container.js';
|
|
4
|
+
import { Injector } from './injector.js';
|
|
5
|
+
import { Module } from './module.js';
|
|
6
6
|
export declare class InstanceLoader<TInjector extends Injector = Injector> {
|
|
7
7
|
protected readonly container: NestContainer;
|
|
8
8
|
protected readonly injector: TInjector;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { Logger } from '@nestjs/common';
|
|
2
|
+
import { MODULE_INIT_MESSAGE } from '../helpers/messages.js';
|
|
3
|
+
import { InternalCoreModule } from './internal-core-module/internal-core-module.js';
|
|
4
|
+
export class InstanceLoader {
|
|
5
|
+
container;
|
|
6
|
+
injector;
|
|
7
|
+
graphInspector;
|
|
8
|
+
logger;
|
|
9
|
+
constructor(container, injector, graphInspector, logger = new Logger(InstanceLoader.name, {
|
|
9
10
|
timestamp: true,
|
|
10
11
|
})) {
|
|
11
12
|
this.container = container;
|
|
@@ -42,7 +43,7 @@ class InstanceLoader {
|
|
|
42
43
|
await this.createInstancesOfControllers(moduleRef);
|
|
43
44
|
const { name } = moduleRef;
|
|
44
45
|
this.isModuleWhitelisted(name) &&
|
|
45
|
-
this.logger.log(
|
|
46
|
+
this.logger.log(MODULE_INIT_MESSAGE `${name}`);
|
|
46
47
|
}));
|
|
47
48
|
}
|
|
48
49
|
createPrototypesOfProviders(moduleRef) {
|
|
@@ -82,7 +83,6 @@ class InstanceLoader {
|
|
|
82
83
|
}));
|
|
83
84
|
}
|
|
84
85
|
isModuleWhitelisted(name) {
|
|
85
|
-
return name !==
|
|
86
|
+
return name !== InternalCoreModule.name;
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
|
-
exports.InstanceLoader = InstanceLoader;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { Module } from './module';
|
|
5
|
-
import { SettlementSignal } from './settlement-signal';
|
|
1
|
+
import type { FactoryProvider, InjectionToken } from '@nestjs/common';
|
|
2
|
+
import { type Provider, Scope, type Type } from '@nestjs/common';
|
|
3
|
+
import { type EnhancerSubtype } from '@nestjs/common/internal';
|
|
4
|
+
import { Module } from './module.js';
|
|
5
|
+
import { SettlementSignal } from './settlement-signal.js';
|
|
6
6
|
export declare const INSTANCE_METADATA_SYMBOL: unique symbol;
|
|
7
7
|
export declare const INSTANCE_ID_SYMBOL: unique symbol;
|
|
8
8
|
export interface HostComponentInfo {
|
|
@@ -52,6 +52,9 @@ export declare class InstanceWrapper<T = any> {
|
|
|
52
52
|
private transientMap?;
|
|
53
53
|
private isTreeStatic;
|
|
54
54
|
private isTreeDurable;
|
|
55
|
+
private _hierarchyLevel;
|
|
56
|
+
get hierarchyLevel(): number;
|
|
57
|
+
set hierarchyLevel(level: number);
|
|
55
58
|
/**
|
|
56
59
|
* The root inquirer reference. Present only if child instance wrapper
|
|
57
60
|
* is transient and has a parent inquirer.
|