@@ -20,34 +20,41 @@ namespace ts.server {
20
20
} = require ( "os" ) ;
21
21
22
22
function getGlobalTypingsCacheLocation ( ) {
23
- let basePath : string ;
24
23
switch ( process . platform ) {
25
- case "win32" :
26
- basePath = process . env . LOCALAPPDATA ||
24
+ case "win32" : {
25
+ const basePath = process . env . LOCALAPPDATA ||
27
26
process . env . APPDATA ||
28
27
( os . homedir && os . homedir ( ) ) ||
29
28
process . env . USERPROFILE ||
30
29
( process . env . HOMEDRIVE && process . env . HOMEPATH && normalizeSlashes ( process . env . HOMEDRIVE + process . env . HOMEPATH ) ) ||
31
30
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
+ }
40
33
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 ;
47
42
}
43
+ }
48
44
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 ) ;
51
58
}
52
59
53
60
interface NodeChildProcess {
0 commit comments