75 lines
1.3 KiB
JavaScript
75 lines
1.3 KiB
JavaScript
var os = require('os')
|
|
var osShim
|
|
|
|
'use strict';
|
|
|
|
// clone the 'os' module object to avoid mutations and unexpected behavior
|
|
module.exports = osShim = clone(os)
|
|
|
|
//
|
|
// apply the missing API
|
|
//
|
|
|
|
if (!os.tmpdir) {
|
|
osShim.tmpdir = tmpdir
|
|
}
|
|
|
|
if (!os.platform) {
|
|
osShim.platform = platform
|
|
}
|
|
|
|
if (!os.arch) {
|
|
osShim.arch = arch
|
|
}
|
|
|
|
if (!os.endianness) {
|
|
osShim.endianness = endianness
|
|
}
|
|
|
|
if (!os.EOL) {
|
|
Object.defineProperty(osShim, 'EOL', {
|
|
get: function () {
|
|
return process.platform === 'win32' ? '\n\r' : '\n'
|
|
}
|
|
})
|
|
}
|
|
|
|
function tmpdir() {
|
|
var isWindows = process.platform === 'win32'
|
|
var env = process.env
|
|
|
|
if (isWindows) {
|
|
return env.TEMP ||
|
|
env.TMP ||
|
|
(env.SystemRoot || env.windir) + '\\temp';
|
|
} else {
|
|
return env.TMPDIR ||
|
|
env.TMP ||
|
|
env.TEMP ||
|
|
'/tmp';
|
|
}
|
|
}
|
|
|
|
function platform() {
|
|
return process.platform
|
|
}
|
|
|
|
function arch() {
|
|
return process.arch
|
|
}
|
|
|
|
function endianness() {
|
|
var isEndianness = ((new Uint32Array((new Uint8Array([1,2,3,4])).buffer))[0] === 0x04030201)
|
|
return isEndianness ? 'LE' : 'BE'
|
|
}
|
|
|
|
function clone(object) {
|
|
var prop, cloneObj = {}
|
|
for (prop in object) {
|
|
if (object.hasOwnProperty(prop)) {
|
|
cloneObj[prop] = object[prop]
|
|
}
|
|
}
|
|
return cloneObj
|
|
}
|