UNPKG

detect-features

Version:

Detect and report browser and hardware features.

113 lines (102 loc) 2.5 kB
// Native const fs = require('fs'); // Vendor const glob = require('glob'); const markdownTable = require('markdown-table'); function fileLoader(file) { return new Promise((resolve, reject) => { fs.readFile(file, 'utf8', (error, data) => { if (error) { reject(console.error(error)); } resolve(JSON.parse(data)); }); }); } glob('./data/*.json', (error, files) => { const fileList = files.map(file => new Promise((resolve, reject) => { fileLoader(file) .then((file) => { resolve(file); }) .catch((error) => { reject(error); }); })); Promise.all(fileList).then((fileListData) => { const deviceNameList = [ 'Apple iPad 5th', 'Apple iPad Air 2', 'Apple iPad Mini 3', 'Apple iPad Pro', 'Apple iPhone 5S', 'Apple iPhone 6 Plus', 'Apple iPhone 6', 'Apple iPhone 6S Plus', 'Apple iPhone 6S', 'Apple iPhone 7', 'Apple iPhone 8 Plus', 'Apple iPhone 8', 'Apple iPhone SE', 'Apple iPhone X', 'Google Nexus 5X', 'Google Nexus 6P', 'Google Pixel 2', 'Google Pixel 2', 'Google Pixel v7', 'Google Pixel v8', 'Google Pixel v8', 'LG G5', 'MacOS High Sierra', 'MacOS High Sierra', 'MacOS High Sierra', 'Motorola Moto X 2nd Gen', 'Oculus Go', 'Samsung S6', 'Samsung S7', 'Samsung S7', 'Samsung S8', 'Samsung S8', 'Samsung S8+', 'Samsung S8+', 'Windows 10', 'Windows 10', 'Windows 10', 'Windows 10', 'Windows 10', 'Windows 10', 'Windows 7', 'Windows 7', 'Windows 8', ]; const tableData = fileListData.map((fileData, i) => { const filename = deviceNameList[i]; const { browserName } = fileData.browserFeatures.browserType; const { browserVersion } = fileData.browserFeatures.browserType; const { operatingSystemName } = fileData.browserFeatures.browserType; const { operatingSystemVersion } = fileData.browserFeatures.browserType; const { devicePixelRatio } = fileData.hardwareFeatures; return { filename, operatingSystemName, operatingSystemVersion, browserName, browserVersion, devicePixelRatio, }; }); const tableOutput = tableData.map(row => [ row.filename, row.operatingSystemName, row.operatingSystemVersion, row.browserName, row.browserVersion, row.devicePixelRatio, ]); const table = markdownTable([ ['Device', 'OS', 'OS version', 'Browser', 'Browser version', 'Device pixel ratio'], ...tableOutput, ]); console.log(table); }); });