systeminformation 5.9.0 → 5.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +13 -4
- package/lib/cpu.js +6 -1
- package/lib/filesystem.js +3 -3
- package/lib/graphics.js +24 -19
- package/lib/index.d.ts +13 -8
- package/lib/memory.js +1 -1
- package/lib/processes.js +1 -1
- package/lib/util.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -47,10 +47,13 @@ We had to make **several interface changes** to keep systeminformation as consis
|
|
|
47
47
|
- `cpu()`: added virtualization if cpu supports virtualization
|
|
48
48
|
- `cpu()`: now flags are part of this function
|
|
49
49
|
- `cpuTemperature()` added added socket and chipset temp (linux)
|
|
50
|
+
- `disksIO()` added wait time (linux)
|
|
50
51
|
- `diskLayout()`: added USB drives (mac OS)
|
|
52
|
+
- `diskLayout()`: added S.M.R.R.T. (win)
|
|
51
53
|
- `fsSize()`: added available
|
|
52
54
|
- `fsSize()`: improved calculation of used
|
|
53
55
|
- `getData()`: support for passing parameters and filters (see section General / getData)
|
|
56
|
+
- `graphics()`: extended properties (mac OS)
|
|
54
57
|
- `graphics()`: extended nvidia-smi parsing
|
|
55
58
|
- `networkInterfaces()`: type detection improved (win - wireless)
|
|
56
59
|
- `memLayout()`: extended manufacturer list (decoding)
|
|
@@ -77,6 +80,10 @@ For major (breaking) changes - **version 4, 3 and 2** - see end of page.
|
|
|
77
80
|
|
|
78
81
|
| Version | Date | Comment |
|
|
79
82
|
| -------------- | -------------- | -------- |
|
|
83
|
+
| 5.9.3 | 2021-09-17 | `processes()` fixed memVsz, Memrss (macOS M1) |
|
|
84
|
+
| 5.9.3 | 2021-09-17 | `cpuTemperature()` improved tdie detection (linus) |
|
|
85
|
+
| 5.9.2 | 2021-09-16 | `graohics()` (macOS), `memLayout()` (win) improvements |
|
|
86
|
+
| 5.9.1 | 2021-09-15 | `diskLayout()` fix size (macOS) |
|
|
80
87
|
| 5.9.0 | 2021-09-15 | `graphics()` new XML parser, added properties (macOS) |
|
|
81
88
|
| 5.8.9 | 2021-09-13 | `battery()` fix linux |
|
|
82
89
|
| 5.8.8 | 2021-09-11 | `wifiConnections()`, `wifiInterfaces()`, `wifiNetworks()` fix windows |
|
package/README.md
CHANGED
|
@@ -287,20 +287,29 @@ Full function reference with examples can be found at [https://systeminformation
|
|
|
287
287
|
| --------------- | ------------- | ----- | ------- | --- | --- | --- | -------- |
|
|
288
288
|
| si.graphics(cb) | {...} | X | | X | X | | arrays of graphics controllers and displays |
|
|
289
289
|
| | controllers[]| X | | X | X | | graphics controllers array |
|
|
290
|
-
| | ...[0].model | X | | X | X | | graphics controller model |
|
|
291
290
|
| | ...[0].vendor | X | | X | X | | e.g. ATI |
|
|
292
|
-
| | ...[0].
|
|
291
|
+
| | ...[0].vendorId | | | X | | | vendor ID |
|
|
292
|
+
| | ...[0].model | X | | X | X | | graphics controller model |
|
|
293
|
+
| | ...[0].deviceId | | | X | | | device ID |
|
|
293
294
|
| | ...[0].bus | X | | X | X | | on which bus (e.g. PCIe) |
|
|
294
295
|
| | ...[0].vram | X | | X | X | | VRAM size (in MB) |
|
|
295
296
|
| | ...[0].vramDynamic | X | | X | X | | true if dynamicly allocated ram |
|
|
297
|
+
| | ...[0].external | | | X | | | is external GPU |
|
|
298
|
+
| | ...[0].cores | | | X | | | Apple silicon only |
|
|
299
|
+
| | ...[0].metalVersion | | | X | | | Apple Metal Version |
|
|
296
300
|
| | displays[] | X | | X | X | | monitor/display array |
|
|
297
301
|
| | ...[0].vendor | | | | X | | monitor/display vendor |
|
|
302
|
+
| | ...[0].vendorId | | | X | | | vendor ID |
|
|
303
|
+
| | ...[0].deviceName | | | | X | | e.g. \\\\.\\DISPLAY1 |
|
|
298
304
|
| | ...[0].model | X | | X | X | | monitor/display model |
|
|
305
|
+
| | ...[0].productionYear | | | X | | | production year |
|
|
306
|
+
| | ...[0].serial | | | X | | | serial number |
|
|
307
|
+
| | ...[0].displayId | | | X | | | display ID |
|
|
299
308
|
| | ...[0].main | X | | X | X| | true if main monitor |
|
|
300
309
|
| | ...[0].builtin | X | | X | | | true if built in monitor |
|
|
301
310
|
| | ...[0].connection | X | | X | X | | e.g. DisplayPort or HDMI |
|
|
302
|
-
| | ...[0].sizeX | X | |
|
|
303
|
-
| | ...[0].sizeY | X | |
|
|
311
|
+
| | ...[0].sizeX | X | | | X | | size in mm horizontal |
|
|
312
|
+
| | ...[0].sizeY | X | | | X | | size in mm vertical |
|
|
304
313
|
| | ...[0].pixelDepth | X | | X | X | | color depth in bits |
|
|
305
314
|
| | ...[0].resolutionX | X | | X | X | | pixel horizontal |
|
|
306
315
|
| | ...[0].resolutionY | X | | X | X | | pixel vertical |
|
package/lib/cpu.js
CHANGED
|
@@ -967,7 +967,12 @@ function cpuTemperature(callback) {
|
|
|
967
967
|
const cmd = 'for mon in /sys/class/hwmon/hwmon*; do for label in "$mon"/temp*_label; do if [ -f $label ]; then value=$(echo $label | rev | cut -c 7- | rev)_input; if [ -f "$value" ]; then echo $(cat "$label")___$(cat "$value"); fi; fi; done; done;';
|
|
968
968
|
try {
|
|
969
969
|
exec(cmd, function (error, stdout) {
|
|
970
|
-
|
|
970
|
+
stdout = stdout.toString();
|
|
971
|
+
const tdiePos = stdout.toLowerCase().indexOf('tdie');
|
|
972
|
+
if (tdiePos !== -1) {
|
|
973
|
+
stdout = stdout.substring(tdiePos);
|
|
974
|
+
}
|
|
975
|
+
let lines = stdout.split('\n');
|
|
971
976
|
lines.forEach(line => {
|
|
972
977
|
const parts = line.split('___');
|
|
973
978
|
const label = parts[0];
|
package/lib/filesystem.js
CHANGED
|
@@ -989,7 +989,7 @@ function diskLayout(callback) {
|
|
|
989
989
|
if (sizeStr) {
|
|
990
990
|
let sizeValue = 0;
|
|
991
991
|
if (sizeStr.indexOf('(') >= 0) {
|
|
992
|
-
sizeValue = parseInt(sizeStr.match(/\(([^)]+)\)/)[1].replace(/\./g, '').replace(/,/g, '').replace(/
|
|
992
|
+
sizeValue = parseInt(sizeStr.match(/\(([^)]+)\)/)[1].replace(/\./g, '').replace(/,/g, '').replace(/\s/g, ''));
|
|
993
993
|
}
|
|
994
994
|
if (!sizeValue) {
|
|
995
995
|
sizeValue = parseInt(sizeStr);
|
|
@@ -1037,7 +1037,7 @@ function diskLayout(callback) {
|
|
|
1037
1037
|
if (sizeStr) {
|
|
1038
1038
|
let sizeValue = 0;
|
|
1039
1039
|
if (sizeStr.indexOf('(') >= 0) {
|
|
1040
|
-
sizeValue = parseInt(sizeStr.match(/\(([^)]+)\)/)[1].replace(/\./g, '').replace(/,/g, '').replace(/
|
|
1040
|
+
sizeValue = parseInt(sizeStr.match(/\(([^)]+)\)/)[1].replace(/\./g, '').replace(/,/g, '').replace(/\s/g, ''));
|
|
1041
1041
|
}
|
|
1042
1042
|
if (!sizeValue) {
|
|
1043
1043
|
sizeValue = parseInt(sizeStr);
|
|
@@ -1082,7 +1082,7 @@ function diskLayout(callback) {
|
|
|
1082
1082
|
if (sizeStr) {
|
|
1083
1083
|
let sizeValue = 0;
|
|
1084
1084
|
if (sizeStr.indexOf('(') >= 0) {
|
|
1085
|
-
sizeValue = parseInt(sizeStr.match(/\(([^)]+)\)/)[1].replace(/\./g, '').replace(/,/g, '').replace(/
|
|
1085
|
+
sizeValue = parseInt(sizeStr.match(/\(([^)]+)\)/)[1].replace(/\./g, '').replace(/,/g, '').replace(/\s/g, ''));
|
|
1086
1086
|
}
|
|
1087
1087
|
if (!sizeValue) {
|
|
1088
1088
|
sizeValue = parseInt(sizeStr);
|
package/lib/graphics.js
CHANGED
|
@@ -68,17 +68,17 @@ function getVendorFromModel(model) {
|
|
|
68
68
|
{ pattern: '^ACER.+', manufacturer: 'Acer' },
|
|
69
69
|
{ pattern: '^AOC.+', manufacturer: 'AOC Monitors' },
|
|
70
70
|
{ pattern: '^HP.+', manufacturer: 'HP' },
|
|
71
|
-
{ pattern: '^EIZO
|
|
72
|
-
{ pattern: '^PHILIPS
|
|
73
|
-
{ pattern: '^IIYAMA
|
|
74
|
-
{ pattern: '^SHARP
|
|
75
|
-
{ pattern: '^NEC
|
|
76
|
-
{ pattern: '^LENOVO
|
|
77
|
-
{ pattern: 'COMPAQ
|
|
78
|
-
{ pattern: 'APPLE
|
|
79
|
-
{ pattern: 'INTEL
|
|
80
|
-
{ pattern: 'AMD
|
|
81
|
-
{ pattern: 'NVIDIA
|
|
71
|
+
{ pattern: '^EIZO.?', manufacturer: 'Eizo' },
|
|
72
|
+
{ pattern: '^PHILIPS.?', manufacturer: 'Philips' },
|
|
73
|
+
{ pattern: '^IIYAMA.?', manufacturer: 'Iiyama' },
|
|
74
|
+
{ pattern: '^SHARP.?', manufacturer: 'Sharp' },
|
|
75
|
+
{ pattern: '^NEC.?', manufacturer: 'NEC' },
|
|
76
|
+
{ pattern: '^LENOVO.?', manufacturer: 'Lenovo' },
|
|
77
|
+
{ pattern: 'COMPAQ.?', manufacturer: 'Compaq' },
|
|
78
|
+
{ pattern: 'APPLE.?', manufacturer: 'Apple' },
|
|
79
|
+
{ pattern: 'INTEL.?', manufacturer: 'Intel' },
|
|
80
|
+
{ pattern: 'AMD.?', manufacturer: 'AMD' },
|
|
81
|
+
{ pattern: 'NVIDIA.?', manufacturer: 'NVDIA' },
|
|
82
82
|
];
|
|
83
83
|
|
|
84
84
|
let result = '';
|
|
@@ -125,6 +125,11 @@ function getMetalVersion(id) {
|
|
|
125
125
|
'spdisplays_mtlgpufamilyapple5': 'apple5',
|
|
126
126
|
'spdisplays_mtlgpufamilyapple6': 'apple6',
|
|
127
127
|
'spdisplays_mtlgpufamilyapple7': 'apple7',
|
|
128
|
+
'spdisplays_metalfeaturesetfamily11': 'family1_v1',
|
|
129
|
+
'spdisplays_metalfeaturesetfamily12': 'family1_v2',
|
|
130
|
+
'spdisplays_metalfeaturesetfamily13': 'family1_v3',
|
|
131
|
+
'spdisplays_metalfeaturesetfamily14': 'family1_v4',
|
|
132
|
+
'spdisplays_metalfeaturesetfamily21': 'family2_v1'
|
|
128
133
|
};
|
|
129
134
|
return families[id] || '';
|
|
130
135
|
}
|
|
@@ -139,16 +144,16 @@ function graphics(callback) {
|
|
|
139
144
|
try {
|
|
140
145
|
graphicsArr.forEach(function (item) {
|
|
141
146
|
// controllers
|
|
142
|
-
const bus = ((item.sppci_bus || '').indexOf('builtin') ? 'Built-In' : ((item.sppci_bus || '').indexOf('pcie') ? '
|
|
143
|
-
const vram = (parseInt((item.
|
|
144
|
-
const vramDyn = (parseInt((item.
|
|
147
|
+
const bus = ((item.sppci_bus || '').indexOf('builtin') > -1 ? 'Built-In' : ((item.sppci_bus || '').indexOf('pcie') > -1 ? 'PCIe' : ''));
|
|
148
|
+
const vram = (parseInt((item.spdisplays_vram || ''), 10) || 0) * (((item.spdisplays_vram || '').indexOf('GB') > -1) ? 1024 : 1);
|
|
149
|
+
const vramDyn = (parseInt((item.spdisplays_vram_shared || ''), 10) || 0) * (((item.spdisplays_vram_shared || '').indexOf('GB') > -1) ? 1024 : 1);
|
|
145
150
|
let metalVersion = getMetalVersion(item.spdisplays_metal || item.spdisplays_metalfamily || '');
|
|
146
151
|
res.controllers.push({
|
|
147
152
|
vendor: getVendorFromModel(item.spdisplays_vendor || '') || item.spdisplays_vendor || '',
|
|
148
153
|
model: item.sppci_model || '',
|
|
149
154
|
bus,
|
|
150
155
|
vramDynamic: bus === 'Built-In',
|
|
151
|
-
vram: vram || vramDyn ||
|
|
156
|
+
vram: vram || vramDyn || null,
|
|
152
157
|
deviceId: item['spdisplays_device-id'] || '',
|
|
153
158
|
vendorId: item['spdisplays_vendor-id'] || vendorToId((item['spdisplays_vendor'] || '') + (item.sppci_model || '')),
|
|
154
159
|
external: (item.sppci_device_type === 'spdisplays_egpu'),
|
|
@@ -159,7 +164,7 @@ function graphics(callback) {
|
|
|
159
164
|
// displays
|
|
160
165
|
if (item.spdisplays_ndrvs && item.spdisplays_ndrvs.length) {
|
|
161
166
|
item.spdisplays_ndrvs.forEach(function (displayItem) {
|
|
162
|
-
const connectionType = displayItem['spdisplays_connection_type'];
|
|
167
|
+
const connectionType = displayItem['spdisplays_connection_type'] || '';
|
|
163
168
|
const currentResolutionParts = (displayItem['_spdisplays_resolution'] || '').split('@');
|
|
164
169
|
const currentResolution = currentResolutionParts[0].split('x');
|
|
165
170
|
const pixelParts = (displayItem['_spdisplays_pixels'] || '').split('x');
|
|
@@ -172,9 +177,9 @@ function graphics(callback) {
|
|
|
172
177
|
productionYear: displayItem['_spdisplays_display-year'] || null,
|
|
173
178
|
serial: serial !== '0' ? serial : null,
|
|
174
179
|
displayId: displayItem['_spdisplays_displayID'] || null,
|
|
175
|
-
main: displayItem['spdisplays_main'] ? displayItem['spdisplays_main'] === 'spdisplays_yes' :
|
|
176
|
-
builtin: (displayItem['spdisplays_display_type'] || '').indexOf('built-in')
|
|
177
|
-
connection: ((connectionType.indexOf('_internal')) ? 'Internal' : ((connectionType.indexOf('_displayport')) ? 'Display Port' : ((connectionType.indexOf('_hdmi')) ? 'HDMI' :
|
|
180
|
+
main: displayItem['spdisplays_main'] ? displayItem['spdisplays_main'] === 'spdisplays_yes' : false,
|
|
181
|
+
builtin: (displayItem['spdisplays_display_type'] || '').indexOf('built-in') > -1,
|
|
182
|
+
connection: ((connectionType.indexOf('_internal') > -1) ? 'Internal' : ((connectionType.indexOf('_displayport') > -1) ? 'Display Port' : ((connectionType.indexOf('_hdmi') > -1) ? 'HDMI' : null))),
|
|
178
183
|
sizeX: null,
|
|
179
184
|
sizeY: null,
|
|
180
185
|
pixelDepth: (pixelDepthString === 'CGSThirtyBitColor' ? 30 : (pixelDepthString === 'CGSThirtytwoBitColor' ? 32 : (pixelDepthString === 'CGSTwentyfourBitColor' ? 24 : ''))),
|
package/lib/index.d.ts
CHANGED
|
@@ -151,16 +151,16 @@ export namespace Systeminformation {
|
|
|
151
151
|
info_name: string;
|
|
152
152
|
type: string;
|
|
153
153
|
protocol: string;
|
|
154
|
-
}
|
|
154
|
+
};
|
|
155
155
|
model_family?: string,
|
|
156
156
|
model_name?: string,
|
|
157
157
|
serial_number?: string,
|
|
158
158
|
firmware_version?: string,
|
|
159
159
|
smart_status: {
|
|
160
160
|
passed: boolean;
|
|
161
|
-
}
|
|
161
|
+
};
|
|
162
162
|
trim?: {
|
|
163
|
-
supported: boolean
|
|
163
|
+
supported: boolean;
|
|
164
164
|
},
|
|
165
165
|
ata_smart_attributes?: {
|
|
166
166
|
revision: number;
|
|
@@ -181,7 +181,7 @@ export namespace Systeminformation {
|
|
|
181
181
|
event_count: boolean;
|
|
182
182
|
auto_keep: boolean;
|
|
183
183
|
};
|
|
184
|
-
raw: { value: number; string: string }
|
|
184
|
+
raw: { value: number; string: string; };
|
|
185
185
|
}[];
|
|
186
186
|
};
|
|
187
187
|
ata_smart_error_log?: {
|
|
@@ -209,10 +209,10 @@ export namespace Systeminformation {
|
|
|
209
209
|
error_count_total: number;
|
|
210
210
|
error_count_outdated: number;
|
|
211
211
|
};
|
|
212
|
-
}
|
|
212
|
+
};
|
|
213
213
|
nvme_pci_vendor?: {
|
|
214
214
|
id: number,
|
|
215
|
-
subsystem_id: number
|
|
215
|
+
subsystem_id: number;
|
|
216
216
|
},
|
|
217
217
|
nvme_smart_health_information_log?: {
|
|
218
218
|
critical_warning?: number,
|
|
@@ -232,11 +232,11 @@ export namespace Systeminformation {
|
|
|
232
232
|
num_err_log_entries?: number,
|
|
233
233
|
warning_temp_time?: number,
|
|
234
234
|
critical_comp_time?: number,
|
|
235
|
-
temperature_sensors?: number[]
|
|
235
|
+
temperature_sensors?: number[];
|
|
236
236
|
},
|
|
237
237
|
user_capacity?: {
|
|
238
238
|
blocks: number,
|
|
239
|
-
bytes: number
|
|
239
|
+
bytes: number;
|
|
240
240
|
},
|
|
241
241
|
logical_block_size?: number,
|
|
242
242
|
temperature: {
|
|
@@ -294,11 +294,16 @@ export namespace Systeminformation {
|
|
|
294
294
|
|
|
295
295
|
interface GraphicsControllerData {
|
|
296
296
|
vendor: string;
|
|
297
|
+
vendorId?: string;
|
|
297
298
|
model: string;
|
|
299
|
+
deviceId?: string;
|
|
298
300
|
bus: string;
|
|
299
301
|
busAddress?: string;
|
|
300
302
|
vram: number;
|
|
301
303
|
vramDynamic: boolean;
|
|
304
|
+
external?: boolean;
|
|
305
|
+
cores?: number;
|
|
306
|
+
metalVersion?: string;
|
|
302
307
|
subDeviceId?: string;
|
|
303
308
|
driverVersion?: string;
|
|
304
309
|
name?: string;
|
package/lib/memory.js
CHANGED
|
@@ -508,7 +508,7 @@ function memLayout(callback) {
|
|
|
508
508
|
result.push({
|
|
509
509
|
size: parseInt(util.getValue(lines, 'Capacity', '='), 10) || 0,
|
|
510
510
|
bank: util.getValue(lines, 'abel', '='), // BankLabel
|
|
511
|
-
type: memoryTypes[parseInt(util.getValue(lines, 'MemoryType', '='), 10)],
|
|
511
|
+
type: memoryTypes[parseInt(util.getValue(lines, 'MemoryType', '='), 10) || parseInt(util.getValue(lines, 'SMBIOSMemoryType', '='), 10)],
|
|
512
512
|
ecc: dataWidth && totalWidth ? totalWidth > dataWidth : false,
|
|
513
513
|
clockSpeed: parseInt(util.getValue(lines, 'ConfiguredClockSpeed', '='), 10) || parseInt(util.getValue(lines, 'Speed', '='), 10) || 0,
|
|
514
514
|
formFactor: FormFactors[parseInt(util.getValue(lines, 'FormFactor', '='), 10) || 0],
|
package/lib/processes.js
CHANGED
|
@@ -686,7 +686,7 @@ function processes(callback) {
|
|
|
686
686
|
if (_linux || _freebsd || _openbsd || _netbsd || _darwin || _sunos) {
|
|
687
687
|
if (_linux) { cmd = 'export LC_ALL=C; ps -axo pid:11,ppid:11,pcpu:6,pmem:6,pri:5,vsz:11,rss:11,ni:5,lstart:30,state:5,tty:15,user:20,command; unset LC_ALL'; }
|
|
688
688
|
if (_freebsd || _openbsd || _netbsd) { cmd = 'export LC_ALL=C; ps -axo pid,ppid,pcpu,pmem,pri,vsz,rss,ni,lstart,state,tty,user,command; unset LC_ALL'; }
|
|
689
|
-
if (_darwin) { cmd = '
|
|
689
|
+
if (_darwin) { cmd = 'ps -axo pid,ppid,pcpu,pmem,pri,vsz=xxx_fake_title,rss=fake_title2,nice,lstart,state,tty,user,command -r'; }
|
|
690
690
|
if (_sunos) { cmd = 'ps -Ao pid,ppid,pcpu,pmem,pri,vsz,rss,nice,stime,s,tty,user,comm'; }
|
|
691
691
|
exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {
|
|
692
692
|
if (!error && stdout.toString().trim()) {
|
package/lib/util.js
CHANGED
|
@@ -1043,7 +1043,7 @@ function plistParser(xmlStr) {
|
|
|
1043
1043
|
} else {
|
|
1044
1044
|
let nextTagPos = getNextTagPos();
|
|
1045
1045
|
let nextClosePos = getNextClosingTagPos(cpos.tag);
|
|
1046
|
-
nextClosePosBlock = closingTag ? getNextClosingTagPos(closingTag) : 999999;
|
|
1046
|
+
// nextClosePosBlock = closingTag ? getNextClosingTagPos(closingTag) : 999999;
|
|
1047
1047
|
if (nextClosePos < nextTagPos.pos) {
|
|
1048
1048
|
if (cpos.tag === 'key') {
|
|
1049
1049
|
key = xmlStr.substring(0, nextClosePos);
|
package/package.json
CHANGED