@@ -20,34 +20,41 @@ namespace ts.server {
2020 } = require ( "os" ) ;
2121
2222 function getGlobalTypingsCacheLocation ( ) {
23- let basePath : string ;
2423 switch ( process . platform ) {
25- case "win32" :
26- basePath = process . env . LOCALAPPDATA ||
24+ case "win32" : {
25+ const basePath = process . env . LOCALAPPDATA ||
2726 process . env . APPDATA ||
2827 ( os . homedir && os . homedir ( ) ) ||
2928 process . env . USERPROFILE ||
3029 ( process . env . HOMEDRIVE && process . env . HOMEPATH && normalizeSlashes ( process . env . HOMEDRIVE + process . env . HOMEPATH ) ) ||
3130 os . tmpdir ( ) ;
32- break ;
33- case "linux" :
34- case "android" :
35- basePath = ( os . homedir && os . homedir ( ) ) ||
36- process . env . HOME ||
37- ( ( process . env . LOGNAME || process . env . USER ) && `/home/${ process . env . LOGNAME || process . env . USER } ` ) ||
38- os . tmpdir ( ) ;
39- break ;
31+ return combinePaths ( normalizeSlashes ( basePath ) , "Microsoft/TypeScript" ) ;
32+ }
4033 case "darwin" :
41- const homeDir = ( os . homedir && os . homedir ( ) ) ||
42- process . env . HOME ||
43- ( ( process . env . LOGNAME || process . env . USER ) && `/Users/${ process . env . LOGNAME || process . env . USER } ` ) ||
44- os . tmpdir ( ) ;
45- basePath = combinePaths ( homeDir , "Library/Application Support/" ) ;
46- break ;
34+ case "linux" :
35+ case "android" : {
36+ const cacheLocation = getNonWindowsCacheLocation ( process . platform === "darwin" ) ;
37+ return combinePaths ( cacheLocation , "typescript" ) ;
38+ }
39+ default :
40+ Debug . fail ( `unsupported platform '${ process . platform } '` ) ;
41+ return ;
4742 }
43+ }
4844
49- Debug . assert ( basePath !== undefined ) ;
50- return combinePaths ( normalizeSlashes ( basePath ) , "Microsoft/TypeScript" ) ;
45+ function getNonWindowsCacheLocation ( platformIsDarwin : boolean ) {
46+ if ( process . env . XDG_CACHE_HOME ) {
47+ return process . env . XDG_CACHE_HOME ;
48+ }
49+ const usersDir = platformIsDarwin ? "Users" : "home"
50+ const homePath = ( os . homedir && os . homedir ( ) ) ||
51+ process . env . HOME ||
52+ ( ( process . env . LOGNAME || process . env . USER ) && `/${ usersDir } /${ process . env . LOGNAME || process . env . USER } ` ) ||
53+ os . tmpdir ( ) ;
54+ const cacheFolder = platformIsDarwin
55+ ? "Library/Caches"
56+ : ".cache"
57+ return combinePaths ( normalizeSlashes ( homePath ) , cacheFolder ) ;
5158 }
5259
5360 interface NodeChildProcess {
0 commit comments