cmux/node_modules/os-paths/src/lib/index.js
2026-01-29 17:36:26 -08:00

68 lines
1.3 KiB
JavaScript

/* eslint-env es6, node */
// # spell-checker:ignore HomeDrive HomePath LocalAppData UserProfile WinDir
'use strict';
const os = require('os');
const paths = require('path');
const isWinOS = /^win/i.test(process.platform);
function normalize_path(path) {
return paths.normalize(paths.join(path, '.'));
}
const base = () => {
const { env } = process;
const object = {};
object.home = () => normalize_path(os.homedir ? os.homedir() : env.HOME);
object.temp = () => normalize_path(os.tmpdir ? os.tmpdir() : env.TMPDIR || env.TEMP || env.TMP);
return object;
};
const windows = () => {
const { env } = process;
const object = {};
object.home = () =>
normalize_path(
os.homedir
? os.homedir()
: env.USERPROFILE || paths.join(env.HOMEDRIVE, env.HOMEPATH) || env.HOME
);
object.temp = () =>
normalize_path(
os.tmpdir
? os.tmpdir()
: env.TEMP ||
env.TMP ||
paths.join(env.LOCALAPPDATA || env.SystemRoot || env.windir, 'Temp')
);
return object;
};
class _OSPaths {
constructor() {
const OSPaths = function () {
return new _OSPaths();
};
this._fn = OSPaths;
// Connect to platform-specific API functions by extension
const extension = isWinOS ? windows() : base();
Object.keys(extension).forEach((key) => {
this._fn[key] = extension[key];
});
return this._fn;
}
}
module.exports = new _OSPaths();