MCPcopy Index your code
hub / github.com/microsoft/typescript-go / loadModuleFromExports

Method loadModuleFromExports

internal/module/resolver.go:669–700  ·  view source on GitHub ↗
(packageInfo *packagejson.InfoCacheEntry, ext extensions, subpath string)

Source from the content-addressed store, hash-verified

667}
668
669func (r *resolutionState) loadModuleFromExports(packageInfo *packagejson.InfoCacheEntry, ext extensions, subpath string) *resolved {
670 // !!! This is ported exactly, but the falsy check seems wrong
671 if !packageInfo.Exists() || packageInfo.Contents.Exports.IsFalsy() {
672 return continueSearching()
673 }
674
675 if subpath == "." {
676 var mainExport packagejson.ExportsOrImports
677 switch packageInfo.Contents.Exports.Type {
678 case packagejson.JSONValueTypeString, packagejson.JSONValueTypeArray:
679 mainExport = packageInfo.Contents.Exports
680 case packagejson.JSONValueTypeObject:
681 if packageInfo.Contents.Exports.IsConditions() {
682 mainExport = packageInfo.Contents.Exports
683 } else if dot, ok := packageInfo.Contents.Exports.AsObject().Get("."); ok {
684 mainExport = dot
685 }
686 }
687 if mainExport.Type != packagejson.JSONValueTypeNotPresent {
688 return r.loadModuleFromTargetExportOrImport(ext, subpath, packageInfo, false /*isImports*/, mainExport, "", false /*isPattern*/, ".")
689 }
690 } else if packageInfo.Contents.Exports.Type == packagejson.JSONValueTypeObject && packageInfo.Contents.Exports.IsSubpaths() {
691 if result := r.loadModuleFromExportsOrImports(ext, subpath, packageInfo.Contents.Exports.AsObject(), packageInfo, false /*isImports*/); !result.shouldContinueSearching() {
692 return result
693 }
694 }
695
696 if r.tracer != nil {
697 r.tracer.write(diagnostics.Export_specifier_0_does_not_exist_in_package_json_scope_at_path_1, subpath, packageInfo.PackageDirectory)
698 }
699 return continueSearching()
700}
701
702func (r *resolutionState) loadModuleFromExportsOrImports(
703 extensions extensions,

Calls 11

continueSearchingFunction · 0.85
IsFalsyMethod · 0.80
IsConditionsMethod · 0.80
IsSubpathsMethod · 0.80
GetMethod · 0.65
writeMethod · 0.65
ExistsMethod · 0.45
AsObjectMethod · 0.45

Tested by

no test coverage detected