@ -21,31 +21,50 @@
'use strict' ;
const binding = process . binding ( 'os' ) ;
const getCPUs = binding . getCPUs ;
const getLoadAvg = binding . getLoadAvg ;
const pushValToArrayMax = process . binding ( 'util' ) . pushValToArrayMax ;
const constants = process . binding ( 'constants' ) . os ;
const internalUtil = require ( 'internal/util' ) ;
const deprecate = require ( 'internal/util' ) . deprecate ;
const isWindows = process . platform === 'win32' ;
exports . hostname = binding . getHostname ;
exports . uptime = binding . getUptime ;
exports . freemem = binding . getFreeMem ;
exports . totalmem = binding . getTotalMem ;
exports . type = binding . getOSType ;
exports . release = binding . getOSRelease ;
exports . networkInterfaces = binding . getInterfaceAddresses ;
exports . homedir = binding . getHomeDirectory ;
exports . userInfo = binding . getUserInfo ;
const {
getCPUs ,
getFreeMem ,
getHomeDirectory ,
getHostname ,
getInterfaceAddresses ,
getLoadAvg ,
getOSRelease ,
getOSType ,
getTotalMem ,
getUserInfo ,
getUptime ,
isBigEndian
} = process . binding ( 'os' ) ;
getFreeMem [ Symbol . toPrimitive ] = ( ) => getFreeMem ( ) ;
getHostname [ Symbol . toPrimitive ] = ( ) => getHostname ( ) ;
getHomeDirectory [ Symbol . toPrimitive ] = ( ) => getHomeDirectory ( ) ;
getOSRelease [ Symbol . toPrimitive ] = ( ) => getOSRelease ( ) ;
getOSType [ Symbol . toPrimitive ] = ( ) => getOSType ( ) ;
getTotalMem [ Symbol . toPrimitive ] = ( ) => getTotalMem ( ) ;
getUptime [ Symbol . toPrimitive ] = ( ) => getUptime ( ) ;
const kEndianness = isBigEndian ? 'BE' : 'LE' ;
const tmpDirDeprecationMsg =
'os.tmpDir() is deprecated. Use os.tmpdir() instead.' ;
const getNetworkInterfacesDepMsg =
'os.getNetworkInterfaces is deprecated. Use os.networkInterfaces instead.' ;
const avgValues = new Float64Array ( 3 ) ;
exports . loadavg = function loadavg ( ) {
const cpuValues = new Float64Array ( 6 * pushValToArrayMax ) ;
function loadavg ( ) {
getLoadAvg ( avgValues ) ;
return [ avgValues [ 0 ] , avgValues [ 1 ] , avgValues [ 2 ] ] ;
} ;
}
const cpuValues = new Float64Array ( 6 * pushValToArrayMax ) ;
function addCPUInfo ( ) {
for ( var i = 0 , c = 0 ; i < arguments . length ; ++ i , c += 6 ) {
this [ this . length ] = {
@ -61,25 +80,22 @@ function addCPUInfo() {
} ;
}
}
exports . cpus = function cpus ( ) {
return getCPUs ( addCPUInfo , cpuValues , [ ] ) ;
} ;
Object . defineProperty ( exports , 'constants' , {
configurable : false ,
enumerable : true ,
value : constants
} ) ;
function cpus ( ) {
return getCPUs ( addCPUInfo , cpuValues , [ ] ) ;
}
exports . arch = function ( ) {
function arch ( ) {
return process . arch ;
} ;
}
arch [ Symbol . toPrimitive ] = ( ) => process . arch ;
exports . platform = function ( ) {
function platform ( ) {
return process . platform ;
} ;
}
platform [ Symbol . toPrimitive ] = ( ) => process . platform ;
exports . tmpdir = function ( ) {
function tmpdir ( ) {
var path ;
if ( isWindows ) {
path = process . env . TEMP ||
@ -97,22 +113,41 @@ exports.tmpdir = function() {
}
return path ;
} ;
}
tmpdir [ Symbol . toPrimitive ] = ( ) => tmpdir ( ) ;
const tmpDirDeprecationMsg =
'os.tmpDir() is deprecated. Use os.tmpdir() instead.' ;
exports . tmpDir = internalUtil . deprecate ( exports . tmpdir ,
tmpDirDeprecationMsg ,
'DEP0022' ) ;
function endianness ( ) {
return kEndianness ;
}
endianness [ Symbol . toPrimitive ] = ( ) => kEndianness ;
exports . getNetworkInterfaces = internalUtil . deprecate ( function ( ) {
return exports . networkInterfaces ( ) ;
} , 'os.getNetworkInterfaces is deprecated. ' +
'Use os.networkInterfaces instead.' , 'DEP0023' ) ;
module . exports = exports = {
arch ,
cpus ,
EOL : isWindows ? '\r\n' : '\n' ,
endianness ,
freemem : getFreeMem ,
homedir : getHomeDirectory ,
hostname : getHostname ,
loadavg ,
networkInterfaces : getInterfaceAddresses ,
platform ,
release : getOSRelease ,
tmpdir ,
totalmem : getTotalMem ,
type : getOSType ,
userInfo : getUserInfo ,
uptime : getUptime ,
exports . EOL = isWindows ? '\r\n' : '\n' ;
// Deprecated APIs
getNetworkInterfaces : deprecate ( getInterfaceAddresses ,
getNetworkInterfacesDepMsg ,
'DEP0023' ) ,
tmpDir : deprecate ( tmpdir , tmpDirDeprecationMsg , 'DEP0022' )
} ;
if ( binding . isBigEndian )
exports . endianness = function ( ) { return 'BE' ; } ;
else
exports . endianness = function ( ) { return 'LE' ; } ;
Object . defineProperty ( module . exports , 'constants' , {
configurable : false ,
enumerable : true ,
value : constants
} ) ;