From 823503d876a1d90384a1667ddcc092c4f9665cc1 Mon Sep 17 00:00:00 2001 From: Sebastian Hildebrandt Date: Tue, 17 Dec 2024 22:30:49 +0100 Subject: [PATCH] chassis(): new chassis detection (macOS) --- lib/system.js | 12 +- lib/util.js | 1161 +++++++++++++++++++++++++++++++++++++++++++++++++ lib/wifi.js | 2 +- 3 files changed, 1168 insertions(+), 7 deletions(-) diff --git a/lib/system.js b/lib/system.js index a4f9677..c310a97 100644 --- a/lib/system.js +++ b/lib/system.js @@ -688,13 +688,13 @@ function chassis(callback) { exec('ioreg -c IOPlatformExpertDevice -d 2', function (error, stdout) { if (!error) { let lines = stdout.toString().replace(/[<>"]/g, '').split('\n'); - const model = util.getValue(lines, 'model', '=', true); - const modelParts = util.splitByNumber(model); - const version = util.getValue(lines, 'version', '=', true); + const model = util.getAppleModel(util.getValue(lines, 'model', '=', true)); + // const modelParts = util.splitByNumber(model); + // const version = util.getValue(lines, 'version', '=', true); result.manufacturer = util.getValue(lines, 'manufacturer', '=', true); - result.model = version ? util.getValue(lines, 'model', '=', true) : modelParts[0]; - result.type = macOsChassisType(result.model); - result.version = version || model; + result.model = model.model; + result.type = macOsChassisType(model.model); + result.version = model.version; result.serial = util.getValue(lines, 'ioplatformserialnumber', '=', true); result.assetTag = util.getValue(lines, 'board-id', '=', true) || util.getValue(lines, 'target-type', '=', true); result.sku = util.getValue(lines, 'target-sub-type', '=', true); diff --git a/lib/util.js b/lib/util.js index ab85f62..8a3ce5e 100644 --- a/lib/util.js +++ b/lib/util.js @@ -1323,6 +1323,1166 @@ function semverCompare(v1, v2) { return res; } +function getAppleModel(key) { + const appleModelIds = [ + { + key: 'Mac15,12', + name: 'MacBook Air', + size: '13-inch', + processor: 'M3', + year: '2024', + additional: '' + }, + { + key: 'Mac14,15', + name: 'MacBook Air', + size: '15-inch', + processor: 'M2', + year: '2024', + additional: '' + }, + { + key: 'Mac14,2', + name: 'MacBook Air', + size: '13-inch', + processor: 'M2', + year: '2022', + additional: '' + }, + { + key: 'MacBookAir10,1', + name: 'MacBook Air', + size: '13-inch', + processor: 'M1', + year: '2020', + additional: '' + }, + { + key: 'MacBookAir9,1', + name: 'MacBook Air', + size: '13-inch', + processor: '', + year: '2020', + additional: '' + }, + { + key: 'MacBookAir8,2', + name: 'MacBook Air', + size: '13-inch', + processor: '', + year: '2019', + additional: '' + }, + { + key: 'MacBookAir8,1', + name: 'MacBook Air', + size: '13-inch', + processor: '', + year: '2018', + additional: '' + }, + { + key: 'MacBookAir7,2', + name: 'MacBook Air', + size: '13-inch', + processor: '', + year: '2017', + additional: '' + }, + { + key: 'MacBookAir7,2', + name: 'MacBook Air', + size: '13-inch', + processor: '', + year: 'Early 2015', + additional: '' + }, + { + key: 'MacBookAir7,1', + name: 'MacBook Air', + size: '11-inch', + processor: '', + year: 'Early 2015', + additional: '' + }, + { + key: 'MacBookAir6,2', + name: 'MacBook Air', + size: '13-inch', + processor: '', + year: 'Early 2014', + additional: '' + }, + { + key: 'MacBookAir6,1', + name: 'MacBook Air', + size: '11-inch', + processor: '', + year: 'Early 2014', + additional: '' + }, + { + key: 'MacBookAir6,2', + name: 'MacBook Air', + size: '13-inch', + processor: '', + year: 'Mid 2013', + additional: '' + }, + { + key: 'MacBookAir6,1', + name: 'MacBook Air', + size: '11-inch', + processor: '', + year: 'Mid 2013', + additional: '' + }, + { + key: 'MacBookAir5,2', + name: 'MacBook Air', + size: '13-inch', + processor: '', + year: 'Mid 2012', + additional: '' + }, + { + key: 'MacBookAir5,1', + name: 'MacBook Air', + size: '11-inch', + processor: '', + year: 'Mid 2012', + additional: '' + }, + { + key: 'MacBookAir4,2', + name: 'MacBook Air', + size: '13-inch', + processor: '', + year: 'Mid 2011', + additional: '' + }, + { + key: 'MacBookAir4,1', + name: 'MacBook Air', + size: '11-inch', + processor: '', + year: 'Mid 2011', + additional: '' + }, + { + key: 'MacBookAir3,2', + name: 'MacBook Air', + size: '13-inch', + processor: '', + year: 'Late 2010', + additional: '' + }, + { + key: 'MacBookAir3,1', + name: 'MacBook Air', + size: '11-inch', + processor: '', + year: 'Late 2010', + additional: '' + }, + { + key: 'MacBookAir2,1', + name: 'MacBook Air', + size: '13-inch', + processor: '', + year: 'Mid 2009', + additional: '' + }, + { + key: 'Mac16,1', + name: 'MacBook Pro', + size: '14-inch', + processor: 'M4', + year: '2024', + additional: '' + }, + { + key: 'Mac16,6', + name: 'MacBook Pro', + size: '14-inch', + processor: 'M4 Pro', + year: '2024', + additional: '' + }, + { + key: 'Mac16,8', + name: 'MacBook Pro', + size: '14-inch', + processor: 'M4 Max', + year: '2024', + additional: '' + }, + { + key: 'Mac16,5', + name: 'MacBook Pro', + size: '16-inch', + processor: 'M4 Pro', + year: '2024', + additional: '' + }, + { + key: 'Mac16,6', + name: 'MacBook Pro', + size: '16-inch', + processor: 'M4 Max', + year: '2024', + additional: '' + }, + { + key: 'Mac15,3', + name: 'MacBook Pro', + size: '14-inch', + processor: 'M3', + year: 'Nov 2023', + additional: '' + }, + { + key: 'Mac15,6', + name: 'MacBook Pro', + size: '14-inch', + processor: 'M3 Pro', + year: 'Nov 2023', + additional: '' + }, + { + key: 'Mac15,8', + name: 'MacBook Pro', + size: '14-inch', + processor: 'M3 Pro', + year: 'Nov 2023', + additional: '' + }, + { + key: 'Mac15,10', + name: 'MacBook Pro', + size: '14-inch', + processor: 'M3 Max', + year: 'Nov 2023', + additional: '' + }, + { + key: 'Mac15,7', + name: 'MacBook Pro', + size: '16-inch', + processor: 'M3 Pro', + year: 'Nov 2023', + additional: '' + }, + { + key: 'Mac15,9', + name: 'MacBook Pro', + size: '16-inch', + processor: 'M3 Pro', + year: 'Nov 2023', + additional: '' + }, + { + key: 'Mac15,11', + name: 'MacBook Pro', + size: '16-inch', + processor: 'M3 Max', + year: 'Nov 2023', + additional: '' + }, + { + key: 'Mac14,5', + name: 'MacBook Pro', + size: '14-inch', + processor: 'M2 Max', + year: '2023', + additional: '' + }, + { + key: 'Mac14,9', + name: 'MacBook Pro', + size: '14-inch', + processor: 'M2 Max', + year: '2023', + additional: '' + }, + { + key: 'Mac14,6', + name: 'MacBook Pro', + size: '16-inch', + processor: 'M2 Max', + year: '2023', + additional: '' + }, + { + key: 'Mac14,10', + name: 'MacBook Pro', + size: '16-inch', + processor: 'M2 Max', + year: '2023', + additional: '' + }, + { + key: 'Mac14,7', + name: 'MacBook Pro', + size: '13-inch', + processor: 'M2', + year: '2022', + additional: '' + }, + { + key: 'MacBookPro18,3', + name: 'MacBook Pro', + size: '14-inch', + processor: 'M1 Pro', + year: '2021', + additional: '' + }, + { + key: 'MacBookPro18,4', + name: 'MacBook Pro', + size: '14-inch', + processor: 'M1 Max', + year: '2021', + additional: '' + }, + { + key: 'MacBookPro18,1', + name: 'MacBook Pro', + size: '16-inch', + processor: 'M1 Pro', + year: '2021', + additional: '' + }, + { + key: 'MacBookPro18,2', + name: 'MacBook Pro', + size: '16-inch', + processor: 'M1 Max', + year: '2021', + additional: '' + }, + { + key: 'MacBookPro17,1', + name: 'MacBook Pro', + size: '13-inch', + processor: 'M1', + year: '2020', + additional: '' + }, + { + key: 'MacBookPro16,3', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: '2020', + additional: 'Two Thunderbolt 3 ports' + }, + { + key: 'MacBookPro16,2', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: '2020', + additional: 'Four Thunderbolt 3 ports' + }, + { + key: 'MacBookPro16,1', + name: 'MacBook Pro', + size: '16-inch', + processor: '', + year: '2019', + additional: '' + }, + { + key: 'MacBookPro16,4', + name: 'MacBook Pro', + size: '16-inch', + processor: '', + year: '2019', + additional: '' + }, + { + key: 'MacBookPro15,3', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: '2019', + additional: '' + }, + { + key: 'MacBookPro15,2', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: '2019', + additional: '' + }, + { + key: 'MacBookPro15,1', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: '2019', + additional: '' + }, + { + key: 'MacBookPro15,4', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: '2019', + additional: 'Two Thunderbolt 3 ports' + }, + { + key: 'MacBookPro15,1', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: '2018', + additional: '' + }, + { + key: 'MacBookPro15,2', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: '2018', + additional: 'Four Thunderbolt 3 ports' + }, + { + key: 'MacBookPro14,1', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: '2017', + additional: 'Two Thunderbolt 3 ports' + }, + { + key: 'MacBookPro14,2', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: '2017', + additional: 'Four Thunderbolt 3 ports' + }, + { + key: 'MacBookPro14,3', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: '2017', + additional: '' + }, + { + key: 'MacBookPro13,1', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: '2016', + additional: 'Two Thunderbolt 3 ports' + }, + { + key: 'MacBookPro13,2', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: '2016', + additional: 'Four Thunderbolt 3 ports' + }, + { + key: 'MacBookPro13,3', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: '2016', + additional: '' + }, + { + key: 'MacBookPro11,4', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: 'Mid 2015', + additional: '' + }, + { + key: 'MacBookPro11,5', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: 'Mid 2015', + additional: '' + }, + { + key: 'MacBookPro12,1', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: 'Early 2015', + additional: '' + }, + { + key: 'MacBookPro11,2', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: 'Late 2013', + additional: '' + }, + { + key: 'MacBookPro11,3', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: 'Late 2013', + additional: '' + }, + { + key: 'MacBookPro11,1', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: 'Late 2013', + additional: '' + }, + { + key: 'MacBookPro10,1', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: 'Mid 2012', + additional: '' + }, + { + key: 'MacBookPro10,2', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: 'Late 2012', + additional: '' + }, + { + key: 'MacBookPro9,1', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: 'Mid 2012', + additional: '' + }, + { + key: 'MacBookPro9,2', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: 'Mid 2012', + additional: '' + }, + { + key: 'MacBookPro8,3', + name: 'MacBook Pro', + size: '17-inch', + processor: '', + year: 'Early 2011', + additional: '' + }, + { + key: 'MacBookPro8,2', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: 'Early 2011', + additional: '' + }, + { + key: 'MacBookPro8,1', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: 'Early 2011', + additional: '' + }, + { + key: 'MacBookPro6,1', + name: 'MacBook Pro', + size: '17-inch', + processor: '', + year: 'Mid 2010', + additional: '' + }, + { + key: 'MacBookPro6,2', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: 'Mid 2010', + additional: '' + }, + { + key: 'MacBookPro7,1', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: 'Mid 2010', + additional: '' + }, + { + key: 'MacBookPro5,2', + name: 'MacBook Pro', + size: '17-inch', + processor: '', + year: 'Early 2009', + additional: '' + }, + { + key: 'MacBookPro5,3', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: 'Mid 2009', + additional: '' + }, + { + key: 'MacBookPro5,5', + name: 'MacBook Pro', + size: '13-inch', + processor: '', + year: 'Mid 2009', + additional: '' + }, + { + key: 'MacBookPro5,1', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: 'Late 2008', + additional: '' + }, + { + key: 'MacBookPro4,1', + name: 'MacBook Pro', + size: '15-inch', + processor: '', + year: 'Early 2008', + additional: '' + }, + { + key: 'MacBook10,1', + name: 'MacBook', + size: '12-inch', + processor: '', + year: '2017', + additional: '' + }, + { + key: 'MacBook9,1', + name: 'MacBook', + size: '12-inch', + processor: '', + year: 'Early 2016', + additional: '' + }, + { + key: 'MacBook8,1', + name: 'MacBook', + size: '12-inch', + processor: '', + year: 'Early 2015', + additional: '' + }, + { + key: 'MacBook7,1', + name: 'MacBook', + size: '13-inch', + processor: '', + year: 'Mid 2010', + additional: '' + }, + { + key: 'MacBook6,1', + name: 'MacBook', + size: '13-inch', + processor: '', + year: 'Late 2009', + additional: '' + }, + { + key: 'MacBook5,2', + name: 'MacBook', + size: '13-inch', + processor: '', + year: 'Early 2009', + additional: '' + }, + { + key: 'Mac14,13', + name: 'Mac Studio', + size: '', + processor: '', + year: '2023', + additional: '' + }, + { + key: 'Mac14,14', + name: 'Mac Studio', + size: '', + processor: '', + year: '2023', + additional: '' + }, + { + key: 'Mac13,1', + name: 'Mac Studio', + size: '', + processor: '', + year: '2022', + additional: '' + }, + { + key: 'Mac13,2', + name: 'Mac Studio', + size: '', + processor: '', + year: '2022', + additional: '' + }, + { + key: 'Mac16,11', + name: 'Mac mini', + size: '', + processor: 'M4 Pro', + year: '2024', + additional: '' + }, + { + key: 'Mac16,10', + name: 'Mac mini', + size: '', + processor: 'M4', + year: '2024', + additional: '' + }, + { + key: 'Mac14,3', + name: 'Mac mini', + size: '', + processor: 'M2', + year: '2023', + additional: '' + }, + { + key: 'Mac14,12', + name: 'Mac mini', + size: '', + processor: 'M2 Pro', + year: '2023', + additional: '' + }, + { + key: 'Macmini9,1', + name: 'Mac mini', + size: '', + processor: 'M1', + year: '2020', + additional: '' + }, + { + key: 'Macmini8,1', + name: 'Mac mini', + size: '', + processor: '', + year: 'Late 2018', + additional: '' + }, + { + key: 'Macmini7,1', + name: 'Mac mini', + size: '', + processor: '', + year: 'Late 2014', + additional: '' + }, + { + key: 'Macmini6,1', + name: 'Mac mini', + size: '', + processor: '', + year: 'Late 2012', + additional: '' + }, + { + key: 'Macmini6,2', + name: 'Mac mini', + size: '', + processor: '', + year: 'Late 2012', + additional: '' + }, + { + key: 'Macmini5,1', + name: 'Mac mini', + size: '', + processor: '', + year: 'Mid 2011', + additional: '' + }, + { + key: 'Macmini5,2', + name: 'Mac mini', + size: '', + processor: '', + year: 'Mid 2011', + additional: '' + }, + { + key: 'Macmini4,1', + name: 'Mac mini', + size: '', + processor: '', + year: 'Mid 2010', + additional: '' + }, + { + key: 'Macmini3,1', + name: 'Mac mini', + size: '', + processor: '', + year: 'Early 2009', + additional: '' + }, + { + key: 'Mac16,3', + name: 'iMac', + size: '24-inch', + processor: 'M4', + year: '2024', + additional: 'Four ports' + }, + { + key: 'Mac16,2', + name: 'iMac', + size: '24-inch', + processor: 'M4', + year: '2024', + additional: 'Two ports' + }, + { + key: 'Mac15,5', + name: 'iMac', + size: '24-inch', + processor: 'M3', + year: '2023', + additional: 'Four ports' + }, + { + key: 'Mac15,4', + name: 'iMac', + size: '24-inch', + processor: 'M3', + year: '2023', + additional: 'Two ports' + }, + { + key: 'iMac21,1', + name: 'iMac', + size: '24-inch', + processor: 'M1', + year: '2021', + additional: '' + }, + { + key: 'iMac21,2', + name: 'iMac', + size: '24-inch', + processor: 'M1', + year: '2021', + additional: '' + }, + { + key: 'iMac20,1', + name: 'iMac', + size: '27-inch', + processor: '', + year: '2020', + additional: 'Retina 5K' + }, + { + key: 'iMac20,2', + name: 'iMac', + size: '27-inch', + processor: '', + year: '2020', + additional: 'Retina 5K' + }, + { + key: 'iMac19,1', + name: 'iMac', + size: '27-inch', + processor: '', + year: '2019', + additional: 'Retina 5K' + }, + { + key: 'iMac19,2', + name: 'iMac', + size: '21.5-inch', + processor: '', + year: '2019', + additional: 'Retina 4K' + }, + { + key: 'iMacPro1,1', + name: 'iMac Pro', + size: '', + processor: '', + year: '2017', + additional: '' + }, + { + key: 'iMac18,3', + name: 'iMac', + size: '27-inch', + processor: '', + year: '2017', + additional: 'Retina 5K' + }, + { + key: 'iMac18,2', + name: 'iMac', + size: '21.5-inch', + processor: '', + year: '2017', + additional: 'Retina 4K' + }, + { + key: 'iMac18,1', + name: 'iMac', + size: '21.5-inch', + processor: '', + year: '2017', + additional: '' + }, + { + key: 'iMac17,1', + name: 'iMac', + size: '27-inch', + processor: '', + year: 'Late 2015', + additional: 'Retina 5K' + }, + { + key: 'iMac16,2', + name: 'iMac', + size: '21.5-inch', + processor: '', + year: 'Late 2015', + additional: 'Retina 4K' + }, + { + key: 'iMac16,1', + name: 'iMac', + size: '21.5-inch', + processor: '', + year: 'Late 2015', + additional: '' + }, + { + key: 'iMac15,1', + name: 'iMac', + size: '27-inch', + processor: '', + year: 'Late 2014', + additional: 'Retina 5K' + }, + { + key: 'iMac14,4', + name: 'iMac', + size: '21.5-inch', + processor: '', + year: 'Mid 2014', + additional: '' + }, + { + key: 'iMac14,2', + name: 'iMac', + size: '27-inch', + processor: '', + year: 'Late 2013', + additional: '' + }, + { + key: 'iMac14,1', + name: 'iMac', + size: '21.5-inch', + processor: '', + year: 'Late 2013', + additional: '' + }, + { + key: 'iMac13,2', + name: 'iMac', + size: '27-inch', + processor: '', + year: 'Late 2012', + additional: '' + }, + { + key: 'iMac13,1', + name: 'iMac', + size: '21.5-inch', + processor: '', + year: 'Late 2012', + additional: '' + }, + { + key: 'iMac12,2', + name: 'iMac', + size: '27-inch', + processor: '', + year: 'Mid 2011', + additional: '' + }, + { + key: 'iMac12,1', + name: 'iMac', + size: '21.5-inch', + processor: '', + year: 'Mid 2011', + additional: '' + }, + { + key: 'iMac11,3', + name: 'iMac', + size: '27-inch', + processor: '', + year: 'Mid 2010', + additional: '' + }, + { + key: 'iMac11,2', + name: 'iMac', + size: '21.5-inch', + processor: '', + year: 'Mid 2010', + additional: '' + }, + { + key: 'iMac10,1', + name: 'iMac', + size: '21.5-inch', + processor: '', + year: 'Late 2009', + additional: '' + }, + { + key: 'iMac9,1', + name: 'iMac', + size: '20-inch', + processor: '', + year: 'Early 2009', + additional: '' + }, + { + key: 'Mac14,8', + name: 'Mac Pro', + size: '', + processor: '', + year: '2023', + additional: '' + }, + { + key: 'Mac14,8', + name: 'Mac Pro', + size: '', + processor: '', + year: '2023', + additional: 'Rack' + }, + { + key: 'MacPro7,1', + name: 'Mac Pro', + size: '', + processor: '', + year: '2019', + additional: '' + }, + { + key: 'MacPro7,1', + name: 'Mac Pro', + size: '', + processor: '', + year: '2019', + additional: 'Rack' + }, + { + key: 'MacPro6,1', + name: 'Mac Pro', + size: '', + processor: '', + year: 'Late 2013', + additional: '' + }, + { + key: 'MacPro5,1', + name: 'Mac Pro', + size: '', + processor: '', + year: 'Mid 2012', + additional: '' + }, + { + key: 'MacPro5,1', + name: 'Mac Pro Server', + size: '', + processor: '', + year: 'Mid 2012', + additional: 'Server' + }, + { + key: 'MacPro5,1', + name: 'Mac Pro', + size: '', + processor: '', + year: 'Mid 2010', + additional: '' + }, + { + key: 'MacPro5,1', + name: 'Mac Pro Server', + size: '', + processor: '', + year: 'Mid 2010', + additional: 'Server' + }, + { + key: 'MacPro4,1', + name: 'Mac Pro', + size: '', + processor: '', + year: 'Early 2009', + additional: '' + } + ]; + + const list = appleModelIds.filter((model) => model.key === key); + if (list.length === 0) { + return { + key: key, + model: 'Apple', + version: 'Unknown' + }; + } + const features = []; + if (list[0].size) { features.push(list[0].size); } + if (list[0].processor) { features.push(list[0].processor); } + if (list[0].year) { features.push(list[0].year); } + if (list[0].additional) { features.push(list[0].additional); } + return { + key: key, + model: list[0].name, + version: list[0].name + ' (' + features.join(', ') + ')' + }; +} + function noop() { } exports.toInt = toInt; @@ -1375,3 +2535,4 @@ exports.mathMin = mathMin; exports.WINDIR = WINDIR; exports.getFilesInPath = getFilesInPath; exports.semverCompare = semverCompare; +exports.getAppleModel = getAppleModel; diff --git a/lib/wifi.js b/lib/wifi.js index ea3250b..c287b14 100644 --- a/lib/wifi.js +++ b/lib/wifi.js @@ -700,7 +700,7 @@ function wifiConnections(callback) { const model = lines[1].indexOf(':') >= 0 ? lines[1].split(':')[1].trim() : ''; const id = lines[2].indexOf(':') >= 0 ? lines[2].split(':')[1].trim() : ''; const ssid = util.getValue(lines, 'SSID', ':', true); - const bssid = util.getValue(lines, 'BSSID', ':', true) || util.getValue(lines, 'AP BSSID', ':', true);; + const bssid = util.getValue(lines, 'BSSID', ':', true) || util.getValue(lines, 'AP BSSID', ':', true); const quality = util.getValue(lines, 'Signal', ':', true); const signalLevel = wifiDBFromQuality(quality); const type = util.getValue(lines, 'Radio type', ':', true) || util.getValue(lines, 'Type de radio', ':', true) || util.getValue(lines, 'Funktyp', ':', true) || null;