MCPcopy
hub / github.com/nestjs/nest / scanForModules

Method scanForModules

packages/core/scanner.ts:106–180  ·  view source on GitHub ↗
({
    moduleDefinition,
    lazy,
    scope = [],
    ctxRegistry = [],
    overrides = [],
  }: ModulesScanParameters)

Source from the content-addressed store, hash-verified

104 }
105
106 public async scanForModules({
107 moduleDefinition,
108 lazy,
109 scope = [],
110 ctxRegistry = [],
111 overrides = [],
112 }: ModulesScanParameters): Promise<Module[]> {
113 const { moduleRef: moduleInstance, inserted: moduleInserted } =
114 (await this.insertOrOverrideModule(moduleDefinition, overrides, scope)) ??
115 {};
116
117 moduleDefinition =
118 this.getOverrideModuleByModule(moduleDefinition, overrides)?.newModule ??
119 moduleDefinition;
120
121 moduleDefinition =
122 moduleDefinition instanceof Promise
123 ? await moduleDefinition
124 : moduleDefinition;
125
126 ctxRegistry.push(moduleDefinition);
127
128 if (this.isForwardReference(moduleDefinition)) {
129 moduleDefinition = (moduleDefinition as ForwardReference).forwardRef();
130 }
131 const modules = !this.isDynamicModule(
132 moduleDefinition as Type<any> | DynamicModule,
133 )
134 ? this.reflectMetadata(
135 MODULE_METADATA.IMPORTS,
136 moduleDefinition as Type<any>,
137 )
138 : [
139 ...this.reflectMetadata(
140 MODULE_METADATA.IMPORTS,
141 (moduleDefinition as DynamicModule).module,
142 ),
143 ...((moduleDefinition as DynamicModule).imports || []),
144 ];
145
146 let registeredModuleRefs: Module[] = [];
147 for (const [index, innerModule] of modules.entries()) {
148 // In case of a circular dependency (ES module system), JavaScript will resolve the type to `undefined`.
149 if (innerModule === undefined) {
150 throw new UndefinedModuleException(moduleDefinition, index, scope);
151 }
152 if (!innerModule) {
153 throw new InvalidModuleException(
154 moduleDefinition,
155 index,
156 scope,
157 innerModule,
158 );
159 }
160 if (ctxRegistry.includes(innerModule)) {
161 continue;
162 }
163 const moduleRefs = await this.scanForModules({

Callers 4

scanMethod · 0.95
registerCoreModuleMethod · 0.95
loadMethod · 0.80
scanner.spec.tsFile · 0.80

Calls 7

isForwardReferenceMethod · 0.95
isDynamicModuleMethod · 0.95
reflectMetadataMethod · 0.95
bindGlobalsToImportsMethod · 0.80
forwardRefMethod · 0.45

Tested by

no test coverage detected