MCPcopy Create free account
hub / github.com/microsoft/typescript-go / ResolveModuleName

Method ResolveModuleName

internal/module/resolver.go:270–329  ·  view source on GitHub ↗
(moduleName string, containingFile string, resolutionMode core.ResolutionMode, redirectedReference ResolvedProjectReference)

Source from the content-addressed store, hash-verified

268}
269
270func (r *Resolver) ResolveModuleName(moduleName string, containingFile string, resolutionMode core.ResolutionMode, redirectedReference ResolvedProjectReference) (*ResolvedModule, []DiagAndArgs) {
271 containingDirectory := tspath.GetDirectoryPath(containingFile)
272 traceBuilder := r.newTraceBuilder()
273
274 cacheKey := moduleResolutionCacheKey{
275 containingDirectory: containingDirectory,
276 moduleName: moduleName,
277 resolutionMode: resolutionMode,
278 redirectConfigName: getRedirectConfigName(redirectedReference),
279 }
280
281 if traceBuilder == nil {
282 if cached, ok := r.moduleResolutionCache.Get(cacheKey); ok {
283 return cached, nil
284 }
285 }
286
287 compilerOptions := GetCompilerOptionsWithRedirect(r.compilerOptions, redirectedReference)
288 if traceBuilder != nil {
289 traceBuilder.write(diagnostics.Resolving_module_0_from_1, moduleName, containingFile)
290 traceBuilder.traceResolutionUsingProjectReference(redirectedReference)
291 }
292
293 moduleResolution := compilerOptions.GetModuleResolutionKind()
294 if compilerOptions.ModuleResolution != moduleResolution {
295 if traceBuilder != nil {
296 traceBuilder.write(diagnostics.Module_resolution_kind_is_not_specified_using_0, moduleResolution.String())
297 }
298 } else {
299 if traceBuilder != nil {
300 traceBuilder.write(diagnostics.Explicitly_specified_module_resolution_kind_Colon_0, moduleResolution.String())
301 }
302 }
303
304 var result *ResolvedModule
305 switch moduleResolution {
306 case core.ModuleResolutionKindNode16, core.ModuleResolutionKindNodeNext, core.ModuleResolutionKindBundler:
307 state := newResolutionState(moduleName, containingDirectory, false /*isTypeReferenceDirective*/, resolutionMode, compilerOptions, redirectedReference, r, traceBuilder)
308 result = state.resolveNodeLike()
309 default:
310 panic(fmt.Sprintf("Unexpected moduleResolution: %d", moduleResolution))
311 }
312
313 if traceBuilder != nil {
314 if result.IsResolved() {
315 if result.PackageId.Name != "" {
316 traceBuilder.write(diagnostics.Module_name_0_was_successfully_resolved_to_1_with_Package_ID_2, moduleName, result.ResolvedFileName, result.PackageId.String())
317 } else {
318 traceBuilder.write(diagnostics.Module_name_0_was_successfully_resolved_to_1, moduleName, result.ResolvedFileName)
319 }
320 } else {
321 traceBuilder.write(diagnostics.Module_name_0_was_not_resolved, moduleName)
322 }
323 }
324
325 finalResult := r.tryResolveFromTypingsLocation(moduleName, containingDirectory, result, traceBuilder)
326 r.moduleResolutionCache.Set(cacheKey, finalResult)
327

Calls 15

newTraceBuilderMethod · 0.95
IsResolvedMethod · 0.95
GetDirectoryPathFunction · 0.92
getRedirectConfigNameFunction · 0.85
newResolutionStateFunction · 0.85
panicFunction · 0.85
resolveNodeLikeMethod · 0.80
getTracesMethod · 0.80