Lots of good UI updates and code formatting

This commit is contained in:
Nathan Parikh 2017-08-25 15:15:06 -05:00
parent 504aed67be
commit 2f52fd2978
4 changed files with 779 additions and 225 deletions

View File

@ -4,10 +4,13 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Latest Crypto Prices</title> <title>Latest Crypto Prices</title>
<link href="https://fonts.googleapis.com/css?family=Heebo:100,400" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Heebo:100,400" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Inconsolata" rel="stylesheet">
<style type="text/css"> <style type="text/css">
/*@import url('https://rsms.me/interface/interface.css');*/
body { body {
background: #000; background: #000;
font-family: 'Heebo', sans-serif; /*font-family: 'Heebo', sans-serif;*/
font-family: 'Inconsolata', monospace;
color: #fff; color: #fff;
} }
.titlebar { .titlebar {
@ -61,8 +64,8 @@
#prices { #prices {
margin: 0; margin: 0;
padding: 0; padding: 0;
font-size: 36px; font-size: 28px;
font-weight: 100; font-weight: 400;
} }
#prices li { #prices li {
margin: 0px 0px 15px 0px; margin: 0px 0px 15px 0px;
@ -82,8 +85,97 @@
.inactive { .inactive {
display: none; display: none;
} }
/*Settings Page*/
#myInput {
font-family: 'Inconsolata', monospace;
border: none;
padding: 0px 0px 10px;
font-size: 14px;
background: #000;
color: #fff;
outline: none;
border-bottom: 1px solid #252525;
display: block;
width: 100%;
}
#saveCoins {
background-color: #000000;
color: #fff;
border: 1px solid #252525;
padding: 5px 10px;
margin: -1px 0px 0px 0px;
font-family: 'Inconsolata', monospace;
}
#coinlist {
margin: 15px 0px 0px 0px;
padding: 0;
max-height: 240px;
overflow: scroll;
}
/*Scrollbar*/
::-webkit-scrollbar,
::-webkit-scrollbar-corner {
background-color: black;
}
::-webkit-scrollbar {
width: .5em;
}
::-webkit-scrollbar-thumb:window-inactive,
::-webkit-scrollbar-thumb {
background: #252525;
-webkit-border-radius: 100px;
}
/*Select Boxes*/
.custom-select {
position: relative;
display: inline-block;
}
.custom-select select {
display: inline-block;
border: 1px solid #252525;
padding: 4px 3px 3px 5px;
margin: 0;
font: inherit;
outline: none;
line-height: 1.2;
background: #000000;
-webkit-appearance: none;
width: 145px;
color: #fff;
}
/* for Webkit's CSS-only solution */
@media screen and (-webkit-min-device-pixel-ratio:0) {
.custom-select select {
padding-right:30px;
}
}
/* Since we removed the default focus styles, we have to add our own */
.custom-select select:focus {
-webkit-box-shadow: 0 0 3px 1px #00afc1;
-moz-box-shadow: 0 0 3px 1px #00afc1;
box-shadow: 0 0 3px 1px #00afc1;
}
/* Select arrow styling */
.custom-select:after {
content: "▼";
position: absolute;
top: 0;
right: 0;
bottom: 0;
font-size: 60%;
line-height: 30px;
padding: 0 7px;
background: #252525;
color: white;
pointer-events: none;
}
</style> </style>
</head> </head>
<body> <body>
<header style="-webkit-app-region: drag" class="titlebar"> <header style="-webkit-app-region: drag" class="titlebar">
<div class="controls"> <div class="controls">
@ -92,28 +184,24 @@
</div> </div>
<button id="settings-btn" onclick="toggleSettings()"><img src="images/icons8-Settings.png"></button> <button id="settings-btn" onclick="toggleSettings()"><img src="images/icons8-Settings.png"></button>
</header> </header>
<div id="main" class="panel active"> <div id="main" class="panel active">
<ul id="prices"> <ul id="prices">
</ul> </ul>
</div><!-- #main -->
<div>
Hello <span id="firstname"></span>
</div>
</div>
<div id="settings" class="panel inactive"> <div id="settings" class="panel inactive">
<h3>Choose Your Coins</h3> <h3>Choose Your Coins</h3>
<div id="coinsearch"> <div id="coinsearch">
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.."> <input type="text" id="myInput" onkeyup="myFunction()" placeholder="Type here to filter list">
<button type="button" style="background-color: #fff;" id="saveCoins">Click Me!</button> <button type="button" id="saveCoins">Save</button>
<ul id="coinlist"> <ul id="coinlist">
</ul> </ul>
</div> </div><!-- #coinsearch -->
<h3>Choose Your Base Currency</h3> <h3>Choose Your Base Currency</h3>
<label class="custom-select">
<select id="base" onchange="setBase()"> <select id="base" onchange="setBase()">
<option value="USD">USD</option> <option value="USD">USD</option>
<option value="EUR">EUR</option> <option value="EUR">EUR</option>
@ -122,7 +210,9 @@
<option value="LTC">LTC</option> <option value="LTC">LTC</option>
<option value="ETH">ETH</option> <option value="ETH">ETH</option>
</select> </select>
</div> </label>
</div><!-- #settings -->
</body> </body>
<script> <script>
@ -131,7 +221,9 @@
</script> </script>
<script> <script>
/******************
* APP FUNCTIONALITY
******************/
(function() { (function() {
function loadJSON(callback) { function loadJSON(callback) {
@ -146,8 +238,9 @@
} }
}; };
xobj.send(null); xobj.send(null);
} } //loadJSON
// Generate the list of all coins
loadJSON(function(response) { loadJSON(function(response) {
// Parse JSON string into object // Parse JSON string into object
var myDiv = document.getElementById("coinlist"); var myDiv = document.getElementById("coinlist");
@ -155,8 +248,8 @@
//alert(settings.get('user.coins')); //alert(settings.get('user.coins'));
//console.log(actual_JSON.Data); //console.log(actual_JSON.Data);
//loop through data, get coin info, generate checkbox fore each coin
Object.keys(actual_JSON.Data).forEach(function(key) { Object.keys(actual_JSON.Data).forEach(function(key) {
//console.log(actual_JSON.Data[key].Name); //console.log(actual_JSON.Data[key].Name);
//console.log(actual_JSON.Data[key].CoinName); //console.log(actual_JSON.Data[key].CoinName);
var li = document.createElement("li"); var li = document.createElement("li");
@ -178,13 +271,12 @@
li.appendChild(label); li.appendChild(label);
label.appendChild(document.createTextNode(actual_JSON.Data[key].CoinName)); label.appendChild(document.createTextNode(actual_JSON.Data[key].CoinName));
label.appendChild(document.createTextNode(' ('+actual_JSON.Data[key].Name+')')); label.appendChild(document.createTextNode(' ('+actual_JSON.Data[key].Name+')'));
}); }); //forEach
}); }); //loadJSON
base = 'USD'; base = 'USD';
setBase = function() { setBase = function() {
//selected base currency //selected base currency
var x = document.getElementById("base").selectedIndex; var x = document.getElementById("base").selectedIndex;
var y = document.getElementById("base").options; var y = document.getElementById("base").options;
@ -193,6 +285,7 @@
})(); })();
//Functions for creating/appending elements
function createNode(element) { function createNode(element) {
return document.createElement(element); return document.createElement(element);
} }
@ -200,37 +293,30 @@
return parent.appendChild(el); return parent.appendChild(el);
} }
//user settings //user settings
const settings = require('electron-settings'); const settings = require('electron-settings');
settings.set('name', { settings.set('name', {
first: 'Nathan', first: 'Nathan',
last: 'Parikh' last: 'Parikh'
}); });
// Returns an array with values of the selected (checked) checkboxes in "frm" // Returns an array with values of the selected (checked) checkboxes in "frm"
function getSelectedChbox(frm) { function getSelectedChbox(frm) {
// JavaScript & jQuery Course - http://coursesweb.net/javascript/
var selchbox = []; // array that will store the value of selected checkboxes var selchbox = []; // array that will store the value of selected checkboxes
// gets all the input tags in frm, and their number // gets all the input tags in frm, and their number
var inpfields = frm.getElementsByTagName('input'); var inpfields = frm.getElementsByTagName('input');
var nr_inpfields = inpfields.length; var nr_inpfields = inpfields.length;
// traverse the inpfields elements, and adds the value of selected (checked) checkbox in selchbox // traverse the inpfields elements, and adds the value of selected (checked) checkbox in selchbox
for(var i=0; i<nr_inpfields; i++) { for(var i=0; i<nr_inpfields; i++) {
if(inpfields[i].type == 'checkbox' && inpfields[i].checked == true) selchbox.push(inpfields[i].value); if(inpfields[i].type == 'checkbox' && inpfields[i].checked == true) selchbox.push(inpfields[i].value);
} }
return selchbox; return selchbox;
} }
/* Test this function */ /* Test this function */
document.getElementById('firstname').innerHTML = settings.get('user.coins'); //document.getElementById('firstname').innerHTML = settings.get('user.coins');
// When click on #btntest, alert the selected values // Click on #saveCoins, save the coin selection to the user
document.getElementById('saveCoins').onclick = function(){ document.getElementById('saveCoins').onclick = function(){
var coinForm = document.getElementById('coinlist'); var coinForm = document.getElementById('coinlist');
var selchb = getSelectedChbox(coinForm); // gets the array returned by getSelectedChbox() var selchb = getSelectedChbox(coinForm); // gets the array returned by getSelectedChbox()
alert(selchb); alert(selchb);
@ -240,10 +326,10 @@ document.getElementById('saveCoins').onclick = function(){
}); });
var selectedCoins = settings.get('user.coins'); var selectedCoins = settings.get('user.coins');
document.getElementById('firstname').innerHTML = selectedCoins; //document.getElementById('firstname').innerHTML = selectedCoins;
} }
const ul = document.getElementById('prices'); // Get the list where we will place our authors const ul = document.getElementById('prices'); // Get the list where we will place coins
const url = 'https://min-api.cryptocompare.com/data/pricemultifull?fsyms='+settings.get('user.coins') +'&tsyms='+base +'&extraParams=your_app_name'; const url = 'https://min-api.cryptocompare.com/data/pricemultifull?fsyms='+settings.get('user.coins') +'&tsyms='+base +'&extraParams=your_app_name';
function initData() { function initData() {
@ -256,10 +342,9 @@ document.getElementById('saveCoins').onclick = function(){
return; return;
} }
// Examine the text in the response // Examine the response
response.json().then(function(data) { response.json().then(function(data) {
//console.log(data); //console.log(data);
let prices = data.DISPLAY; let prices = data.DISPLAY;
var i = 0; var i = 0;
for (let key of Object.keys(prices)) { for (let key of Object.keys(prices)) {
@ -289,34 +374,24 @@ document.getElementById('saveCoins').onclick = function(){
sortable('#prices', { sortable('#prices', {
handle: 'span' handle: 'span'
})[0].addEventListener('sortstop', function(e) { })[0].addEventListener('sortstop', function(e) {
// Declare variables // Declare variables
var ul, li, i; var ul, li, i;
ul = document.getElementById("prices"); ul = document.getElementById("prices");
li = ul.getElementsByTagName('li'); li = ul.getElementsByTagName('li');
// Loop through all list items, and hide those who don't match the search query // Loop through all list items
for (i = 0; i < li.length; i++) { for (i = 0; i < li.length; i++) {
li[i].setAttribute("sortorder", i); li[i].setAttribute("sortorder", i);
var elementID = li[i].id; var elementID = li[i].id;
//alert(elementID); //alert(elementID);
settings.set(elementID, { // coin-BTC settings.set(elementID, { // coin-BTC
order: li[i].getAttribute('sortorder') order: li[i].getAttribute('sortorder')
}); });
//alert(settings.get(elementID + '.order')); //alert(settings.get(elementID + '.order'));
} }
//alert(settings.get('coin.'+e+'.order')); //alert(settings.get('coin.'+e+'.order'));
/*
*/
//
//now figure out how to sort by attribute sortorder on load
/* /*
This event is triggered when the user stopped sorting and the DOM position has changed. This event is triggered when the user stopped sorting and the DOM position has changed.
e.detail.item contains the current dragged element. e.detail.item contains the current dragged element.
@ -330,12 +405,11 @@ document.getElementById('saveCoins').onclick = function(){
e.detail.newStartList contains all elements in the list the dragged item was dragged from e.detail.newStartList contains all elements in the list the dragged item was dragged from
e.detail.oldStartList contains all elements in the list the dragged item was dragged from BEFORE it was dragged from it e.detail.oldStartList contains all elements in the list the dragged item was dragged from BEFORE it was dragged from it
*/ */
}); }); //sortable
}); //response.json
}); } //function(response)
} ) //.then
)
.catch(function(err) { .catch(function(err) {
console.log('Fetch Error :-S', err); console.log('Fetch Error :-S', err);
}); });
@ -354,40 +428,44 @@ document.getElementById('saveCoins').onclick = function(){
} }
// Examine the text in the response // Examine the text in the response
response.json().then(function(data) { response.json().then(function(data) {
let prices = data.DISPLAY; let pricesDISPLAY = data.DISPLAY; // display for everything except coin symbol
for (let key of Object.keys(prices)) { let pricesRAW = data.RAW; // raw to get BTC instead of bitcoin symbol
let coin = prices[key]; for (let key of Object.keys(pricesRAW)) {
//console.log(coin); let coinDISPLAY = pricesDISPLAY[key];
let coinRAW = pricesRAW[key];
console.log(coinDISPLAY);
let li = document.getElementById("coin-"+[key]), let li = document.getElementById("coin-"+[key]),
span = document.querySelector("#coin-"+[key]+" span"); span = document.querySelector("#coin-"+[key]+" span");
//console.log(span); //console.log(span);
span.innerHTML = coin[base].FROMSYMBOL + ' ' + coin[base].PRICE; span.innerHTML = coinRAW[base].FROMSYMBOL + ' ' + coinDISPLAY[base].PRICE.replace(/ /g,''); //.replace(/ /g,'') removes space after $
} }
}); });
} }
) )
setTimeout(function(){updateData()}, 1000); setTimeout(function(){updateData()}, 1000); // run this once every second
} }
initData(); // Let's do this thing!
initData();
//controls /*******
const remote = require('electron').remote; * APP UI
document.getElementById("close-btn").addEventListener("click", function (e) { ********/
//Window controls
const remote = require('electron').remote;
document.getElementById("close-btn").addEventListener("click", function (e) {
var window = remote.getCurrentWindow(); var window = remote.getCurrentWindow();
window.close(); window.close();
}); });
document.getElementById("min-btn").addEventListener("click", function (e) {
document.getElementById("min-btn").addEventListener("click", function (e) {
var window = remote.getCurrentWindow(); var window = remote.getCurrentWindow();
window.minimize(); window.minimize();
}); });
//settings //settings tab/icon
function toggleSettings() { function toggleSettings() {
//var div = document.getElementsByClassName("panel");
var divs = document.getElementsByClassName('panel'), i; var divs = document.getElementsByClassName('panel'), i;
//console.log(div);
for (i = 0; i < divs.length; ++i) { for (i = 0; i < divs.length; ++i) {
if(divs[i].classList.contains('inactive')) { if(divs[i].classList.contains('inactive')) {
divs[i].classList.remove('inactive'); divs[i].classList.remove('inactive');
@ -397,11 +475,11 @@ function toggleSettings() {
divs[i].classList.remove('active'); divs[i].classList.remove('active');
divs[i].classList.add('inactive'); divs[i].classList.add('inactive');
} }
} }//for
} }//toggleSettings
//search //Coin search filter
function myFunction() { function myFunction() {
// Declare variables // Declare variables
var input, filter, ul, li, a, i; var input, filter, ul, li, a, i;
input = document.getElementById('myInput'); input = document.getElementById('myInput');
@ -418,11 +496,11 @@ function myFunction() {
} else { } else {
li[i].style.display = "none"; li[i].style.display = "none";
} }
} } //for
} } //myFunction
//sort by attribute //sort by attribute
function sortChildren(wrap, f, isNum) { function sortChildren(wrap, f, isNum) {
var l = wrap.children.length, var l = wrap.children.length,
arr = new Array(l); arr = new Array(l);
for(var i=0; i<l; ++i) for(var i=0; i<l; ++i)
@ -436,16 +514,8 @@ function sortChildren(wrap, f, isNum) {
par.removeChild(wrap); par.removeChild(wrap);
for(var i=0; i<l; ++i) wrap.appendChild(arr[i][1]); for(var i=0; i<l; ++i) wrap.appendChild(arr[i][1]);
par.insertBefore(wrap, ref); par.insertBefore(wrap, ref);
} } //sortChildren
</script> </script>
<script src="js/html.sortable.min.js"></script> <script src="js/html.sortable.min.js"></script>
<script type="text/javascript">
//sort your coins
</script>
</html> </html>

View File

@ -30,7 +30,7 @@ function createWindow () {
y: mainWindowState.y, y: mainWindowState.y,
width: mainWindowState.width, width: mainWindowState.width,
height: mainWindowState.height, height: mainWindowState.height,
//maxWidth: 360, maxWidth: 360,
minWidth: 160, minWidth: 160,
minHeight: 150, minHeight: 150,
maximizable: false, maximizable: false,

482
package-lock.json generated
View File

@ -10,6 +10,12 @@
"integrity": "sha512-KQHAZeVsk4UIT9XaR6cn4WpHZzimK6UBD1UomQKfQQFmTlUHaNBzeuov+TM4+kigLO0IJt4I5OOsshcCyA9gSA==", "integrity": "sha512-KQHAZeVsk4UIT9XaR6cn4WpHZzimK6UBD1UomQKfQQFmTlUHaNBzeuov+TM4+kigLO0IJt4I5OOsshcCyA9gSA==",
"dev": true "dev": true
}, },
"abbrev": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
"integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=",
"dev": true
},
"acorn": { "acorn": {
"version": "4.0.13", "version": "4.0.13",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
@ -142,6 +148,37 @@
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
}, },
"asar": {
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/asar/-/asar-0.13.0.tgz",
"integrity": "sha1-3zPdnQG/+EJGTQ2fCVdA1KYq+xQ=",
"dev": true,
"requires": {
"chromium-pickle-js": "0.2.0",
"commander": "2.11.0",
"cuint": "0.2.2",
"glob": "6.0.4",
"minimatch": "3.0.4",
"mkdirp": "0.5.0",
"mksnapshot": "0.3.1",
"tmp": "0.0.28"
},
"dependencies": {
"glob": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
"integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
"dev": true,
"requires": {
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
}
}
},
"asn1": { "asn1": {
"version": "0.2.3", "version": "0.2.3",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
@ -1010,6 +1047,12 @@
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
}, },
"base64-js": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz",
"integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=",
"dev": true
},
"bcrypt-pbkdf": { "bcrypt-pbkdf": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
@ -1020,6 +1063,16 @@
"tweetnacl": "0.14.5" "tweetnacl": "0.14.5"
} }
}, },
"binary": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
"integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
"dev": true,
"requires": {
"buffers": "0.1.1",
"chainsaw": "0.1.0"
}
},
"binary-extensions": { "binary-extensions": {
"version": "1.9.0", "version": "1.9.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.9.0.tgz", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.9.0.tgz",
@ -1085,6 +1138,12 @@
"resolved": "https://registry.npmjs.org/buffer-equals/-/buffer-equals-1.0.4.tgz", "resolved": "https://registry.npmjs.org/buffer-equals/-/buffer-equals-1.0.4.tgz",
"integrity": "sha1-A1O1T9B/2VZBcGca5vZrnPENJ/U=" "integrity": "sha1-A1O1T9B/2VZBcGca5vZrnPENJ/U="
}, },
"buffers": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
"integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
"dev": true
},
"builtin-modules": { "builtin-modules": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
@ -1169,6 +1228,23 @@
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true "dev": true
}, },
"chainsaw": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
"integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
"dev": true,
"requires": {
"traverse": "0.3.9"
},
"dependencies": {
"traverse": {
"version": "0.3.9",
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
"integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
"dev": true
}
}
},
"chalk": { "chalk": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
@ -1197,6 +1273,12 @@
"readdirp": "2.1.0" "readdirp": "2.1.0"
} }
}, },
"chromium-pickle-js": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
"integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=",
"dev": true
},
"ci-info": { "ci-info": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz",
@ -1291,6 +1373,12 @@
"delayed-stream": "1.0.0" "delayed-stream": "1.0.0"
} }
}, },
"commander": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
"integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
"dev": true
},
"common-path-prefix": { "common-path-prefix": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz",
@ -1301,6 +1389,12 @@
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
}, },
"compare-version": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
"integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=",
"dev": true
},
"concat-map": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@ -1428,6 +1522,12 @@
"resolved": "https://registry.npmjs.org/cryptocurrencies/-/cryptocurrencies-1.0.0.tgz", "resolved": "https://registry.npmjs.org/cryptocurrencies/-/cryptocurrencies-1.0.0.tgz",
"integrity": "sha1-ejLy8qIqDSU9x0i9F6423HXW4L0=" "integrity": "sha1-ejLy8qIqDSU9x0i9F6423HXW4L0="
}, },
"cuint": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
"integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
"dev": true
},
"currently-unhandled": { "currently-unhandled": {
"version": "0.4.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
@ -1479,6 +1579,21 @@
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
}, },
"decompress-zip": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz",
"integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=",
"dev": true,
"requires": {
"binary": "0.3.0",
"graceful-fs": "4.1.11",
"mkpath": "0.1.0",
"nopt": "3.0.6",
"q": "1.5.0",
"readable-stream": "1.1.14",
"touch": "0.0.3"
}
},
"deep-assign": { "deep-assign": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz",
@ -1672,6 +1787,110 @@
"sumchecker": "1.3.1" "sumchecker": "1.3.1"
} }
}, },
"electron-osx-sign": {
"version": "0.4.7",
"resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.7.tgz",
"integrity": "sha1-HXVkeoJ0jqzUi+pwYW7IP/rePuU=",
"dev": true,
"requires": {
"bluebird": "3.5.0",
"compare-version": "0.1.2",
"debug": "2.6.8",
"isbinaryfile": "3.0.2",
"minimist": "1.2.0",
"plist": "2.1.0"
}
},
"electron-packager": {
"version": "8.7.2",
"resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-8.7.2.tgz",
"integrity": "sha1-RX078kvJYHwGrUsettqkrMrcIQg=",
"dev": true,
"requires": {
"asar": "0.13.0",
"debug": "2.6.8",
"electron-download": "4.1.0",
"electron-osx-sign": "0.4.7",
"extract-zip": "1.6.5",
"fs-extra": "3.0.1",
"get-package-info": "1.0.0",
"minimist": "1.2.0",
"plist": "2.1.0",
"rcedit": "0.9.0",
"resolve": "1.4.0",
"run-series": "1.1.4",
"sanitize-filename": "1.6.1",
"semver": "5.4.1"
},
"dependencies": {
"electron-download": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.0.tgz",
"integrity": "sha1-v5MsdG8vh//MCdHdRy8v9rkYeEU=",
"dev": true,
"requires": {
"debug": "2.6.8",
"env-paths": "1.0.0",
"fs-extra": "2.1.2",
"minimist": "1.2.0",
"nugget": "2.0.1",
"path-exists": "3.0.0",
"rc": "1.2.1",
"semver": "5.4.1",
"sumchecker": "2.0.2"
},
"dependencies": {
"fs-extra": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz",
"integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"jsonfile": "2.4.0"
}
}
}
},
"fs-extra": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz",
"integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"jsonfile": "3.0.1",
"universalify": "0.1.1"
},
"dependencies": {
"jsonfile": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz",
"integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11"
}
}
}
},
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"dev": true
},
"sumchecker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz",
"integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=",
"dev": true,
"requires": {
"debug": "2.6.8"
}
}
}
},
"electron-settings": { "electron-settings": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/electron-settings/-/electron-settings-3.1.1.tgz", "resolved": "https://registry.npmjs.org/electron-settings/-/electron-settings-3.1.1.tgz",
@ -1746,6 +1965,12 @@
"iconv-lite": "0.4.18" "iconv-lite": "0.4.18"
} }
}, },
"env-paths": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz",
"integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=",
"dev": true
},
"error-ex": { "error-ex": {
"version": "1.3.1", "version": "1.3.1",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
@ -2323,6 +2548,77 @@
"is-property": "1.0.2" "is-property": "1.0.2"
} }
}, },
"get-package-info": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz",
"integrity": "sha1-ZDJ5ZWPigRPNlHTbvQAFKYWkmZw=",
"dev": true,
"requires": {
"bluebird": "3.5.0",
"debug": "2.6.8",
"lodash.get": "4.4.2",
"read-pkg-up": "2.0.0"
},
"dependencies": {
"find-up": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"dev": true,
"requires": {
"locate-path": "2.0.0"
}
},
"load-json-file": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
"integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"parse-json": "2.2.0",
"pify": "2.3.0",
"strip-bom": "3.0.0"
}
},
"path-type": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
"integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
"dev": true,
"requires": {
"pify": "2.3.0"
}
},
"read-pkg": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
"integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
"dev": true,
"requires": {
"load-json-file": "2.0.0",
"normalize-package-data": "2.4.0",
"path-type": "2.0.0"
}
},
"read-pkg-up": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
"integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
"dev": true,
"requires": {
"find-up": "2.1.0",
"read-pkg": "2.0.0"
}
},
"strip-bom": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
"dev": true
}
}
},
"get-set-props": { "get-set-props": {
"version": "0.1.0", "version": "0.1.0",
"resolved": "https://registry.npmjs.org/get-set-props/-/get-set-props-0.1.0.tgz", "resolved": "https://registry.npmjs.org/get-set-props/-/get-set-props-0.1.0.tgz",
@ -2912,6 +3208,12 @@
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
"dev": true "dev": true
}, },
"isbinaryfile": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz",
"integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=",
"dev": true
},
"isexe": { "isexe": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@ -3145,6 +3447,24 @@
"strip-bom": "2.0.0" "strip-bom": "2.0.0"
} }
}, },
"locate-path": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
"integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
"dev": true,
"requires": {
"p-locate": "2.0.0",
"path-exists": "3.0.0"
},
"dependencies": {
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"dev": true
}
}
},
"lodash": { "lodash": {
"version": "4.17.4", "version": "4.17.4",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
@ -3185,6 +3505,12 @@
"resolved": "https://registry.npmjs.org/lodash.findindex/-/lodash.findindex-4.6.0.tgz", "resolved": "https://registry.npmjs.org/lodash.findindex/-/lodash.findindex-4.6.0.tgz",
"integrity": "sha1-oyRd7mH7m24GJLU1ElYku2nBEQY=" "integrity": "sha1-oyRd7mH7m24GJLU1ElYku2nBEQY="
}, },
"lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
"dev": true
},
"lodash.kebabcase": { "lodash.kebabcase": {
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
@ -3366,6 +3692,38 @@
} }
} }
}, },
"mkpath": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz",
"integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=",
"dev": true
},
"mksnapshot": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.1.tgz",
"integrity": "sha1-JQHAVldDbXQs6Vik/5LHfkDdN+Y=",
"dev": true,
"requires": {
"decompress-zip": "0.3.0",
"fs-extra": "0.26.7",
"request": "2.81.0"
},
"dependencies": {
"fs-extra": {
"version": "0.26.7",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz",
"integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"jsonfile": "2.4.0",
"klaw": "1.3.1",
"path-is-absolute": "1.0.1",
"rimraf": "2.6.1"
}
}
}
},
"ms": { "ms": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@ -3401,6 +3759,15 @@
"resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz",
"integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=" "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8="
}, },
"nopt": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
"integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
"dev": true,
"requires": {
"abbrev": "1.1.0"
}
},
"normalize-package-data": { "normalize-package-data": {
"version": "2.4.0", "version": "2.4.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
@ -3542,6 +3909,21 @@
"os-tmpdir": "1.0.2" "os-tmpdir": "1.0.2"
} }
}, },
"p-limit": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz",
"integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=",
"dev": true
},
"p-locate": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
"integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
"dev": true,
"requires": {
"p-limit": "1.1.0"
}
},
"package-hash": { "package-hash": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-1.2.0.tgz",
@ -3676,6 +4058,17 @@
"find-up": "1.1.2" "find-up": "1.1.2"
} }
}, },
"plist": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz",
"integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=",
"dev": true,
"requires": {
"base64-js": "1.2.0",
"xmlbuilder": "8.2.2",
"xmldom": "0.1.27"
}
},
"plur": { "plur": {
"version": "2.1.2", "version": "2.1.2",
"resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz",
@ -3891,6 +4284,12 @@
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"dev": true "dev": true
}, },
"q": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz",
"integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=",
"dev": true
},
"qs": { "qs": {
"version": "6.4.0", "version": "6.4.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
@ -3949,6 +4348,12 @@
"strip-json-comments": "2.0.1" "strip-json-comments": "2.0.1"
} }
}, },
"rcedit": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/rcedit/-/rcedit-0.9.0.tgz",
"integrity": "sha1-ORDfVzRTmeKwMl9KUZAH+J5V7xw=",
"dev": true
},
"read-all-stream": { "read-all-stream": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz",
@ -4279,6 +4684,12 @@
"once": "1.4.0" "once": "1.4.0"
} }
}, },
"run-series": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.4.tgz",
"integrity": "sha1-iac93F51ye+KtjIMChYA1qQRebk=",
"dev": true
},
"rx-lite": { "rx-lite": {
"version": "3.1.2", "version": "3.1.2",
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
@ -4289,6 +4700,15 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
}, },
"sanitize-filename": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz",
"integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=",
"dev": true,
"requires": {
"truncate-utf8-bytes": "1.0.2"
}
},
"semver": { "semver": {
"version": "5.4.1", "version": "5.4.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
@ -4644,11 +5064,40 @@
"resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz",
"integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=" "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc="
}, },
"tmp": {
"version": "0.0.28",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz",
"integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=",
"dev": true,
"requires": {
"os-tmpdir": "1.0.2"
}
},
"to-fast-properties": { "to-fast-properties": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
}, },
"touch": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz",
"integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=",
"dev": true,
"requires": {
"nopt": "1.0.10"
},
"dependencies": {
"nopt": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
"integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
"dev": true,
"requires": {
"abbrev": "1.1.0"
}
}
}
},
"tough-cookie": { "tough-cookie": {
"version": "2.3.2", "version": "2.3.2",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
@ -4673,6 +5122,15 @@
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
"integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
}, },
"truncate-utf8-bytes": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
"integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=",
"dev": true,
"requires": {
"utf8-byte-length": "1.0.4"
}
},
"tryit": { "tryit": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz",
@ -4742,6 +5200,12 @@
} }
} }
}, },
"universalify": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
"integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
"dev": true
},
"unzip-response": { "unzip-response": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz",
@ -4778,6 +5242,12 @@
"os-homedir": "1.0.2" "os-homedir": "1.0.2"
} }
}, },
"utf8-byte-length": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
"integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=",
"dev": true
},
"util-deprecate": { "util-deprecate": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@ -4916,6 +5386,18 @@
"os-homedir": "1.0.2" "os-homedir": "1.0.2"
} }
}, },
"xmlbuilder": {
"version": "8.2.2",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz",
"integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=",
"dev": true
},
"xmldom": {
"version": "0.1.27",
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
"integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=",
"dev": true
},
"xo": { "xo": {
"version": "0.16.0", "version": "0.16.0",
"resolved": "https://registry.npmjs.org/xo/-/xo-0.16.0.tgz", "resolved": "https://registry.npmjs.org/xo/-/xo-0.16.0.tgz",

View File

@ -1,5 +1,6 @@
{ {
"name": "crypto-price-widget", "name": "crypto-price-widget",
"productName": "crypto-price-widget",
"version": "1.0.0", "version": "1.0.0",
"description": "A cross-platform app for tracking Crypto prices", "description": "A cross-platform app for tracking Crypto prices",
"main": "main.js", "main": "main.js",
@ -18,7 +19,8 @@
"author": "GitHub", "author": "GitHub",
"license": "CC0-1.0", "license": "CC0-1.0",
"devDependencies": { "devDependencies": {
"electron": "~1.6.2" "electron": "~1.6.2",
"electron-packager": "^8.7.2"
}, },
"dependencies": { "dependencies": {
"ava": "^0.15.2", "ava": "^0.15.2",