@@ -125,22 +125,8 @@ namespace ts {
125125 }
126126 }
127127
128- function tryReadPackageJsonTypesVersion ( jsonContent : PackageJson , baseDirectory : string , state : ModuleResolutionState ) : string | undefined {
129- if ( ! hasProperty ( jsonContent , "typesVersions" ) ) {
130- if ( state . traceEnabled ) {
131- trace ( state . host , Diagnostics . package_json_does_not_have_a_0_field , "typesVersions" ) ;
132- }
133- return ;
134- }
135-
136- const typesVersions = jsonContent . typesVersions ;
137- if ( typeof typesVersions !== "object" ) {
138- if ( state . traceEnabled ) {
139- trace ( state . host , Diagnostics . Expected_type_of_0_field_in_package_json_to_be_1_got_2 , "typesVersions" , "object" , typeof typesVersions ) ;
140- }
141- return ;
142- }
143-
128+ /* @internal */
129+ export function getPackageJsonTypesVersionsOverride ( typesVersions : MapLike < string > ) {
144130 const typeScriptVersion = Version . parse ( version ) ;
145131 let bestVersion : Version | undefined ;
146132 let bestVersionKey : string | undefined ;
@@ -149,9 +135,6 @@ namespace ts {
149135
150136 const keyVersion = Version . tryParse ( key ) ;
151137 if ( keyVersion === undefined ) {
152- if ( state . traceEnabled ) {
153- // TODO(rbuckton): log
154- }
155138 continue ;
156139 }
157140
@@ -164,13 +147,34 @@ namespace ts {
164147 }
165148
166149 if ( ! bestVersionKey ) {
150+ return ;
151+ }
152+
153+ return { version : bestVersionKey , directory : typesVersions [ bestVersionKey ] } ;
154+ }
155+
156+ function tryReadPackageJsonTypesVersion ( jsonContent : PackageJson , baseDirectory : string , state : ModuleResolutionState ) : string | undefined {
157+ if ( ! hasProperty ( jsonContent , "typesVersions" ) ) {
167158 if ( state . traceEnabled ) {
168- // TODO(rbuckton): log
159+ trace ( state . host , Diagnostics . package_json_does_not_have_a_0_field , "typesVersions" ) ;
169160 }
170161 return ;
171162 }
172163
173- const bestVersionPath = typesVersions [ bestVersionKey ] ;
164+ const typesVersions = jsonContent . typesVersions ;
165+ if ( typeof typesVersions !== "object" ) {
166+ if ( state . traceEnabled ) {
167+ trace ( state . host , Diagnostics . Expected_type_of_0_field_in_package_json_to_be_1_got_2 , "typesVersions" , "object" , typeof typesVersions ) ;
168+ }
169+ return ;
170+ }
171+
172+ const result = getPackageJsonTypesVersionsOverride ( typesVersions ) ;
173+ if ( ! result ) {
174+ return undefined ;
175+ }
176+
177+ const { version : bestVersionKey , directory : bestVersionPath } = result ;
174178 if ( ! isString ( bestVersionPath ) ) {
175179 if ( state . traceEnabled ) {
176180 trace ( state . host , Diagnostics . Expected_type_of_0_field_in_package_json_to_be_1_got_2 , `typesVersion['${ bestVersionKey } ']` , "string" , typeof bestVersionPath ) ;
0 commit comments