@@ -20,8 +20,10 @@ export interface ProjectExposeContext {
2020 configFileName : string | undefined ;
2121 projectHost : TypeScriptProjectHost ;
2222 sys : ReturnType < typeof createSys > ;
23- asUri ( fileName : string ) : URI ;
24- asFileName ( scriptId : URI ) : string ;
23+ uriConverter : {
24+ asUri ( fileName : string ) : URI ;
25+ asFileName ( uri : URI ) : string ;
26+ } ;
2527}
2628
2729const fsFileSnapshots = createUriMap < [ number | undefined , ts . IScriptSnapshot | undefined ] > ( ) ;
@@ -33,7 +35,7 @@ export async function createTypeScriptLS(
3335 server : LanguageServer ,
3436 serviceEnv : LanguageServiceEnvironment ,
3537 workspaceFolder : URI ,
36- { asUri , asFileName } : {
38+ uriConverter : {
3739 asUri ( fileName : string ) : URI ;
3840 asFileName ( uri : URI ) : string ;
3941 } ,
@@ -45,15 +47,11 @@ export async function createTypeScriptLS(
4547 } ) : void ;
4648 } >
4749) : Promise < TypeScriptProjectLS > {
48-
4950 let parsedCommandLine : ts . ParsedCommandLine ;
5051 let projectVersion = 0 ;
5152
52- const getCurrentDirectory = ( ) => asFileName ( workspaceFolder ) ;
53- const sys = createSys ( ts . sys , serviceEnv , getCurrentDirectory , {
54- asFileName,
55- asUri,
56- } ) ;
53+ const getCurrentDirectory = ( ) => uriConverter . asFileName ( workspaceFolder ) ;
54+ const sys = createSys ( ts . sys , serviceEnv , getCurrentDirectory , uriConverter ) ;
5755 const projectHost : TypeScriptProjectHost = {
5856 getCurrentDirectory,
5957 getProjectVersion ( ) {
@@ -63,7 +61,7 @@ export async function createTypeScriptLS(
6361 return rootFiles ;
6462 } ,
6563 getScriptSnapshot ( fileName ) {
66- const uri = asUri ( fileName ) ;
64+ const uri = uriConverter . asUri ( fileName ) ;
6765 const documentKey = server . getSyncedDocumentKey ( uri ) ?? uri . toString ( ) ;
6866 const document = server . documents . get ( documentKey ) ;
6967 askedFiles . set ( uri , true ) ;
@@ -84,8 +82,7 @@ export async function createTypeScriptLS(
8482 configFileName : typeof tsconfig === 'string' ? tsconfig : undefined ,
8583 projectHost,
8684 sys,
87- asFileName,
88- asUri,
85+ uriConverter,
8986 } ) ;
9087 const askedFiles = createUriMap < boolean > ( ) ;
9188 const docOpenWatcher = server . documents . onDidOpen ( ( { document } ) => updateFsCacheFromSyncedDocument ( document ) ) ;
@@ -116,7 +113,7 @@ export async function createTypeScriptLS(
116113 else {
117114 // fs files
118115 const cache = fsFileSnapshots . get ( uri ) ;
119- const fileName = asFileName ( uri ) ;
116+ const fileName = uriConverter . asFileName ( uri ) ;
120117 const modifiedTime = sys . getModifiedTime ?.( fileName ) ?. valueOf ( ) ;
121118 if ( ! cache || cache [ 0 ] !== modifiedTime ) {
122119 if ( sys . fileExists ( fileName ) ) {
@@ -143,13 +140,12 @@ export async function createTypeScriptLS(
143140 typescript : {
144141 configFileName : typeof tsconfig === 'string' ? tsconfig : undefined ,
145142 sys,
146- asUri,
147- asFileName,
143+ uriConverter,
148144 ...createLanguageServiceHost (
149145 ts ,
150146 sys ,
151147 language ,
152- asUri ,
148+ s => uriConverter . asUri ( s ) ,
153149 projectHost
154150 ) ,
155151 } ,
@@ -184,7 +180,7 @@ export async function createTypeScriptLS(
184180
185181 function updateFsCacheFromSyncedDocument ( document : SnapshotDocument ) {
186182 const uri = URI . parse ( document . uri ) ;
187- const fileName = asFileName ( uri ) ;
183+ const fileName = uriConverter . asFileName ( uri ) ;
188184 if ( fsFileSnapshots . has ( uri ) || sys . fileExists ( fileName ) ) {
189185 const modifiedTime = sys . getModifiedTime ?.( fileName ) ;
190186 fsFileSnapshots . set ( uri , [ modifiedTime ?. valueOf ( ) , document . getSnapshot ( ) ] ) ;
@@ -195,7 +191,7 @@ export async function createTypeScriptLS(
195191 parsedCommandLine = await createParsedCommandLine (
196192 ts ,
197193 sys ,
198- asFileName ( workspaceFolder ) ,
194+ uriConverter . asFileName ( workspaceFolder ) ,
199195 tsconfig ,
200196 languagePlugins . map ( plugin => plugin . typescript ?. extraFileExtensions ?? [ ] ) . flat ( )
201197 ) ;
0 commit comments