From b03bd7d6fc2b042fefaaee3d912609dcab5fc81d Mon Sep 17 00:00:00 2001 From: Roy Ivy III Date: Sun, 10 Jan 2021 14:14:40 -0600 Subject: [PATCH] refactor ~ use late/lazy evaluation to avoid ENV{} and `path.join()` calls ## [why] There are a high number of ENV{} variable accesses and path manipulation calls for items which will only get very rare usage. These are replaced with functions with can be called late and lazily if/when higher priority items return undefined results. --- src/lib/OSPaths.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/lib/OSPaths.ts b/src/lib/OSPaths.ts index c309f7d..dd896eb 100644 --- a/src/lib/OSPaths.ts +++ b/src/lib/OSPaths.ts @@ -63,17 +63,18 @@ export function OSPathsAdaption_(adapter_: Platform.Adapter): OSPaths { const temp = () => { const fallback = 'C:\\Temp'; const priorityList = [ - typeof os.tmpdir === 'function' ? os.tmpdir() : void 0, - env.get('TEMP'), - env.get('TMP'), - joinPathToBase(env.get('LOCALAPPDATA'), ['Temp']), - joinPathToBase(home(), ['AppData', 'Local', 'Temp']), - joinPathToBase(env.get('ALLUSERSPROFILE'), ['Temp']), - joinPathToBase(env.get('SystemRoot'), ['Temp']), - joinPathToBase(env.get('windir'), ['Temp']), - joinPathToBase(env.get('SystemDrive'), ['\\', 'Temp']), + os.tmpdir, + () => env.get('TEMP'), + () => env.get('TMP'), + () => joinPathToBase(env.get('LOCALAPPDATA'), ['Temp']), + () => joinPathToBase(home(), ['AppData', 'Local', 'Temp']), + () => joinPathToBase(env.get('ALLUSERSPROFILE'), ['Temp']), + () => joinPathToBase(env.get('SystemRoot'), ['Temp']), + () => joinPathToBase(env.get('windir'), ['Temp']), + () => joinPathToBase(env.get('SystemDrive'), ['\\', 'Temp']), ]; - return normalizePath(priorityList.find((v) => !isEmpty(v))) || fallback; + const v = priorityList.find((v) => v && !isEmpty(v())); + return (v && normalizePath(v())) || fallback; }; return { home, temp };