var fs = require('fs'); var path = require('path'); var request = require('request-promise'); var currentDevicesList = require('./emulated-devices.json'); var JSON_URL = 'https://chromium.googlesource.com/chromium/blink/+/master/Source/devtools/front_end/emulated_devices/module.json?format=TEXT'; var FILE_PATH = path.join(__dirname, 'emulated-devices.json'); var TITLES_PATH = path.join(__dirname, 'devices.md'); function mergeLists (oldList, newList) { var removedItems = []; oldList.forEach(oldItem => { if (newList.every(newItem => newItem.title.toLowerCase() !== oldItem.title.toLowerCase())) removedItems.push(oldItem); }); return removedItems.concat(newList); } request({ url: JSON_URL }) .then(function (body) { var buf = new Buffer(body, 'base64'); var content = JSON.parse(buf); var newDevicesList = content.extensions.map(function (item) { return item.device; }); newDevicesList = mergeLists(currentDevicesList, newDevicesList); fs.writeFileSync(FILE_PATH, JSON.stringify(newDevicesList, null, 2)); var titles = newDevicesList.map(x => ' * ' + x.title).join('\n\n'); fs.writeFileSync(TITLES_PATH, '## Titles of Emulated Devices\n\n' + titles); });