'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); const os_1 = require("os"); const electron_1 = require("electron"); //private const exec_1 = require("exec"); /** * Evaluates system dependencies for digital * projector features by executing `which` on binary. * If they do not exist, log to console * * @param {string} platform Operating system type * * @returns {object} Object containing path to dependency from `which`, if they exist **/ async function dependencies(platform) { let obj = {}; let ffmpeg = require('ffmpeg-static'); let ffprobe = require('ffprobe-static'); let ffoutput; //let imoutput : ExecOutput; let eogoutput; obj.ffmpeg = ffmpeg; /*.replace( 'app.asar', 'app.asar.unpacked' );*/ obj.ffprobe = ffprobe.path; /*.replace( 'app.asar', 'app.asar.unpacked' );*/ try { //imoutput = await exec('which convert'); } catch (err) { console.error('imagemagick is not installed', err); } /*if (!imoutput || imoutput.stdout.trim() === '') { console.error('imagemagick is not installed'); } else { obj.convert = imoutput.stdout.trim(); }*/ //if linux if (platform === 'nix') { try { eogoutput = await exec_1.exec('which eog'); } catch (err) { console.error('eog is not installed', err); } if (!eogoutput || eogoutput.stdout.trim() === '') { console.error('eog is not installed'); } else { obj.eog = eogoutput.stdout.trim(); } } return obj; } function displayMap(obj) { const sm = { id: obj.id, width: obj.size.width, height: obj.size.height, x: obj.bounds.x, y: obj.bounds.y, scale: obj.scaleFactor, primary: (obj.bounds.x === 0 && obj.bounds.y === 0) }; const primary = sm.primary ? ' (Primary)' : ''; sm.name = `${sm.width}x${sm.height}${primary}`; return sm; } function displaySort(a, b) { if (a.primary) { return -1; } else if (b.primary) { return 1; } return 0; } async function displays() { let displays = electron_1.screen.getAllDisplays(); displays = displays.map(displayMap); displays.sort(displaySort); return displays; } /** * Profile the current system and return an object with * data about the displays and dependencies for the digital * projector feature. * * @returns {object} Object containing system information */ async function system(ui) { const obj = {}; let platform; try { obj.tmp = os_1.tmpdir(); } catch (err) { obj.tmp = '/tmp'; } platform = os_1.type(); if (platform === 'Darwin') { obj.platform = 'osx'; } else if (platform === 'Windows_NT') { obj.platform = 'win'; } else { obj.platform = 'nix'; } obj.displays = await displays(); obj.deps = await dependencies(obj.platform); setTimeout(() => { ui.send('system', obj); }, 3000); return obj; } module.exports = system; //# sourceMappingURL=index.js.map