diff --git a/docs/v4/CODE_OF_CONDUCT.md b/docs/v4/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..01b8644
--- /dev/null
+++ b/docs/v4/CODE_OF_CONDUCT.md
@@ -0,0 +1,22 @@
+# Contributor Code of Conduct
+
+As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
+
+We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery
+* Personal attacks
+* Trolling or insulting/derogatory comments
+* Public or private harassment
+* Publishing other's private information, such as physical or electronic addresses, without explicit permission
+* Other unethical or unprofessional conduct.
+
+Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.
+
+This code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
+
+This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0, available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
diff --git a/docs/v4/CONTRIBUTING.md b/docs/v4/CONTRIBUTING.md
new file mode 100644
index 0000000..558c757
--- /dev/null
+++ b/docs/v4/CONTRIBUTING.md
@@ -0,0 +1,12 @@
+## You want to contribute some code?
+
+First of all: thank you for contributing to this repository. We are always looking for quality contributions and will be happy to accept your pull requests as long as they adhere to some basic rules:
+
+* Please make sure that your contribution fits well in the project's context:
+ * We are aiming to provide a high quality multi-platform system information library.
+ * This package should stay without any dependencies on any external JavaScript library.
+
+* Please assure that you are submitting quality code, specifically make sure that:
+ * Your commits should not be breaking changes - if possible.
+ * Your PR are well tested - if possible on multiple platforms / machines (please provide information against what systems it was tested).
+ * If your commit needs a major version bump (breaking change), please leave a clear message in your comments. We try to keep the breaking changes as low as possible to avoid compatibility issues.
diff --git a/docs/v4/assets/android-icon-192x192.png b/docs/v4/assets/android-icon-192x192.png
new file mode 100644
index 0000000..55af16c
Binary files /dev/null and b/docs/v4/assets/android-icon-192x192.png differ
diff --git a/docs/v4/assets/favicon-16x16.png b/docs/v4/assets/favicon-16x16.png
new file mode 100644
index 0000000..c2e52fe
Binary files /dev/null and b/docs/v4/assets/favicon-16x16.png differ
diff --git a/docs/v4/assets/favicon-32x32.png b/docs/v4/assets/favicon-32x32.png
new file mode 100644
index 0000000..7d4d4f6
Binary files /dev/null and b/docs/v4/assets/favicon-32x32.png differ
diff --git a/docs/v4/assets/favicon-96x96.png b/docs/v4/assets/favicon-96x96.png
new file mode 100644
index 0000000..7eedbcd
Binary files /dev/null and b/docs/v4/assets/favicon-96x96.png differ
diff --git a/docs/v4/assets/logo.png b/docs/v4/assets/logo.png
new file mode 100644
index 0000000..5bcfacb
Binary files /dev/null and b/docs/v4/assets/logo.png differ
diff --git a/docs/v4/assets/logo_inv.png b/docs/v4/assets/logo_inv.png
new file mode 100644
index 0000000..d7923da
Binary files /dev/null and b/docs/v4/assets/logo_inv.png differ
diff --git a/docs/v4/assets/motherboard.jpg b/docs/v4/assets/motherboard.jpg
new file mode 100644
index 0000000..86e8074
Binary files /dev/null and b/docs/v4/assets/motherboard.jpg differ
diff --git a/docs/v4/assets/title-empty.jpg b/docs/v4/assets/title-empty.jpg
new file mode 100644
index 0000000..5864d6b
Binary files /dev/null and b/docs/v4/assets/title-empty.jpg differ
diff --git a/docs/v4/assets/title.jpg b/docs/v4/assets/title.jpg
new file mode 100644
index 0000000..75fcdc4
Binary files /dev/null and b/docs/v4/assets/title.jpg differ
diff --git a/docs/v4/assets/trianglify.png b/docs/v4/assets/trianglify.png
new file mode 100644
index 0000000..b846ac8
Binary files /dev/null and b/docs/v4/assets/trianglify.png differ
diff --git a/docs/v4/battery.html b/docs/v4/battery.html
new file mode 100644
index 0000000..5a8d732
--- /dev/null
+++ b/docs/v4/battery.html
@@ -0,0 +1,311 @@
+
+
+
+
wmic - which is used to determine temperature and battery sometimes needs to be run with admin
+ privileges. So if you do not get any values, try to run it again with according privileges. If you still do not get any
+ values, your system might not support this feature.
Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
const si = require('systeminformation');
+si.cpuTemperature().then(data => console.log(data));
+
+{ main: 42, cores: [], max: 42 }
+
+
+
+
+
Known issues
+
macOS - Temperature
+
+
To be able to measure temperature on macOS I created a little additional package. Due to some difficulties in NPM with optionalDependencies
+ I unfortunately was getting unexpected warnings on other platforms. So I decided to drop this optional dependency for macOS - so by default,
+ you will not get correct values.
+
+
But if you need to detect macOS temperature just run the following additional installation command:
+
+
$ npm install osx-temperature-sensor --save
+
systeminformation will then detect this additional library and return the temperature when calling systeminformations standard function cpuTemperature()
+
+
Windows Temperature
+
+
wmic - which is used to determine battery sometimes needs to be run with admin
+ privileges. So if you do not get any values, try to run it again with according privileges. If you still do not get any
+ values, your system might not support this feature.
In disksIO() and fsStats() the
+ results / sec. values (rx_sec, IOPS, ...) are calculated correctly beginning with the second call of the function.
+ It is determined by calculating the difference of transferred bytes / IOs divided by the time between two calls of the function.
+
+
The first time you are calling one of this functions, you will get -1 for transfer rates.
+ The second time, you should then get statistics based on the time between the two calls ...
+
+
So basically, if you e.g. need a values for filesystem stats stats every second, your code should look like this:
In this section you will learn how to get general systeminformation data. We will also cover the "get" and "get-all" functions to get partial or all data with one single call.
+
For function reference and examples we assume, that we imported systeminformation as follows:
+
const si = require('systeminformation');
+
Lib-Version and Time/Timezone
+
The first two functions just give back systeminformation library version number and time/timezone information of your machine. These are the only two functions not returning a promise (so they are not async functions):
+
+
+
+
Function
+
Result object
+
Linux
+
BSD
+
Mac
+
Win
+
Sun
+
Comments
+
+
+
+
+
si.version()
+
: string
+
X
+
X
+
X
+
X
+
X
+
lib version (no callback/promise)
+
+
+
si.time()
+
{...}
+
X
+
X
+
X
+
X
+
X
+
object (no callback/promise) with:
+
+
+
+
current
+
X
+
X
+
X
+
X
+
X
+
local (server) time
+
+
+
+
uptime
+
X
+
X
+
X
+
X
+
X
+
uptime in number of seconds
+
+
+
+
timezone
+
X
+
X
+
X
+
X
+
X
+
e.g. GMT+0200
+
+
+
+
timezoneName
+
X
+
X
+
X
+
X
+
X
+
e.g. CEST
+
+
+
+
Keep in mind, that there is another function si.versions() that will return versions of other system libraries and software packages
+
Get Defined Result Object
+
Normally you would call each of the functions (where you want to get detailed system information) seperately. The docs pages contain a full reference (with examples) for each available function. But there is also another really handy way to get a self-defined result object in one single call:
+
The si.get() function is an alternative, where you can obtain several system information data in one call. You can define a json object which represents the data structure you are expecting and the si.get() call will then return all of the requested data in a single result object
+
+
+
+
Function
+
Result object
+
Linux
+
BSD
+
Mac
+
Win
+
Sun
+
Comments
+
+
+
+
si.get(valueObject,cb)
+
{...}
+
X
+
X
+
X
+
X
+
X
+
get partial data at once Specify return object for all values that should be returned:
+
+
+
+
+
Example
+
const si = require('systeminformation');
+
+// define all values, you want to get back
+valueObject = {
+ cpu: '*',
+ osInfo: 'platform, release',
+ system: 'model, manufacturer'
+}
+
+si.get(valueObject).then(data => console.log(data));
The key names of the valueObject must be exactly the same as the representing function within systeminformation.
+
Providing parameters to the get() function
+
Now you can also provide parameters to get() functions (where needed). Just pass the parameters in parentheses right after the wanted keys: have a look at the folloging example:
+
+
+
+
Function
+
Result object
+
Linux
+
BSD
+
Mac
+
Win
+
Sun
+
Comments
+
+
+
+
si.get(valueObject,cb)
+
{...}
+
X
+
X
+
X
+
X
+
X
+
example with parameters: value in paretheses goes as parameter to the given function:
+
+
+
+
+
Example
+
const si = require('systeminformation');
+
+// define all values, you want to get back
+// here the value in paretheses goes as a parameter
+// to the processLoad function
+
+valueObject = {
+ processLoad: 'pids, cpu (postgres)'
+}
+si.get(valueObject).then(data => console.log(data));
The following three functions si.getStaticData(), si.getDynamicData() and si.getAllData() will return most of the available data in a single result object:
+
+
+
+
Function
+
Result object
+
Linux
+
BSD
+
Mac
+
Win
+
Sun
+
Comments
+
+
+
+
+
si.getStaticData(cb)
+
{...}
+
X
+
X
+
X
+
X
+
X
+
all static data at once
+
+
+
si.getDynamicData(srv,iface,cb)
+
{...}
+
X
+
X
+
X
+
X
+
X
+
all dynamic data at once Specify services and interfaces to monitor Defaults to first external network interface Pass "*" for ALL services (linux/win only) Pass "*" for ALL network interfaces
+
+
+
si.getAllData(srv,iface,cb)
+
{...}
+
X
+
X
+
X
+
X
+
X
+
all data at once Specify services and interfaces to monitor Defaults to first external network interface Pass "*" for ALL services (linux/win only) Pass "*" for ALL network interfaces
+
+
+
+
Static data is all hardware related (or more or less constant) data like system, baseboard, bios, OS, versions, cpu, network interfces, memory and disk layout
+
Dynamic data will return user, cpu-speed, load, processes, services, temperature, file system, network and disk stats, ...
+
As not all funtions are supported in each operating system the result object might be different in each OS.
+
ATTENTION: Use this only if you really need ALL information. Especially on Windows this can take really long (up to 20 seconds) because the underlying WMIC command is very slow when using it the first time.
Lightweight collection of 40+ functions to retrieve detailed hardware, system and OS information.
+
+
simple to use
+
get detailed information about system, cpu, baseboard, battery, memory, disks/filesystem, network, docker, software, services and processes
+
supports Linux, macOS, partial Windows, FreeBSD, OpenBSD, NetBSD and SunOS support
+
no npm dependencies (for production)
+
+
+
Core Concept
+
Node.js comes with some basic OS information, but I always wanted a little more. So I came up to write this
+ little library. This library is still work in progress. It requires node.js version 4.0 and above.
+
+
I was able to test it on several Debian, Raspbian, Ubuntu distributions as well as macOS (Mavericks, Yosemite, El Captain, Sierra, High Sierra, Mojave) and some Windows 7, Windows 10, FreeBSD, OpenBSD, NetBSD and SunOS machines.
+ Not all functions are supported on all operating systems. Have a look at the function reference in the docs to get further details.
+
If you have comments, suggestions & reports, please feel free to contact me on github!
+
I also created a nice little command line tool called mmon (micro-monitor) for Linux and macOS, also available via github and npm
+
+
Attention:
+
This library is supposed to be used as a node.js backend/server-side library and will definilely not work within a browser.
+
+
Installation
+
$ npm install systeminformation --save
+
Usage
+
All functions (except version and time) are implemented as asynchronous functions. Here a small example how to use them:
+
const si = require('systeminformation');
+
+// promises style - new since version 3
+si.cpu()
+ .then(data => console.log(data))
+ .catch(error => console.error(error));
+
+
Callback, Promises, Async Await
+
Remember: all functions (except version and time) are implemented as asynchronous functions! There are now three ways to consume them:
When omitting callback parameter (cb), then you can use all function in a promise oriented way. All functions (exept of version and time) are returning a promise, that you can consume:
wifiNetworks() detailed information about available wifi networks
+
+
Breaking Changes
+
+
networkStats(): will provide an array of stats for all given interfaces. In previous versions only one interface was provided as a parameter. Pass '*' for all interfaces
+
networkStats(): rx and tx changed to rx_bytes and tx_bytes
+
dockerContainerStats() will provide an array of stats for all given docker containers. In previous versions only one interface was provided as a parameter. Pass '*' for all docker containers
+
+
Other Changes
+
+
system(): optimized system detection (e.g. new Raspberry Pi models, ...)
+
system(), bios(), baseboard(): information also as non-root (linux)
+
graphics(): added pip, pip3, virtualBox,
+
versions(): better controller and display detection, fixes
Be aware, that the new version 4.x is NOT fully backward compatible to version 3.x ...
+
+
Major (breaking) Changes - Version 3
+
+
works only with node.js v4.0.0 and above (using now internal ES6 promise function, arrow functions, ...)
+
Promises. As you can see in the documentation, you can now also use it in a promise oriented way. But callbacks are still supported.
+
Async/Await. Due to the promises support, systeminformation also works perfectly with the `async/await` pattern (available in node.jsv7.6.0 and above). See example in the docs.
+
+
Full version history
+
+
+
+
Version
+
Date
+
Comment
+
+
+
+
+
4.34.9
+
2020-01-25
+
graphics() virtual controller vram value fix (win)
Lightweight collection of 40+ functions to retrieve detailed hardware, system and OS information. For Linux, macOS, partial Windows, FreeBSD, OpenBSD, NetBSD and SunOS support
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
10,943
+
Lines of code
+
+
+
...
+
Downloads last month
+
+
+
375
+
Dependents
+
+
+
+
+
+
+
+
+
+
Documentation
+
Detailed documentation and reference for Version 4.x.x
If you run into problems, please check out known issues page first. If you still have problems, please feel free to open an issue on our github page
+
Upcoming ...
+
MacOS on ARM - new hardware already arrived and we made quite a few changes to support Apple silicon M1 chips. Current status is documented here.
+
Verion 5: We are planning a new major version with some minor breaking changes and some additional features. We will try to make this available Q1 of 2021.
To be able to measure temperature on macOS I created a little additional package. Due to some difficulties in NPM with optionalDependencies
+ I unfortunately was getting unexpected warnings on other platforms. So I decided to drop this optional dependency for macOS - so by default,
+ you will not get correct values.
+
+
But if you need to detect macOS temperature just run the following additional installation command:
+
+
$ npm install osx-temperature-sensor --save
+
systeminformation will then detect this additional library and return the temperature when calling systeminformations standard function cpuTemperature()
+
+
Windows Temperature, Battery, ...
+
+
wmic - which is used to determine temperature and battery sometimes needs to be run with admin
+ privileges. So if you do not get any values, try to run it again with according privileges. If you still do not get any
+ values, your system might not support this feature. In some cases we also discovered that wmic returned incorrect temperature values.
+
+
Linux Temperature
+
+
In some cases you need to install the linux sensors package to be able to measure temperature e.g. on DEBIAN based systems by running
+
$ sudo apt-get install lm-sensors
+
+
Linux S.M.A.R.T. Status
+
+
To be able to detect S.M.A.R.T. status on Linux you need to install smartmontools. On DEBIAN based linux distributions you can install it by running:
+
$ sudo apt-get install smartmontools
+
If you have smartmontools version >= 7.0 then you will get also full smart data in diskLayout()
+
+
Stats Functions
+
To get correct values with fsStats(), disksIO() and networkStats() please check this guide
+
+
Empty / incorrect values
+
If you discover empty or incorrect values, please keep in mind that some underlying commands need to be run under admin privileges. So if you run your scripts as normal users, not all system information values can be determined. For linux this is e.g. the case for `memLayout()`, advances `system()`, `bios()`, `baseboard()`, `cpu()`information, S.M.A.R.T. status and others...
+
+
Finding New Issues
+
If you still have problems, please feel free to open an issue on our github page
In this section you will learn how to get detailed information about network interfaces, network connections and statistics as well as some internet related information (latency, check availability of site):
+
For function reference and examples we assume, that we imported systeminformation as follows:
const si = require('systeminformation');
+si.networkInterfaceDefault().then(data => console.log(data));
+
+eth0
+
+
+
si.networkGatewayDefault(cb)
+
: string
+
X
+
X
+
X
+
X
+
X
+
get default network gateway
+
+
+
+
+
Example
+
const si = require('systeminformation');
+si.networkGatewayDefault().then(data => console.log(data));
+
+192.168.0.1
+
+
+
si.networkStats(iface,cb)
+
[{...}]
+
X
+
X
+
X
+
X
+
+
current network stats of given interfaces, iface list: comma separated, iface parameter is optional, defaults to first external network interface, pass '*' for all interfaces
response-time (ms) to external resource host parameter is optional (default 8.8.8.8)
+
+
+
+
+
Example
+
const si = require('systeminformation');
+si.inetLatency().then(data => console.log(data));
+
+13.484
+
// Example with given host IP address
+const si = require('systeminformation');
+si.inetLatency('216.58.207.142').then(data => console.log(data));
+
+11.291
+
+
+
+
Getting correct stats values
+
+
In networkStats() the
+ results / sec. values (rx_sec, tx_sec, ...) are calculated correctly beginning with the second call of the function.
+ It is determined by calculating the difference of transferred bytes / IOs divided by the time between two calls of the function.
+
+
The first time you are calling one of this functions, you will get -1 for transfer rates.
+ The second time, you should then get statistics based on the time between the two calls ...
+
+
So basically, if you e.g. need a values for filesystem stats stats every second, your code should look like this:
In this section you will learn how to get information about the installed operating system, versions of installed development specific software packages, shell and users online:
+
For function reference and examples we assume, that we imported systeminformation as follows:
+
const si = require('systeminformation');
+
Operating System, Shell, Versions, Users
+
All functions in this section return a promise or can be called with a callback function (parameter cb in the function reference)
+
+
+
+
Function
+
Result object
+
Linux
+
BSD
+
Mac
+
Win
+
Sun
+
Comments
+
+
+
+
+
si.osInfo(cb)
+
{...}
+
X
+
X
+
X
+
X
+
X
+
OS information
+
+
+
+
platform
+
X
+
X
+
X
+
X
+
X
+
'linux', 'darwin', 'win32', ...
+
+
+
+
distro
+
X
+
X
+
X
+
X
+
X
+
+
+
+
+
release
+
X
+
X
+
X
+
X
+
X
+
+
+
+
+
codename
+
+
+
X
+
+
+
+
+
+
+
kernel
+
X
+
X
+
X
+
X
+
X
+
kernel release - same as os.release()
+
+
+
+
arch
+
X
+
X
+
X
+
X
+
X
+
same as os.arch()
+
+
+
+
hostname
+
X
+
X
+
X
+
X
+
X
+
same as os.hostname()
+
+
+
+
fqdn
+
X
+
X
+
X
+
X
+
X
+
fully qualfied domain name
+
+
+
+
codepage
+
X
+
X
+
X
+
X
+
+
OS build version
+
+
+
+
logofile
+
X
+
X
+
X
+
X
+
X
+
e.g. 'apple', 'debian', 'fedora', ...
+
+
+
+
serial
+
X
+
X
+
X
+
X
+
+
OS/Host serial number
+
+
+
+
build
+
X
+
+
X
+
X
+
+
OS build version
+
+
+
+
servicepack
+
+
+
+
X
+
+
service pack version
+
+
+
+
uefi
+
X
+
X
+
X
+
X
+
+
OS uses UEFI on startup
+
+
+
+
+
Example
+
const si = require('systeminformation');
+si.osInfo().then(data => console.log(data));
In currentLoad() the
+ results are calculated correctly beginning with the second call of the function.
+ It is determined by calculating the difference of cpu ticks between two calls of the function.
+
+
The first time you are calling one of this functions, you will get the load since cpu uptime.
+ The second time, you should then get statistics based on cpu ticks between the two calls ...
Here we had an issue that there was a possibility to inject commands to the command line of your machine via systeminformation. Affected commands: inetLatency().
+
+
Patch
+
Problem was fixed with a shell string sanitation fix. Please upgrade to version >= 4.31.1
+
+
Workarround
+
If you cannot upgrade, be sure to check or sanitize service parameter strings that are passed to inetLatency()
Here we had an issue that there was a possibility to inject commands to the command line by property pollution on the string object. Affected commands: inetChecksite().
+
+
Patch
+
Problem was fixed with a shell string sanitation fix as well as handling prototype polution. Please upgrade to version >= 4.30.5
+
+
Workarround
+
If you cannot upgrade, be sure to check or sanitize service parameter strings that are passed to inetChecksite()
Here we had an issue that there was a possibility to inject commands to the command line of your machine via systeminformation. Affected commands: inetChecksite().
+
+
Patch
+
Problem was fixed with a shell string sanitation fix. Please upgrade to version >= 4.27.11
+
+
Workarround
+
If you cannot upgrade, be sure to check or sanitize service parameter strings that are passed to inetChecksite()
In fsStats(), disksIO(), currentLoad() and networkStats() the
+ results / sec. values (rx_sec, IOPS, ...) are calculated correctly beginning with the second call of the function.
+ It is determined by calculating the difference of transferred bytes / IOs divided by the time between two calls of the function.
+
+
The first time you are calling one of this functions, you will get -1 for transfer rates.
+ The second time, you should then get statistics based on the time between the two calls ...
+
+
So basically, if you e.g. need a values for network stats every second, your code should look like this:
Beginning with the second call, you get network transfer values per second.
+
Observe System Parameters
+
systeminformation now allows you to easily observe system parameters: First you define a result object of system parameters you want to observe (see also decription of the si.get() function here):
+
Then you just call an si.observe() function with three parameters: your result object, the polling interval (in milliseconds) and a callback function. systeminformation will now observe the result object. Every time the result changes, your callback function is called. This callback function also gets the current value the observed system parameters object.
+
+
+
+
Function
+
Result object
+
Linux
+
BSD
+
Mac
+
Win
+
Sun
+
Comments
+
+
+
+
si.observe(valueObject,interval,cb)
+
-
+
X
+
X
+
X
+
X
+
X
+
Observe the defined value object, call callback on changes:
+
+
+
+
+
Example
+
const si = require('systeminformation');
+
+// define all values, you want to get back
+valueObject = {
+ battery: 'acconnected'
+}
+
+function usersCallback(data) {
+ console.log('Power usage now: ' + (data.battery.acconnected ? 'AC' : 'battery'));
+}
+
+// now define the observer function
+let observer = si.observe(valueObject, 1000, usersCallback);
+
+// In this example we stop our observer function after 30 seconds
+setTimeout(() => {
+ clearInterval(observer)
+}, 30000);
+
+
+
+
The key names of the valueObject must be exactly the same as the representing function in systeminformation.
The following trademarks are the properties of their respective owners as listed below. Should any trademark attribution be missing, mistaken or erroneous, please contact us as soon as possible for rectification.
+
+
Node.js is a trademark of Joyent Inc.
+
Linux is a registered trademark of Linus Torvalds
+
Apple, macOS, OS X are registered trademarks of Apple Inc.
+
Windows is a registered trademark of Microsoft Corporation
+
Intel is a trademark of Intel Corporation
+
AMD is a trademark of Advanced Micro Devices Inc.
+
Ryzen is a trademark of Advanced Micro Devices Inc.
+
Raspberry Pi is a trademark of the Raspberry Pi Foundation
+
Debian is a trademark of the Debian Project
+
FreeBSD is a registered trademark of The FreeBSD Foundation
+
NetBSD is a registered trademark of The NetBSD Foundation
+
Docker is a trademark of Docker, Inc.
+
Ubuntu is a trademark of Canonical Ltd.
+
CentOS is a trademark of Read Hat Inc.
+
Sun, Solaris, OpenSolaris are registered trademarks of Sun Microsystems
+
Virtual Box are registered trademarks of Oracle Corporation
+
BSD is a registered trademark of UUnet Technologies, Inc.
+
UNIX is a registered trademark of The Open Group.
+
NVIDIA is a registered trademark of NVIDIA Corporation.
+
MSI is a registered trademark Micro-Star International Co.
+
DELL is a registered trademark of Dell Inc.
+
ASUS is a registered trademark of ASUSTeK Computer.
+
Alpine is a trademark of Alpine Linux Development Team.
+
+
All other trademarks are the property of their respective owners.