@nexus-ioc/core 0.6.1 → 0.7.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/README.md +731 -1
- package/dist/cjs/browser.js +2 -2
- package/dist/cjs/browser.js.map +1 -1
- package/dist/cjs/core/child-module.js +32 -0
- package/dist/cjs/core/child-module.js.map +1 -0
- package/dist/cjs/core/graph/analyze-lazy-module.js +54 -0
- package/dist/cjs/core/graph/analyze-lazy-module.js.map +1 -0
- package/dist/cjs/core/graph/analyze-module.js +11 -0
- package/dist/cjs/core/graph/analyze-module.js.map +1 -1
- package/dist/cjs/core/graph/module-graph.js +685 -70
- package/dist/cjs/core/graph/module-graph.js.map +1 -1
- package/dist/cjs/core/injection/injection-context.js +29 -0
- package/dist/cjs/core/injection/injection-context.js.map +1 -0
- package/dist/cjs/core/lazy-module-loader.js +41 -0
- package/dist/cjs/core/lazy-module-loader.js.map +1 -0
- package/dist/cjs/core/module-ref.js +84 -0
- package/dist/cjs/core/module-ref.js.map +1 -0
- package/dist/cjs/core/modules/container.js +305 -17
- package/dist/cjs/core/modules/container.js.map +1 -1
- package/dist/cjs/core/modules/module-container-factory.js +2 -2
- package/dist/cjs/core/modules/module-container-factory.js.map +1 -1
- package/dist/cjs/core/modules/module-container.js +54 -16
- package/dist/cjs/core/modules/module-container.js.map +1 -1
- package/dist/cjs/core/modules/module-token-factory.js.map +1 -1
- package/dist/cjs/core/modules/modules-container.js +43 -3
- package/dist/cjs/core/modules/modules-container.js.map +1 -1
- package/dist/cjs/core/nexus-applications.browser.js +57 -15
- package/dist/cjs/core/nexus-applications.browser.js.map +1 -1
- package/dist/cjs/core/nexus-applications.js +440 -82
- package/dist/cjs/core/nexus-applications.js.map +1 -1
- package/dist/cjs/core/nexus-applications.server.js +57 -15
- package/dist/cjs/core/nexus-applications.server.js.map +1 -1
- package/dist/cjs/core/resolver/providers-container.js.map +1 -1
- package/dist/cjs/core/resolver/resolution-context.js +62 -0
- package/dist/cjs/core/resolver/resolution-context.js.map +1 -0
- package/dist/cjs/core/resolver/resolver.js +523 -99
- package/dist/cjs/core/resolver/resolver.js.map +1 -1
- package/dist/cjs/decorators/inject.js +6 -3
- package/dist/cjs/decorators/inject.js.map +1 -1
- package/dist/cjs/decorators/injectable.js +0 -7
- package/dist/cjs/decorators/injectable.js.map +1 -1
- package/dist/cjs/decorators/{nsModule.js → module.js} +9 -7
- package/dist/cjs/decorators/module.js.map +1 -0
- package/dist/cjs/errors/bootstrap-error.js +47 -0
- package/dist/cjs/errors/bootstrap-error.js.map +1 -0
- package/dist/cjs/errors/child-errors.js +21 -0
- package/dist/cjs/errors/child-errors.js.map +1 -0
- package/dist/cjs/errors/index.js +24 -0
- package/dist/cjs/errors/index.js.map +1 -0
- package/dist/cjs/errors/injection-errors.js +25 -0
- package/dist/cjs/errors/injection-errors.js.map +1 -0
- package/dist/cjs/errors/lazy-module-errors.js +26 -0
- package/dist/cjs/errors/lazy-module-errors.js.map +1 -0
- package/dist/cjs/errors/provider-errors.js +95 -0
- package/dist/cjs/errors/provider-errors.js.map +1 -0
- package/dist/cjs/index.js +30 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces/index.js +1 -0
- package/dist/cjs/interfaces/index.js.map +1 -1
- package/dist/cjs/interfaces/modules/index.js +1 -0
- package/dist/cjs/interfaces/modules/index.js.map +1 -1
- package/dist/cjs/interfaces/modules/module-graph.interface.js +2 -0
- package/dist/cjs/interfaces/modules/module-graph.interface.js.map +1 -1
- package/dist/cjs/interfaces/modules/parent-link.interface.js +3 -0
- package/dist/cjs/interfaces/modules/parent-link.interface.js.map +1 -0
- package/dist/cjs/interfaces/on-module-destroy.interface.js +3 -0
- package/dist/cjs/interfaces/on-module-destroy.interface.js.map +1 -0
- package/dist/cjs/interfaces/scope.interface.js +2 -55
- package/dist/cjs/interfaces/scope.interface.js.map +1 -1
- package/dist/cjs/interfaces/validate-module-keys.js +2 -0
- package/dist/cjs/interfaces/validate-module-keys.js.map +1 -1
- package/dist/cjs/internal.js +9 -0
- package/dist/cjs/internal.js.map +1 -0
- package/dist/cjs/server.js +2 -2
- package/dist/cjs/server.js.map +1 -1
- package/dist/cjs/utils/forward-ref.js +14 -0
- package/dist/cjs/utils/forward-ref.js.map +1 -0
- package/dist/cjs/utils/helpers.js +14 -4
- package/dist/cjs/utils/helpers.js.map +1 -1
- package/dist/cjs/utils/lazy-module.js +33 -0
- package/dist/cjs/utils/lazy-module.js.map +1 -0
- package/dist/esm/browser.js +1 -1
- package/dist/esm/browser.js.map +1 -1
- package/dist/esm/core/child-module.js +29 -0
- package/dist/esm/core/child-module.js.map +1 -0
- package/dist/esm/core/graph/analyze-lazy-module.js +50 -0
- package/dist/esm/core/graph/analyze-lazy-module.js.map +1 -0
- package/dist/esm/core/graph/analyze-module.js +11 -0
- package/dist/esm/core/graph/analyze-module.js.map +1 -1
- package/dist/esm/core/graph/module-graph.js +686 -71
- package/dist/esm/core/graph/module-graph.js.map +1 -1
- package/dist/esm/core/injection/injection-context.js +25 -0
- package/dist/esm/core/injection/injection-context.js.map +1 -0
- package/dist/esm/core/lazy-module-loader.js +36 -0
- package/dist/esm/core/lazy-module-loader.js.map +1 -0
- package/dist/esm/core/module-ref.js +80 -0
- package/dist/esm/core/module-ref.js.map +1 -0
- package/dist/esm/core/modules/container.js +305 -17
- package/dist/esm/core/modules/container.js.map +1 -1
- package/dist/esm/core/modules/module-container-factory.js +2 -2
- package/dist/esm/core/modules/module-container-factory.js.map +1 -1
- package/dist/esm/core/modules/module-container.js +55 -17
- package/dist/esm/core/modules/module-container.js.map +1 -1
- package/dist/esm/core/modules/module-token-factory.js.map +1 -1
- package/dist/esm/core/modules/modules-container.js +43 -3
- package/dist/esm/core/modules/modules-container.js.map +1 -1
- package/dist/esm/core/nexus-applications.browser.js +55 -13
- package/dist/esm/core/nexus-applications.browser.js.map +1 -1
- package/dist/esm/core/nexus-applications.js +439 -81
- package/dist/esm/core/nexus-applications.js.map +1 -1
- package/dist/esm/core/nexus-applications.server.js +55 -13
- package/dist/esm/core/nexus-applications.server.js.map +1 -1
- package/dist/esm/core/resolver/providers-container.js.map +1 -1
- package/dist/esm/core/resolver/resolution-context.js +58 -0
- package/dist/esm/core/resolver/resolution-context.js.map +1 -0
- package/dist/esm/core/resolver/resolver.js +524 -100
- package/dist/esm/core/resolver/resolver.js.map +1 -1
- package/dist/esm/decorators/inject.js +6 -3
- package/dist/esm/decorators/inject.js.map +1 -1
- package/dist/esm/decorators/injectable.js +0 -7
- package/dist/esm/decorators/injectable.js.map +1 -1
- package/dist/esm/decorators/{nsModule.js → module.js} +8 -6
- package/dist/esm/decorators/module.js.map +1 -0
- package/dist/esm/errors/bootstrap-error.js +42 -0
- package/dist/esm/errors/bootstrap-error.js.map +1 -0
- package/dist/esm/errors/child-errors.js +17 -0
- package/dist/esm/errors/child-errors.js.map +1 -0
- package/dist/esm/errors/index.js +6 -0
- package/dist/esm/errors/index.js.map +1 -0
- package/dist/esm/errors/injection-errors.js +20 -0
- package/dist/esm/errors/injection-errors.js.map +1 -0
- package/dist/esm/errors/lazy-module-errors.js +21 -0
- package/dist/esm/errors/lazy-module-errors.js.map +1 -0
- package/dist/esm/errors/provider-errors.js +84 -0
- package/dist/esm/errors/provider-errors.js.map +1 -0
- package/dist/esm/index.js +9 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces/index.js +1 -0
- package/dist/esm/interfaces/index.js.map +1 -1
- package/dist/esm/interfaces/modules/index.js +1 -0
- package/dist/esm/interfaces/modules/index.js.map +1 -1
- package/dist/esm/interfaces/modules/module-graph.interface.js +2 -0
- package/dist/esm/interfaces/modules/module-graph.interface.js.map +1 -1
- package/dist/esm/interfaces/modules/parent-link.interface.js +2 -0
- package/dist/esm/interfaces/modules/parent-link.interface.js.map +1 -0
- package/dist/esm/interfaces/on-module-destroy.interface.js +2 -0
- package/dist/esm/interfaces/on-module-destroy.interface.js.map +1 -0
- package/dist/esm/interfaces/scope.interface.js +1 -55
- package/dist/esm/interfaces/scope.interface.js.map +1 -1
- package/dist/esm/interfaces/validate-module-keys.js +2 -0
- package/dist/esm/interfaces/validate-module-keys.js.map +1 -1
- package/dist/esm/internal.js +3 -0
- package/dist/esm/internal.js.map +1 -0
- package/dist/esm/server.js +1 -1
- package/dist/esm/server.js.map +1 -1
- package/dist/esm/utils/forward-ref.js +10 -0
- package/dist/esm/utils/forward-ref.js.map +1 -0
- package/dist/esm/utils/helpers.js +14 -4
- package/dist/esm/utils/helpers.js.map +1 -1
- package/dist/esm/utils/lazy-module.js +29 -0
- package/dist/esm/utils/lazy-module.js.map +1 -0
- package/dist/types/browser.d.ts +1 -1
- package/dist/types/core/child-module.d.ts +8 -0
- package/dist/types/core/graph/analyze-lazy-module.d.ts +28 -0
- package/dist/types/core/graph/analyze-module.d.ts +4 -2
- package/dist/types/core/graph/analyze-provider.d.ts +4 -4
- package/dist/types/core/graph/module-graph.d.ts +200 -7
- package/dist/types/core/graph/providers/analyze-class-provider.d.ts +1 -1
- package/dist/types/core/graph/providers/analyze-factory-provider.d.ts +2 -2
- package/dist/types/core/graph/providers/analyze-value-provider.d.ts +1 -1
- package/dist/types/core/injection/injection-context.d.ts +29 -0
- package/dist/types/core/lazy-module-loader.d.ts +17 -0
- package/dist/types/core/module-ref.d.ts +34 -0
- package/dist/types/core/modules/container.d.ts +134 -18
- package/dist/types/core/modules/module-container-factory.d.ts +3 -3
- package/dist/types/core/modules/module-container.d.ts +44 -5
- package/dist/types/core/modules/module-token-factory.d.ts +2 -2
- package/dist/types/core/modules/modules-container.d.ts +23 -4
- package/dist/types/core/nexus-applications.browser.d.ts +30 -8
- package/dist/types/core/nexus-applications.d.ts +219 -55
- package/dist/types/core/nexus-applications.server.d.ts +30 -8
- package/dist/types/core/resolver/providers-container.d.ts +2 -2
- package/dist/types/core/resolver/resolution-context.d.ts +22 -0
- package/dist/types/core/resolver/resolver.d.ts +122 -4
- package/dist/types/decorators/inject.d.ts +9 -5
- package/dist/types/decorators/injectable.d.ts +0 -7
- package/dist/types/decorators/{nsModule.d.ts → module.d.ts} +6 -5
- package/dist/types/errors/bootstrap-error.d.ts +6 -0
- package/dist/types/errors/child-errors.d.ts +10 -0
- package/dist/types/errors/index.d.ts +5 -0
- package/dist/types/errors/injection-errors.d.ts +11 -0
- package/dist/types/errors/lazy-module-errors.d.ts +12 -0
- package/dist/types/errors/provider-errors.d.ts +47 -0
- package/dist/types/index.d.ts +13 -4
- package/dist/types/interfaces/abstract.interface.d.ts +1 -3
- package/dist/types/interfaces/dynamic-module.interface.d.ts +7 -5
- package/dist/types/interfaces/index.d.ts +1 -0
- package/dist/types/interfaces/injection-token.interface.d.ts +1 -3
- package/dist/types/interfaces/module-metadata.interface.d.ts +12 -4
- package/dist/types/interfaces/module-types.interface.d.ts +21 -24
- package/dist/types/interfaces/modules/container.interface.d.ts +10 -4
- package/dist/types/interfaces/modules/index.d.ts +1 -0
- package/dist/types/interfaces/modules/module-container-factory.interface.d.ts +2 -2
- package/dist/types/interfaces/modules/module-graph.interface.d.ts +85 -12
- package/dist/types/interfaces/modules/module-token-factory.interface.d.ts +2 -2
- package/dist/types/interfaces/modules/modules-container.interface.d.ts +5 -4
- package/dist/types/interfaces/modules/parent-link.interface.d.ts +12 -0
- package/dist/types/interfaces/nexus-application.interface.d.ts +49 -6
- package/dist/types/interfaces/on-module-destroy.interface.d.ts +3 -0
- package/dist/types/interfaces/plugins/scanner-plugin.interface.d.ts +1 -1
- package/dist/types/interfaces/scope.interface.d.ts +1 -54
- package/dist/types/interfaces/validate-module-keys.d.ts +1 -0
- package/dist/types/internal.d.ts +3 -0
- package/dist/types/server.d.ts +1 -1
- package/dist/types/utils/forward-ref.d.ts +5 -0
- package/dist/types/utils/helpers.d.ts +8 -8
- package/dist/types/utils/lazy-module.d.ts +20 -0
- package/package.json +23 -7
- package/dist/cjs/decorators/nsModule.js.map +0 -1
- package/dist/esm/decorators/nsModule.js.map +0 -1
- package/dist/tsconfig.cjs.tsbuildinfo +0 -1
- package/dist/tsconfig.esm.tsbuildinfo +0 -1
|
@@ -3,7 +3,7 @@ import type { ModuleMetadata } from "../interfaces";
|
|
|
3
3
|
/**
|
|
4
4
|
* Defines a module in the application.
|
|
5
5
|
*
|
|
6
|
-
* A module is a class annotated with @
|
|
6
|
+
* A module is a class annotated with @Module() decorator that organizes
|
|
7
7
|
* the application structure. Modules can:
|
|
8
8
|
* - Declare providers that will be instantiated by the container
|
|
9
9
|
* - Import other modules to use their exported providers
|
|
@@ -13,20 +13,21 @@ import type { ModuleMetadata } from "../interfaces";
|
|
|
13
13
|
* @param metadata.imports - Modules whose exported providers should be available in this module
|
|
14
14
|
* @param metadata.providers - Providers that belong to this module
|
|
15
15
|
* @param metadata.exports - Providers or modules to export (make available to importing modules)
|
|
16
|
+
* @param metadata.children - Modules (or lazy refs) that may be created as child containers; not compiled into this graph
|
|
16
17
|
* @returns A class decorator
|
|
17
18
|
* @throws {Error} If invalid metadata keys are provided
|
|
18
19
|
*
|
|
19
20
|
* @example
|
|
20
21
|
* ```typescript
|
|
21
22
|
* // Basic module
|
|
22
|
-
* @
|
|
23
|
+
* @Module({
|
|
23
24
|
* providers: [UserService, UserRepository],
|
|
24
25
|
* exports: [UserService]
|
|
25
26
|
* })
|
|
26
27
|
* class UserModule {}
|
|
27
28
|
*
|
|
28
29
|
* // Module with imports
|
|
29
|
-
* @
|
|
30
|
+
* @Module({
|
|
30
31
|
* imports: [DatabaseModule, LoggerModule],
|
|
31
32
|
* providers: [ProductService],
|
|
32
33
|
* exports: [ProductService]
|
|
@@ -34,11 +35,11 @@ import type { ModuleMetadata } from "../interfaces";
|
|
|
34
35
|
* class ProductModule {}
|
|
35
36
|
*
|
|
36
37
|
* // Root module
|
|
37
|
-
* @
|
|
38
|
+
* @Module({
|
|
38
39
|
* imports: [UserModule, ProductModule],
|
|
39
40
|
* providers: [AppService]
|
|
40
41
|
* })
|
|
41
42
|
* class AppModule {}
|
|
42
43
|
* ```
|
|
43
44
|
*/
|
|
44
|
-
export declare function
|
|
45
|
+
export declare function Module(metadata: ModuleMetadata): ClassDecorator;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `createChild()` was called with a module that no module of the parent
|
|
3
|
+
* graph lists in `@Module({ children })`, or (`reason: "unloaded"`) the
|
|
4
|
+
* lazy module declaring it was unloaded while the child was being created.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ChildModuleNotDeclaredError extends Error {
|
|
7
|
+
readonly moduleName: string;
|
|
8
|
+
readonly reason: "not-declared" | "unloaded";
|
|
9
|
+
constructor(moduleName: string, reason?: "not-declared" | "unloaded");
|
|
10
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { BootstrapError, formatGraphErrors } from "./bootstrap-error";
|
|
2
|
+
export { ChildModuleNotDeclaredError } from "./child-errors";
|
|
3
|
+
export { CircularInjectionError, InjectionContextError, } from "./injection-errors";
|
|
4
|
+
export { LazyModuleGraphError, LazyModuleLoadError, } from "./lazy-module-errors";
|
|
5
|
+
export { AsyncFactoryError, ContainerClosedError, formatToken, InvalidScopeError, ProviderNotFoundError, ProviderNotInstantiatedError, ProviderScopeError, ProviderUnloadedError, } from "./provider-errors";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ProviderToken } from "../interfaces";
|
|
2
|
+
/** inject() was called while no provider was being created. */
|
|
3
|
+
export declare class InjectionContextError extends Error {
|
|
4
|
+
readonly token: ProviderToken;
|
|
5
|
+
constructor(token: ProviderToken);
|
|
6
|
+
}
|
|
7
|
+
/** A dependency cycle that passes through inject() or the synchronous creation path. */
|
|
8
|
+
export declare class CircularInjectionError extends Error {
|
|
9
|
+
readonly path: ProviderToken[];
|
|
10
|
+
constructor(path: ProviderToken[]);
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { GraphError } from "../interfaces";
|
|
2
|
+
/** The loader rejected or returned something that is not a @Module() class. */
|
|
3
|
+
export declare class LazyModuleLoadError extends Error {
|
|
4
|
+
readonly lazyModuleName: string;
|
|
5
|
+
constructor(lazyModuleName: string, reason: string);
|
|
6
|
+
}
|
|
7
|
+
/** The loaded module compiled with graph errors; the segment was rolled back. */
|
|
8
|
+
export declare class LazyModuleGraphError extends Error {
|
|
9
|
+
readonly lazyModuleName: string;
|
|
10
|
+
readonly errors: GraphError[];
|
|
11
|
+
constructor(lazyModuleName: string, errors: GraphError[]);
|
|
12
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ProviderToken } from "../interfaces";
|
|
2
|
+
import { Scope } from "../interfaces";
|
|
3
|
+
export declare function formatToken(token: ProviderToken): string;
|
|
4
|
+
/** No provider with this token exists in the container or any parent. */
|
|
5
|
+
export declare class ProviderNotFoundError extends Error {
|
|
6
|
+
readonly token: ProviderToken;
|
|
7
|
+
readonly requestedBy?: ProviderToken | undefined;
|
|
8
|
+
constructor(token: ProviderToken, requestedBy?: ProviderToken | undefined);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The singleton exists but has not been created yet (lazy mode or not
|
|
12
|
+
* loaded), or inject() met it while another resolution is still creating it.
|
|
13
|
+
*/
|
|
14
|
+
export declare class ProviderNotInstantiatedError extends Error {
|
|
15
|
+
readonly token: ProviderToken;
|
|
16
|
+
constructor(token: ProviderToken, reason?: "not-created" | "creation-in-flight");
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The provider's module was unloaded while `resolve()` was still creating
|
|
20
|
+
* it. The half-finished instance was destroyed instead of cached; load the
|
|
21
|
+
* module again and resolve the provider anew.
|
|
22
|
+
*/
|
|
23
|
+
export declare class ProviderUnloadedError extends Error {
|
|
24
|
+
readonly token: ProviderToken;
|
|
25
|
+
constructor(token: ProviderToken);
|
|
26
|
+
}
|
|
27
|
+
/** get() only serves singletons; Transient providers are created per call. */
|
|
28
|
+
export declare class ProviderScopeError extends Error {
|
|
29
|
+
readonly token: ProviderToken;
|
|
30
|
+
readonly scope: Scope;
|
|
31
|
+
constructor(token: ProviderToken, scope: Scope);
|
|
32
|
+
}
|
|
33
|
+
/** A provider declares a scope that is not a member of `Scope`. */
|
|
34
|
+
export declare class InvalidScopeError extends Error {
|
|
35
|
+
readonly token: ProviderToken;
|
|
36
|
+
readonly scope: unknown;
|
|
37
|
+
constructor(token: ProviderToken, scope: unknown);
|
|
38
|
+
}
|
|
39
|
+
/** The application was closed; it can no longer provide instances. */
|
|
40
|
+
export declare class ContainerClosedError extends Error {
|
|
41
|
+
constructor();
|
|
42
|
+
}
|
|
43
|
+
/** A useFactory returned a promise; factories must be synchronous. */
|
|
44
|
+
export declare class AsyncFactoryError extends Error {
|
|
45
|
+
readonly token: ProviderToken;
|
|
46
|
+
constructor(token: ProviderToken);
|
|
47
|
+
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
export { ContainerNotCompiledError } from "@nexus-ioc/shared";
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
1
|
+
export { ContainerNotCompiledError, InjectionToken } from "@nexus-ioc/shared";
|
|
2
|
+
export type { InjectOptions } from "./core/injection/injection-context";
|
|
3
|
+
export { inject } from "./core/injection/injection-context";
|
|
4
|
+
export { LazyModuleLoader } from "./core/lazy-module-loader";
|
|
5
|
+
export type { ModuleRefGetOptions } from "./core/module-ref";
|
|
6
|
+
export { ModuleRef } from "./core/module-ref";
|
|
7
|
+
export { NexusApplication } from "./core/nexus-applications";
|
|
4
8
|
export { Global } from "./decorators/global";
|
|
5
9
|
export { Inject } from "./decorators/inject";
|
|
6
10
|
export { Injectable } from "./decorators/injectable";
|
|
7
|
-
export {
|
|
11
|
+
export { Module } from "./decorators/module";
|
|
8
12
|
export { Optional } from "./decorators/optional";
|
|
13
|
+
export { AsyncFactoryError, BootstrapError, ChildModuleNotDeclaredError, CircularInjectionError, ContainerClosedError, InjectionContextError, InvalidScopeError, LazyModuleGraphError, LazyModuleLoadError, ProviderNotFoundError, ProviderNotInstantiatedError, ProviderScopeError, ProviderUnloadedError, } from "./errors";
|
|
9
14
|
export * from "./interfaces";
|
|
15
|
+
export type { ForwardRef } from "./utils/forward-ref";
|
|
16
|
+
export { forwardRef } from "./utils/forward-ref";
|
|
10
17
|
export * from "./utils/helpers";
|
|
18
|
+
export type { LazyModuleOptions } from "./utils/lazy-module";
|
|
19
|
+
export { isLazyModule, lazy } from "./utils/lazy-module";
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { LazyModule } from "@nexus-ioc/shared";
|
|
2
|
+
import type { ProviderToken } from "./injection-token.interface";
|
|
3
|
+
import type { Provider } from "./module-types.interface";
|
|
4
|
+
import type { Type } from "./type.interface";
|
|
3
5
|
export interface DynamicModule {
|
|
4
|
-
module:
|
|
6
|
+
module: Type & {
|
|
5
7
|
forRoot?: () => DynamicModule;
|
|
6
8
|
forRootAsync?: () => DynamicModule;
|
|
7
9
|
forFeature?: () => DynamicModule;
|
|
8
10
|
forFeatureAsync?: () => DynamicModule;
|
|
9
11
|
};
|
|
10
12
|
providers?: Provider[];
|
|
11
|
-
exports?:
|
|
12
|
-
imports?: (
|
|
13
|
+
exports?: ProviderToken[];
|
|
14
|
+
imports?: (Type | DynamicModule | LazyModule)[];
|
|
13
15
|
}
|
|
@@ -7,6 +7,7 @@ export * from "./module-metadata.interface";
|
|
|
7
7
|
export * from "./module-types.interface";
|
|
8
8
|
export * from "./modules";
|
|
9
9
|
export * from "./nexus-application.interface";
|
|
10
|
+
export * from "./on-module-destroy.interface";
|
|
10
11
|
export * from "./on-module-init.interface";
|
|
11
12
|
export * from "./plugins";
|
|
12
13
|
export * from "./scope.interface";
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
import type { LazyModule } from "@nexus-ioc/shared";
|
|
1
2
|
import type { DynamicModule } from "./dynamic-module.interface";
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
3
|
+
import type { ProviderToken } from "./injection-token.interface";
|
|
4
|
+
import type { Provider } from "./module-types.interface";
|
|
5
|
+
import type { Type } from "./type.interface";
|
|
6
|
+
export type { LazyModule } from "@nexus-ioc/shared";
|
|
4
7
|
export interface ModuleMetadata {
|
|
5
|
-
imports?: (
|
|
6
|
-
exports?: (
|
|
8
|
+
imports?: (Type | DynamicModule | LazyModule)[];
|
|
9
|
+
exports?: (ProviderToken | Type)[];
|
|
7
10
|
providers?: Provider[];
|
|
11
|
+
/**
|
|
12
|
+
* Modules that are not part of this graph but may later be instantiated as
|
|
13
|
+
* child containers. Static declaration only; never compiled into the parent.
|
|
14
|
+
*/
|
|
15
|
+
children?: (Type | LazyModule)[];
|
|
8
16
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ForwardRef } from "../utils/forward-ref";
|
|
2
|
+
import type { ProviderToken } from "./injection-token.interface";
|
|
2
3
|
import type { Scope } from "./scope.interface";
|
|
3
4
|
import type { Type } from "./type.interface";
|
|
4
|
-
/**
|
|
5
|
-
* Represents a module class.
|
|
6
|
-
*/
|
|
7
|
-
export type Module = Type;
|
|
8
5
|
/**
|
|
9
6
|
* Represents a provider that can be registered in a module.
|
|
10
7
|
*
|
|
@@ -19,26 +16,26 @@ export type Module = Type;
|
|
|
19
16
|
* @example
|
|
20
17
|
* ```typescript
|
|
21
18
|
* // Class provider (shorthand)
|
|
22
|
-
* @
|
|
19
|
+
* @Module({
|
|
23
20
|
* providers: [UserService]
|
|
24
21
|
* })
|
|
25
22
|
*
|
|
26
23
|
* // ClassProvider (explicit)
|
|
27
|
-
* @
|
|
24
|
+
* @Module({
|
|
28
25
|
* providers: [
|
|
29
26
|
* { provide: UserService, useClass: MockUserService }
|
|
30
27
|
* ]
|
|
31
28
|
* })
|
|
32
29
|
*
|
|
33
30
|
* // ValueProvider
|
|
34
|
-
* @
|
|
31
|
+
* @Module({
|
|
35
32
|
* providers: [
|
|
36
33
|
* { provide: 'CONFIG', useValue: { apiUrl: 'https://api.example.com' } }
|
|
37
34
|
* ]
|
|
38
35
|
* })
|
|
39
36
|
*
|
|
40
37
|
* // FactoryProvider
|
|
41
|
-
* @
|
|
38
|
+
* @Module({
|
|
42
39
|
* providers: [
|
|
43
40
|
* {
|
|
44
41
|
* provide: 'DATABASE',
|
|
@@ -62,7 +59,7 @@ export type Provider<T = any> = ClassProvider<T> | ValueProvider<T> | FactoryPro
|
|
|
62
59
|
*
|
|
63
60
|
* @example
|
|
64
61
|
* ```typescript
|
|
65
|
-
* @
|
|
62
|
+
* @Module({
|
|
66
63
|
* providers: [
|
|
67
64
|
* // Provide MockUserService when UserService is requested
|
|
68
65
|
* {
|
|
@@ -76,7 +73,7 @@ export type Provider<T = any> = ClassProvider<T> | ValueProvider<T> | FactoryPro
|
|
|
76
73
|
*/
|
|
77
74
|
export interface ClassProvider<T = any> {
|
|
78
75
|
/** The injection token to register this provider under */
|
|
79
|
-
provide:
|
|
76
|
+
provide: ProviderToken;
|
|
80
77
|
/** The class to instantiate */
|
|
81
78
|
useClass: Type<T>;
|
|
82
79
|
/** The lifecycle scope (default: Singleton) */
|
|
@@ -97,7 +94,7 @@ export interface ClassProvider<T = any> {
|
|
|
97
94
|
*
|
|
98
95
|
* @example
|
|
99
96
|
* ```typescript
|
|
100
|
-
* @
|
|
97
|
+
* @Module({
|
|
101
98
|
* providers: [
|
|
102
99
|
* { provide: 'API_URL', useValue: 'https://api.example.com' },
|
|
103
100
|
* { provide: 'MAX_RETRIES', useValue: 3 },
|
|
@@ -109,7 +106,7 @@ export interface ClassProvider<T = any> {
|
|
|
109
106
|
*/
|
|
110
107
|
export interface ValueProvider<T = any> {
|
|
111
108
|
/** The injection token to register this provider under */
|
|
112
|
-
provide:
|
|
109
|
+
provide: ProviderToken;
|
|
113
110
|
/** The value to provide */
|
|
114
111
|
useValue: T;
|
|
115
112
|
}
|
|
@@ -120,21 +117,21 @@ export interface ValueProvider<T = any> {
|
|
|
120
117
|
* - The value requires complex initialization logic
|
|
121
118
|
* - The value depends on other providers
|
|
122
119
|
* - You need to create the value dynamically
|
|
123
|
-
* - You
|
|
120
|
+
* - You need to compute the value synchronously from other providers
|
|
121
|
+
*
|
|
122
|
+
* The factory must return the value synchronously. Returning a promise throws
|
|
123
|
+
* `AsyncFactoryError`; move async setup into `onModuleInit` of the provided
|
|
124
|
+
* class, or create the value before bootstrap and register it with `useValue`.
|
|
124
125
|
*
|
|
125
126
|
* @template T - The type of value the factory creates
|
|
126
127
|
*
|
|
127
128
|
* @example
|
|
128
129
|
* ```typescript
|
|
129
|
-
* @
|
|
130
|
+
* @Module({
|
|
130
131
|
* providers: [
|
|
131
132
|
* {
|
|
132
133
|
* provide: 'DATABASE',
|
|
133
|
-
* useFactory:
|
|
134
|
-
* const db = await createConnection(config.dbUrl);
|
|
135
|
-
* await db.migrate();
|
|
136
|
-
* return db;
|
|
137
|
-
* },
|
|
134
|
+
* useFactory: (config: Config) => createDatabase(config),
|
|
138
135
|
* inject: ['CONFIG'],
|
|
139
136
|
* scope: Scope.Singleton
|
|
140
137
|
* },
|
|
@@ -148,11 +145,11 @@ export interface ValueProvider<T = any> {
|
|
|
148
145
|
*/
|
|
149
146
|
export interface FactoryProvider<T = any> {
|
|
150
147
|
/** The injection token to register this provider under */
|
|
151
|
-
provide:
|
|
152
|
-
/**
|
|
153
|
-
useFactory: (...args: any[]) => T
|
|
148
|
+
provide: ProviderToken;
|
|
149
|
+
/** Synchronous factory that creates the value; a returned promise throws AsyncFactoryError */
|
|
150
|
+
useFactory: (...args: any[]) => T;
|
|
154
151
|
/** Tokens of dependencies to inject into the factory function */
|
|
155
|
-
inject?:
|
|
152
|
+
inject?: (ProviderToken | ForwardRef)[];
|
|
156
153
|
/** The lifecycle scope (default: Singleton) */
|
|
157
154
|
scope?: Scope;
|
|
158
155
|
}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import type { ContainerBaseInterface } from "@nexus-ioc/shared";
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
1
|
+
import type { ContainerBaseInterface, LazyModule } from "@nexus-ioc/shared";
|
|
2
|
+
import type { DynamicModule } from "../dynamic-module.interface";
|
|
3
|
+
import type { Type } from "../type.interface";
|
|
4
|
+
import type { GraphSegment, ModuleGraphInterface, UnloadResult } from "./module-graph.interface";
|
|
5
|
+
import type { ParentLink } from "./parent-link.interface";
|
|
4
6
|
export type { ContainerBaseInterface } from "@nexus-ioc/shared";
|
|
5
7
|
export interface ContainerInterface extends ContainerBaseInterface {
|
|
6
|
-
run(rootModule:
|
|
8
|
+
run(rootModule: Type | DynamicModule, internalModules?: DynamicModule[], options?: {
|
|
9
|
+
link?: ParentLink;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
load(lazyModule: LazyModule): Promise<GraphSegment>;
|
|
12
|
+
unload(lazyModule: LazyModule): Promise<UnloadResult>;
|
|
7
13
|
graph: ModuleGraphInterface;
|
|
8
14
|
}
|
|
@@ -4,4 +4,5 @@ export * from "./module-container-factory.interface";
|
|
|
4
4
|
export * from "./module-graph.interface";
|
|
5
5
|
export * from "./module-token-factory.interface";
|
|
6
6
|
export * from "./modules-container.interface";
|
|
7
|
+
export * from "./parent-link.interface";
|
|
7
8
|
export * from "./provider-token-factory.interface";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { DynamicModule } from "../dynamic-module.interface";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Type } from "../type.interface";
|
|
3
3
|
import type { ContainerBaseInterface } from "./container.interface";
|
|
4
4
|
import type { ModuleContainerInterface } from "./module-container.interface";
|
|
5
5
|
export interface ModuleContainerFactoryInterface {
|
|
6
|
-
create(module:
|
|
6
|
+
create(module: Type | DynamicModule, container: ContainerBaseInterface): Promise<ModuleContainerInterface>;
|
|
7
7
|
}
|
|
@@ -1,39 +1,112 @@
|
|
|
1
|
-
import type { GraphError } from "@nexus-ioc/shared";
|
|
1
|
+
import type { GraphError, LazyModule, ModuleContainerInterface } from "@nexus-ioc/shared";
|
|
2
|
+
import type { AnalyzeLazyModule } from "../../core/graph/analyze-lazy-module";
|
|
2
3
|
import type { AnalyzeModule } from "../../core/graph/analyze-module";
|
|
3
4
|
import type { AnalyzeProvider } from "../../core/graph/analyze-provider";
|
|
4
|
-
import type {
|
|
5
|
+
import type { ProviderToken } from "../injection-token.interface";
|
|
6
|
+
import type { Type } from "../type.interface";
|
|
5
7
|
export type { GraphError } from "@nexus-ioc/shared";
|
|
6
8
|
export declare enum NodeTypeEnum {
|
|
7
9
|
MODULE = "module",
|
|
8
|
-
PROVIDER = "provider"
|
|
10
|
+
PROVIDER = "provider",
|
|
11
|
+
LAZY = "lazy"
|
|
9
12
|
}
|
|
10
13
|
export declare enum EdgeTypeEnum {
|
|
11
14
|
IMPORT = "import",
|
|
12
15
|
EXPORT = "export",
|
|
13
16
|
PROVIDER = "provider",
|
|
14
|
-
DEPENDENCY = "dependency"
|
|
17
|
+
DEPENDENCY = "dependency",
|
|
18
|
+
LAZY = "lazy"
|
|
15
19
|
}
|
|
16
|
-
export type Node = AnalyzeModule | AnalyzeProvider;
|
|
20
|
+
export type Node = AnalyzeModule | AnalyzeProvider | AnalyzeLazyModule;
|
|
17
21
|
export type Edge = {
|
|
18
22
|
type: EdgeTypeEnum;
|
|
19
|
-
source:
|
|
20
|
-
target:
|
|
23
|
+
source: ProviderToken;
|
|
24
|
+
target: ProviderToken;
|
|
21
25
|
metadata: {
|
|
22
26
|
index?: number;
|
|
23
27
|
key?: string;
|
|
24
|
-
inject?: "constructor" | "property";
|
|
28
|
+
inject?: "constructor" | "property" | "runtime";
|
|
25
29
|
lazy?: boolean;
|
|
26
30
|
isCircular?: boolean;
|
|
27
31
|
unreached?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* The dependency is satisfied by the parent container chain (a child
|
|
34
|
+
* graph only); its target is not resolved in this graph.
|
|
35
|
+
*/
|
|
36
|
+
external?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* An `@Optional()` dependency whose target was not visible from the
|
|
39
|
+
* source's module when the edge was compiled (it may not have existed
|
|
40
|
+
* yet). Set only when true. The resolver injects the target only
|
|
41
|
+
* while it exists and is visible from the source's module.
|
|
42
|
+
*/
|
|
43
|
+
lateBound?: boolean;
|
|
28
44
|
};
|
|
29
45
|
};
|
|
46
|
+
export interface ModuleGraphOptions {
|
|
47
|
+
/**
|
|
48
|
+
* Whether the parent container chain can provide `token`. Consulted only
|
|
49
|
+
* when a dependency is not visible locally.
|
|
50
|
+
*/
|
|
51
|
+
externalLookup?: (token: ProviderToken) => boolean;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The part of the graph added by a single lazy module load.
|
|
55
|
+
* A non-empty `errors` list means the segment was rolled back and none of
|
|
56
|
+
* its nodes or edges remain in the graph.
|
|
57
|
+
*/
|
|
58
|
+
export interface GraphSegment {
|
|
59
|
+
lazyModule: LazyModule;
|
|
60
|
+
moduleContainer: ModuleContainerInterface;
|
|
61
|
+
/** Module node ids added by this segment. */
|
|
62
|
+
moduleTokens: string[];
|
|
63
|
+
/** Provider node ids added by this segment. */
|
|
64
|
+
providerTokens: ProviderToken[];
|
|
65
|
+
errors: GraphError[];
|
|
66
|
+
}
|
|
67
|
+
/** What `ModuleGraph.unloadSegment` removed from the graph. */
|
|
68
|
+
export interface SegmentUnloadResult {
|
|
69
|
+
destroyedModules: string[];
|
|
70
|
+
destroyedProviders: ProviderToken[];
|
|
71
|
+
}
|
|
72
|
+
/** What unloading a lazy module did. */
|
|
73
|
+
export interface UnloadResult extends SegmentUnloadResult {
|
|
74
|
+
/**
|
|
75
|
+
* Child applications this unload started closing because the module
|
|
76
|
+
* that declared them in `@Module({ children })` was destroyed. A child
|
|
77
|
+
* whose close failed still counts; a child that was already closing
|
|
78
|
+
* (its own `close()`) does not, though the unload still waits for it.
|
|
79
|
+
*/
|
|
80
|
+
closedChildren: number;
|
|
81
|
+
}
|
|
30
82
|
export interface ModuleGraphInterface {
|
|
31
83
|
compile(): Promise<void>;
|
|
32
|
-
|
|
33
|
-
|
|
84
|
+
compileSegment(root: ModuleContainerInterface, lazyModule: LazyModule): Promise<GraphSegment>;
|
|
85
|
+
unloadSegment(lazyModule: LazyModule, protectedRoots: Set<string>): SegmentUnloadResult;
|
|
86
|
+
isProviderVisible(moduleContainer: ModuleContainerInterface, token: ProviderToken): boolean;
|
|
87
|
+
isProviderExported(moduleContainer: ModuleContainerInterface, token: ProviderToken): Promise<boolean>;
|
|
88
|
+
/**
|
|
89
|
+
* Records a dependency discovered at runtime by `inject()`. Idempotent;
|
|
90
|
+
* keeps the target's module alive while the source's module is loaded.
|
|
91
|
+
*/
|
|
92
|
+
addRuntimeDependency(source: ProviderToken, target: ProviderToken): void;
|
|
93
|
+
/**
|
|
94
|
+
* The container of the module that declares `child` in `@Module({ children })`,
|
|
95
|
+
* including modules of loaded lazy segments.
|
|
96
|
+
*/
|
|
97
|
+
findChildDeclaration(child: Type | LazyModule): ModuleContainerInterface | undefined;
|
|
98
|
+
getNode(token: ProviderToken): Node | undefined;
|
|
99
|
+
getEdge(token: ProviderToken): Edge[];
|
|
34
100
|
getAllNodes(): Node[];
|
|
35
101
|
getAllEdges(): Edge[][];
|
|
36
|
-
nodes: Map<
|
|
37
|
-
edges: Map<
|
|
102
|
+
nodes: Map<ProviderToken, Node>;
|
|
103
|
+
edges: Map<ProviderToken, Edge[]>;
|
|
104
|
+
rootToken: string;
|
|
105
|
+
internalRootTokens: string[];
|
|
38
106
|
errors: GraphError[];
|
|
107
|
+
/**
|
|
108
|
+
* Changes whenever a compile, segment load or unload may have changed
|
|
109
|
+
* which providers exist or are visible; lets callers cache visibility.
|
|
110
|
+
*/
|
|
111
|
+
readonly version: number;
|
|
39
112
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DynamicModule } from "../dynamic-module.interface";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Type } from "../type.interface";
|
|
3
3
|
export interface ModuleTokenFactoryInterface {
|
|
4
|
-
create(metatype:
|
|
4
|
+
create(metatype: Type | DynamicModule): Promise<string>;
|
|
5
5
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { DynamicModule } from "../dynamic-module.interface";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Type } from "../type.interface";
|
|
3
3
|
import type { ModuleContainerInterface } from "./module-container.interface";
|
|
4
4
|
export interface ModulesContainerInterface {
|
|
5
|
-
addModule(module:
|
|
6
|
-
replaceModule(moduleToReplace:
|
|
7
|
-
getModule(module:
|
|
5
|
+
addModule(module: Type | DynamicModule): Promise<ModuleContainerInterface>;
|
|
6
|
+
replaceModule(moduleToReplace: Type, newModule: Type): Promise<ModuleContainerInterface>;
|
|
7
|
+
getModule(module: Type): ModuleContainerInterface | undefined;
|
|
8
|
+
removeModule(token: string): void;
|
|
8
9
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ProviderToken } from "../injection-token.interface";
|
|
2
|
+
import type { Provider } from "../module-types.interface";
|
|
3
|
+
/** What a child container may take from its parent chain. */
|
|
4
|
+
export interface ParentLink {
|
|
5
|
+
canProvide(token: ProviderToken): boolean;
|
|
6
|
+
get<T>(token: ProviderToken<T>): T;
|
|
7
|
+
resolve<T>(token: ProviderToken<T>): Promise<T>;
|
|
8
|
+
}
|
|
9
|
+
export interface CreateChildOptions {
|
|
10
|
+
/** Extra providers appended to the child root module (e.g. per-instance config). */
|
|
11
|
+
providers?: Provider[];
|
|
12
|
+
}
|
|
@@ -1,10 +1,53 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { GetOptions, LazyModule } from "@nexus-ioc/shared";
|
|
2
|
+
import type { ModuleRef } from "../core/module-ref";
|
|
3
|
+
import type { DynamicModule } from "./dynamic-module.interface";
|
|
4
|
+
import type { ProviderToken } from "./injection-token.interface";
|
|
5
|
+
import type { CreateChildOptions, GraphError, UnloadResult } from "./modules";
|
|
3
6
|
import type { ModulePluginInterface } from "./plugins";
|
|
7
|
+
import type { Type } from "./type.interface";
|
|
8
|
+
export interface BootstrapOptions {
|
|
9
|
+
throwOnError?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export type { GetOptions } from "@nexus-ioc/shared";
|
|
4
12
|
export interface NexusApplicationInterface extends ModulePluginInterface {
|
|
5
|
-
bootstrap(): Promise<this>;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
13
|
+
bootstrap(options?: BootstrapOptions): Promise<this>;
|
|
14
|
+
close(): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Returns an already created singleton. `T` is inferred from class and
|
|
17
|
+
* `InjectionToken<T>` tokens; string and symbol tokens give `unknown`
|
|
18
|
+
* unless `<T>` is passed or the expected type supplies it.
|
|
19
|
+
*
|
|
20
|
+
* @param token - The provider token: class, InjectionToken, string or symbol
|
|
21
|
+
*/
|
|
22
|
+
get<T>(token: ProviderToken<T>): T;
|
|
23
|
+
get<T>(token: ProviderToken<T>, options: {
|
|
24
|
+
optional: true;
|
|
25
|
+
}): T | undefined;
|
|
26
|
+
get<T>(token: ProviderToken<T>, options: {
|
|
27
|
+
optional?: false;
|
|
28
|
+
}): T;
|
|
29
|
+
get<T>(token: ProviderToken<T>, options: GetOptions): T | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Resolves a provider, creating it on demand (Transient, lazy
|
|
32
|
+
* mode). `T` is inferred from the token as for `get()`.
|
|
33
|
+
*
|
|
34
|
+
* @param token - The provider token: class, InjectionToken, string or symbol
|
|
35
|
+
*/
|
|
36
|
+
resolve<T>(token: ProviderToken<T>): Promise<T>;
|
|
37
|
+
resolve<T>(token: ProviderToken<T>, options: {
|
|
38
|
+
optional: true;
|
|
39
|
+
}): Promise<T | undefined>;
|
|
40
|
+
resolve<T>(token: ProviderToken<T>, options: {
|
|
41
|
+
optional?: false;
|
|
42
|
+
}): Promise<T>;
|
|
43
|
+
resolve<T>(token: ProviderToken<T>, options: GetOptions): Promise<T | undefined>;
|
|
44
|
+
load(lazyModule: LazyModule): Promise<ModuleRef>;
|
|
45
|
+
unload(ref: ModuleRef): Promise<UnloadResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Creates a bootstrapped child application for a module declared in
|
|
48
|
+
* `@Module({ children })` of this application's graph.
|
|
49
|
+
*/
|
|
50
|
+
createChild(child: Type | DynamicModule | LazyModule, options?: CreateChildOptions): Promise<NexusApplicationInterface>;
|
|
51
|
+
lazy(): this;
|
|
9
52
|
errors: GraphError[];
|
|
10
53
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ModuleGraphInterface } from "../modules";
|
|
2
|
-
export interface ScannerGraphInterface extends Omit<ModuleGraphInterface, "compile" | "nodes" | "edges"> {
|
|
2
|
+
export interface ScannerGraphInterface extends Omit<ModuleGraphInterface, "compile" | "compileSegment" | "unloadSegment" | "nodes" | "edges"> {
|
|
3
3
|
}
|
|
4
4
|
export interface ScannerPluginInterface {
|
|
5
5
|
scan(graph: ScannerGraphInterface): Promise<void>;
|