This commit applies `strictNullChecks` to the entire codebase to improve maintainability and type safety. Key changes include: - Remove some explicit null-checks where unnecessary. - Add necessary null-checks. - Refactor static factory functions for a more functional approach. - Improve some test names and contexts for better debugging. - Add unit tests for any additional logic introduced. - Refactor `createPositionFromRegexFullMatch` to its own function as the logic is reused. - Prefer `find` prefix on functions that may return `undefined` and `get` prefix for those that always return a value.
32 lines
821 B
TypeScript
32 lines
821 B
TypeScript
import { platform } from 'os';
|
|
import { die } from './log';
|
|
|
|
export enum SupportedPlatform {
|
|
macOS,
|
|
Windows,
|
|
Linux,
|
|
}
|
|
|
|
const NODE_PLATFORM_MAPPINGS: {
|
|
readonly [K in SupportedPlatform]: NodeJS.Platform;
|
|
} = {
|
|
[SupportedPlatform.macOS]: 'darwin',
|
|
[SupportedPlatform.Linux]: 'linux',
|
|
[SupportedPlatform.Windows]: 'win32',
|
|
};
|
|
|
|
function getCurrentPlatform(): SupportedPlatform | never {
|
|
const nodePlatform = platform();
|
|
|
|
for (const key of Object.keys(NODE_PLATFORM_MAPPINGS)) {
|
|
const keyAsSupportedPlatform = parseInt(key, 10) as SupportedPlatform;
|
|
if (NODE_PLATFORM_MAPPINGS[keyAsSupportedPlatform] === nodePlatform) {
|
|
return keyAsSupportedPlatform;
|
|
}
|
|
}
|
|
|
|
return die(`Unsupported platform: ${nodePlatform}`);
|
|
}
|
|
|
|
export const CURRENT_PLATFORM: SupportedPlatform = getCurrentPlatform();
|