Basically everything for 1.2 :P

This commit is contained in:
Timeraa
2018-11-01 19:53:24 +01:00
parent 29a556c7d1
commit 29765230b1
35 changed files with 778 additions and 602 deletions

5
.gitignore vendored
View File

@@ -1,5 +1,6 @@
node_modules
out
.vscode
dist
server
website
server
.vscode

View File

@@ -1,74 +0,0 @@
{
"appDesc": {
"message": "PreMiD fügt eine Discord-Rich-Presence-Integration, Kontrolle über Multimediatasten und viele weitere Funktionen zu YouTube/YouTube Music, Twitch etc. hinzu."
},
"connected": {
"message": "Verbunden"
},
"disconnected": {
"message": "Getrennt"
},
"installedThanks": {
"message": "Vielen Dank, für das Installieren von PreMiD"
},
"installedApp": {
"message": "Hast du das Programm bereits installiert?"
},
"installedNo": {
"message": "Nein? Folge dieser Anleitung:"
},
"installedStepApp": {
"message": "Lade die neueste Version von $1 herunter"
},
"installedStepAppMyRepository": {
"message": "meinem GitHub Repository"
},
"installedWaitInstalled": {
"message": "Offne das Installationsprogramm und warte bis die Installation abgeschlossen ist"
},
"installedMayWarning": {
"message": "Möglicherweise bekommst du eine Warnung von deiner FireWall und SmartScreen (Es ist kein Virus. Das verspreche ich dir!)"
},
"installedAppAutostart": {
"message": "Das Programm sollte automatisch starten. Du kannst dies prüfen, indem du auf deine Taskbar (Windows) oder deine Menubar (MacOS) schaust"
},
"installedYes": {
"message": "Ja? Jetzt bist du bereit!"
},
"installedStart": {
"message": "Starte, indem du ein Video auf YouTube, deine Lieblingsstreamer auf Twitch oder vielleicht sogar Netflix schaust... Wer weiß? Oder du hörst dir deine Lieblingslieder auf SoundCloud und YouTube Music an."
},
"installedSupportMe": {
"message": "Unterstütze mich!"
},
"updatedYTPUpdated": {
"message": "PreMiD wurde aktualisiert!"
},
"updatedWhatsNew": {
"message": "Was ist neu?"
},
"updatedWhatChanged": {
"message": "Was hat sich geändert?"
},
"updatedAdded0": {
"message": "Installieren Tab"
},
"updatedAdded1": {
"message": "Update Tab"
},
"updatedChanged0": {
"message": "Kleinere Bugfixes"
},
"updatedChanged1": {
"message": "Erweiterungs Organisierung"
},
"updatedAdded2": {
"message": "Sprachunterstützung"
},
"updatedAdded3": {
"message": "Tab Priorität"
},
"updatedChanged2": {
"message": "YouTube + YouTube Music neugeschrieben"
}
}

View File

@@ -36,7 +36,7 @@
"message": "Yes? You are ready to go!"
},
"installedStart": {
"message": "Start by watching a video on YouTube, watching your loved streamers on Twitch, maybe even Netflix... Who knows?<br>Or you just listen to your favourite songs on SoundCloud and YouTube Music."
"message": "Start by watching a video on YouTube, watching your loved streamers on Twitch, Watch your favourite animes on KissAnime or JKAnime, maybe even Netflix... Who knows?<br>Or you just listen to your favourite songs on SoundCloud and YouTube Music. Settings can be found by clicking the PreMiD icon in your browser."
},
"installedSupportMe": {
"message": "Support me!"
@@ -50,31 +50,55 @@
"updatedWhatChanged": {
"message": "What changed?"
},
"updatedAdded0": {
"message": "Install tab page"
},
"updatedAdded1": {
"message": "Update tab page"
},
"updatedChanged0": {
"message": "Small bug fixes"
},
"updatedChanged1": {
"message": "Extension organisation"
},
"updatedAdded2": {
"message": "Language support"
},
"updatedAdded3": {
"message": "Tab Priority"
},
"updatedChanged2": {
"message": "YouTube + YouTube Music rewrite"
},
"playbackPlaying": {
"message": "Playing back"
},
"playbackPaused": {
"message": "Playback paused"
},
"about": {
"message": "About"
},
"feedback": {
"message": "Feedback"
},
"options": {
"message": "Options"
},
"general": {
"message": "General"
},
"enabled": {
"message": "Enabled"
},
"titleMenubar": {
"message": "Title Menubar"
},
"mediaControls": {
"message": "Media Controls"
},
"checkForUpdates": {
"message": "Check for updates"
},
"systemStartup": {
"message": "System startup"
},
"presences": {
"message": "Presences"
},
"updatedAdded0": {
"message": "Support for JKAnime & KissAnime"
},
"updatedAdded1": {
"message": "Extension popup"
},
"updatedAdded2": {
"message": "Settings Sync (Google Account)"
},
"updatedChanged0": {
"message": "A lot and I mean a lot of rewrites!"
},
"updatedChanged1": {
"message": "Huge speed improvements to App"
}
}

View File

@@ -1,74 +0,0 @@
{
"appDesc": {
"message": "YT Presence מוסיף Rich Presence שילוב של מדיה, פיקודים ועוד המון דברים לYouTube/YouTube Music, Twitch ועוד.."
},
"connected": {
"message": "מחובר"
},
"disconnected": {
"message": "מנותק"
},
"installedThanks": {
"message": "תודה שהורדת את YT Presence "
},
"installedApp": {
"message": "האם התקנת את התוכנה?"
},
"installedNo": {
"message": "לא? תעקוב אחרי הצעדים הבאים:"
},
"installedStepApp": {
"message": "הורד את הגרסה החדשה ביותר ב1$"
},
"installedStepAppMyRepository": {
"message": "מאגר הGitHub שלי"
},
"installedWaitInstalled": {
"message": "פתח את ההתקנה וחכה על שההתקנה תסתיים"
},
"installedMayWarning": {
"message": "יש סיכוי שתקבל אזהרה על FireWall וSmartScreen (זה לא וירוס, אני מבטיח)"
},
"installedAppAutostart": {
"message": "התוכנה אמורה להתחיל אוטומטית, אתה יכול לבדוק את זה בכך שתסתכל על שורת המשימות שלך (Windows) או בתפריט הבר (MacOS)"
},
"installedYes": {
"message": "כן? אתה מוכן לדרך!"
},
"installedStart": {
"message": "התחל בכך שתצפה בסרטון ביוטיוב, צפה בסטרימרים האהובים עליך בTwitch, אולי אפילו בNetflix... מי יודע? או שאתה רק רוצה להאזין לשירים האהובים עליך בSoundCloud ובYouTube Music"
},
"installedSupportMe": {
"message": "עזור לי!"
},
"updatedYTPUpdated": {
"message": " YT Presence עודכן בהצלחה!"
},
"updatedWhatsNew": {
"message": "מה חדש?"
},
"updatedWhatChanged": {
"message": "מה השתנה?"
},
"updatedAdded0": {
"message": "הורד את לשונית הכרטיסייה"
},
"updatedAdded1": {
"message": "עדכן את דף הכרטיסייה"
},
"updatedChanged0": {
"message": "באגים קטנים תוקנו"
},
"updatedChanged1": {
"message": "ארגון תקינת התוסף"
},
"updatedAdded2": {
"message": "שפת תמיכה"
},
"updatedAdded3": {
"message": ""
},
"updatedChanged2": {
"message": ""
}
}

View File

@@ -1,74 +0,0 @@
{
"appDesc": {
"message": "YT Presence Discord Rich Presence instruens, gubernatio studii et amplius ad YouTube/YouTube Music, Twitch, et cetera addet"
},
"connected": {
"message": "Connexus"
},
"disconnected": {
"message": "Discerptim"
},
"installedThanks": {
"message": "Gratias ago YT Presence instruere"
},
"installedApp": {
"message": "Iamne usum instruxisti"
},
"installedNo": {
"message": "Nonne est? Obtempera ii gradi"
},
"installedStepApp": {
"message": "Instruere suprema forma a $1"
},
"installedStepAppMyRepository": {
"message": "GitHub logium meum"
},
"installedWaitInstalled": {
"message": "Aperi instruens et exspecta dum instruxit"
},
"installedMayWarning": {
"message": "Admonitum super FireWall et SmartScreen accipere potes (Virus non est, promitto)"
},
"installedAppAutostart": {
"message": "Usus statim incipere debet, id per optutu ad regula initii (Windows et MacOS) tua examinare potes"
},
"installedYes": {
"message": "Enimne? Incohare potes!"
},
"installedStart": {
"message": "Incipe per video spectante in YouTube, per streamer amari spectante in Twitch, fortasse etiam Netflix... quis scit? Aut carmina optima in SoundCloud et YouTube Music audis."
},
"installedSupportMe": {
"message": "Adiuva me!"
},
"updatedYTPUpdated": {
"message": "YT Presence corrigam est!"
},
"updatedWhatsNew": {
"message": "Quid nove est?"
},
"updatedWhatChanged": {
"message": "Quid mutatum est?"
},
"updatedAdded0": {
"message": "Instruere pars nova"
},
"updatedAdded1": {
"message": "Corrigere pars"
},
"updatedChanged0": {
"message": "Parvi errores reparatum est"
},
"updatedChanged1": {
"message": "Facies dilatationum"
},
"updatedAdded2": {
"message": "Auxilium linguae"
},
"updatedAdded3": {
"message": ""
},
"updatedChanged2": {
"message": ""
}
}

View File

@@ -1,74 +0,0 @@
{
"appDesc": {
"message": "YT Presence lägger till Discord Rich Presence Integration, Mediekontroller och mycket mer till YouTube/YouTube Musik, Twitch osv..."
},
"connected": {
"message": "Ansluten"
},
"disconnected": {
"message": "Avkopplad"
},
"installedThanks": {
"message": "Tack för att du har installerat YT Presence"
},
"installedApp": {
"message": "Har du installerat programmet ännu?"
},
"installedNo": {
"message": "Nej? Följ dessa steg:"
},
"installedStepApp": {
"message": "Ladda ner den senaste versionen från $1"
},
"installedStepAppMyRepository": {
"message": "mitt GitHub-förråd"
},
"installedWaitInstalled": {
"message": "Öppna installationsprogrammet och vänta tills det installeras"
},
"installedMayWarning": {
"message": "Du kanske får en varning om brandvägg och Smartscreen (det är inte ett virus jag lovar)"
},
"installedAppAutostart": {
"message": "Applikationen bör starta automatiskt, du kan kontrollera detta genom att titta på ditt aktivitetsfält (Windows) eller menyraden (Mac OS)"
},
"installedYes": {
"message": "Ja? Du är redo att gå!"
},
"installedStart": {
"message": "Börja med att titta på en video på YouTube, titta på dina älskade streamers på Twitch, kanske även Netflix... Vem vet? Eller så lyssnar du bara på dina favoritlåtar på SoundCloud och YouTube Music."
},
"installedSupportMe": {
"message": "Stöd mig!"
},
"updatedYTPUpdated": {
"message": "YT Presence har uppdaterats!"
},
"updatedWhatsNew": {
"message": "Vad är nytt?"
},
"updatedWhatChanged": {
"message": "Vad har förändrats?"
},
"updatedAdded0": {
"message": "Installera fliksidan"
},
"updatedAdded1": {
"message": "Uppdatera fliksidan"
},
"updatedChanged0": {
"message": "Små buggfixar"
},
"updatedChanged1": {
"message": "Tillägg organisation"
},
"updatedAdded2": {
"message": "Språkstöd"
},
"updatedAdded3": {
"message": ""
},
"updatedChanged2": {
"message": ""
}
}

View File

@@ -1,30 +0,0 @@
chrome.runtime.onInstalled.addListener(function(details) {
switch(details.reason) {
case "install": {
chrome.tabs.create({url: "installed.html"})
break;
}
case "update": {
//chrome.tabs.create({url: "updated.html"})
break;
}
}
})
//* Tab Priority
var lastAllowedTab = null
setInterval(() => {
chrome.tabs.getAllInWindow(null, (tabs) => {
var allowedURL = ["www.youtube.com", "music.youtube.com", "twitch.tv", "soundcloud.com", "netflix.com", "kissanime.ac", "jkanime.net"]
for (var i = 0; i < allowedURL.length; i++) {
var currentTab = tabs.find(tab => tab.highlighted)
if(currentTab.url.indexOf(allowedURL[i]) > -1) {
lastAllowedTab = currentTab.id
}
}
if(lastAllowedTab != null) {
chrome.tabs.sendMessage(lastAllowedTab, {"high": true})
}
})
}, 500)

View File

@@ -1,54 +0,0 @@
#ytp-connectinfo {
position: fixed;
top: -50px;
right: 0;
z-index: 10000;
min-width: 175px;
border-bottom-left-radius: 5px;
height: 50px;
background-color: rgba(255, 255, 255, 0.5);
user-select: none;
animation-name: slideIn;
animation-duration: 5s;
animation-timing-function: cubic-bezier(0.19, 1, 0.22, 1);
color: black;
}
#ytp-connectinfo * {
margin: 0;
padding: 0;
}
#ytp-connectinfo img {
float: left;
margin: 5px;
width: 40px;
height: 40px;
}
#ytp-connectinfo h1 {
font-size: 20px;
margin-top: 4px;
}
#ytp-connectinfo h2 {
font-size: 17px;
}
@keyframes slideIn {
0% {
top: -50px;
}
10% {
top: 0;
}
90% {
top: 0;
}
100% {
top: -50px;
}
}

78
Extension/css/inputs.css Normal file
View File

@@ -0,0 +1,78 @@
/* The switch - the box around the slider */
.switch {
position: relative;
display: inline-block;
width: 35px;
height: 15px;
}
/* Hide default HTML checkbox */
.switch input {
display: none;
}
/* The slider */
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgb(255, 75, 75);
-webkit-transition: 0.25s;
transition: 0.25s;
}
.slider:before {
position: absolute;
content: "";
height: 17px;
width: 17px;
left: -2.5px;
top: -2.5px;
background-color: white;
-webkit-transition: 0.25s;
transition: 0.25s cubic-bezier(0.215, 0.61, 0.355, 1);
border: 1px solid lightgray;
}
input:checked + .slider {
background-color: rgb(75, 255, 75);
}
input:disabled + .slider {
background-color: rgb(255, 75, 75);
cursor: not-allowed;
}
input:disabled + .slider:before {
background-color: rgb(255, 75, 75);
border: 1px solid rgb(255, 75, 75);
cursor: not-allowed;
}
input:focus + .slider {
box-shadow: 0 0 1px rgb(75, 255, 75);
}
input:hover + .slider {
transform: scale(1.1);
}
input:checked + .slider:before {
transform: translateX(20px);
}
/* Rounded sliders */
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}

15
Extension/css/options.css Normal file
View File

@@ -0,0 +1,15 @@
.right {
float: right;
}
#content h1 {
margin: 5px;
}
table {
margin: 5px;
}
tr td:first-child {
width: 90%;
}

View File

@@ -43,10 +43,13 @@ body {
border-radius: 5px;
color: white;
text-align: center;
}
#panel:not(.open) {
cursor: pointer;
}
#panel:hover {
#panel:not(.open):hover {
transform: scale(1.05);
}
@@ -68,3 +71,28 @@ body {
.github {
background-color: #fa503c !important;
}
.open {
position: fixed;
transition: 0.5s all ease-out;
transform: scale(5);
cursor: default;
}
.open * {
transition: 0.15s all ease-out;
opacity: 0;
}
.panelContent {
position: relative;
color: white;
}
.panelContent:not(.open) {
display: none;
}
.panelContent.open {
display: block;
}

20
Extension/css/reset.css Normal file
View File

@@ -0,0 +1,20 @@
html,
body {
margin: 0;
padding: 0;
height: 0;
width: 325px;
background-color: #282828;
}
* {
color: #fff;
}
#header {
height: 50px;
background-color: #7289da;
color: white;
text-align: center;
line-height: 50px;
}

View File

@@ -0,0 +1,137 @@
<html>
<head>
<link rel="stylesheet" href="../../css/reset.css">
<link rel="stylesheet" href="../../css/inputs.css">
<link rel="stylesheet" href="../../css/options.css">
</head>
<body>
<div id="header">
<h1 class="Ppreferences"></h1>
</div>
<div id="content">
<h1 class="Pgeneral"></h1>
<table>
<thead>
<td></td>
<td></td>
</thead>
<tbody>
<tr id="tPresence">
<td class="Penabled"></td>
<td class="right">
<label class="switch">
<input class="togglePresence" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
<tr>
<td class="PmediaControls"></td>
<td class="right">
<label class="switch">
<input class="toggleMediaControls" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
<tr>
<td class="PcheckForUpdates"></td>
<td class="right">
<label class="switch">
<input class="toggleCheckUpdates" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
<tr>
<td class="PsystemStartup"></td>
<td class="right">
<label class="switch">
<input class="toggleSystemStartup" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
</tbody>
</table>
<h1 class="Ppresences"></h1>
<table>
<thead>
<td></td>
<td></td>
</thead>
<tbody>
<tr>
<td>YouTube</td>
<td class="right">
<label class="switch">
<input class="toggleYouTube" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
<tr>
<td>YouTube Music</td>
<td class="right">
<label class="switch">
<input class="toggleYouTubeMusic" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
<tr>
<td>Twitch</td>
<td class="right">
<label class="switch">
<input class="toggleTwitch" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
<tr>
<td>SoundCloud</td>
<td class="right">
<label class="switch">
<input class="toggleSoundCloud" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
<tr>
<td>Netflix</td>
<td class="right">
<label class="switch">
<input class="toggleNetflix" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
<tr>
<td>KissAnime</td>
<td class="right">
<label class="switch">
<input class="toggleKissAnime" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
<tr>
<td>JKAnime</td>
<td class="right">
<label class="switch">
<input class="toggleJKAnime" type="checkbox">
<span class="slider round"></span>
</label>
</td>
</tr>
</tbody>
</table>
</div>
<script src="../../js/util/jquery-3.3.1.min.js"></script>
<script src="../../js/util/socket.io-2.1.1.min.js"></script>
<script src="../../js/options.js"></script>
</body>
</html>

View File

@@ -3,32 +3,26 @@
<head>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.4.1/css/all.css" integrity="sha384-5sAR7xN1Nv6T6+dT2mhtzEpVJvfS3NScPQTrOxhwjIuvcA67KV2R5Jz6kr4abQsz"
crossorigin="anonymous">
<link rel="stylesheet" href="popup.css">
<link rel="stylesheet" href="../../css/popup.css">
</head>
<body>
<div id="header">
<h1>PreMiD</h1>
<h1>V1.1.1</h1>
<h1 class="Pname"></h1>
<h1 class="Pversion"></h1>
</div>
<div id="content">
<div id="panel" class="about">
<i id="icon" class="fas fa-user"></i>
<h1 id="name">About</h1>
</div>
<div id="panel" class="feedback">
<i id="icon" class="fas fa-comments"></i>
<h1 id="name">Feedback</h1>
</div>
<div id="panel" class="github">
<i id="icon" class="fab fa-github"></i>
<h1 id="name">GitHub</h1>
</div>
<div id="panel" class="options">
<i id="icon" class="fas fa-cog"></i>
<h1 id="name">Options</h1>
<h1 id="name" class="Poptions"></h1>
</div>
</div>
<script src="../../js/util/jquery-3.3.1.min.js"></script>
<script src="../../js/popup.js"></script>
</body>
</html>

View File

@@ -2,12 +2,12 @@
<head>
<title>PreMiD</title>
<link rel="stylesheet" href="css/tab.css">
<link rel="stylesheet" href="../../css/tab.css">
</head>
<body>
<div id="header">
<img id="icon" src="icon.png" draggable="false">
<img id="icon" src="../../icon.png" draggable="false">
<h1 id="title">PreMiD</h1>
<h1 id="version"></h1>
</div>
@@ -25,12 +25,12 @@
<p id="installedStart"></p>
<h2 id="installedSupportMe"></h2>
<a href="https://www.patreon.com/bePatron?u=4610890" target="_blank" data-patreon-widget-type="become-patron-button"><img
src="images/patreonBTN.png" draggable="false" height="50px" alt="Support me on Patreon!"></a>
src="../../images/patreonBTN.png" draggable="false" height="50px" alt="Support me on Patreon!"></a>
<a href="https://discord.gg/Kw7WaYn" target="_blank" title="Join our Discord!">
<img src="images/discord-logo.svg" height="50px" draggable="false" alt="Join my Discord!">
<img src="../../images/discord-logo.svg" height="50px" draggable="false" alt="Join my Discord!">
</a>
</div>
<script src="js/installed.js"></script>
<script src="../../js/installed.js"></script>
</body>
</html>

View File

@@ -2,12 +2,12 @@
<head>
<title>PreMiD</title>
<link rel="stylesheet" href="css/tab.css">
<link rel="stylesheet" href="../../css/tab.css">
</head>
<body>
<div id="header">
<img id="icon" src="icon.png" draggable="false">
<img id="icon" src="../../icon.png" draggable="false">
<h1 id="title">PreMiD</h1>
<h1 id="version"></h1>
</div>
@@ -21,12 +21,12 @@
</ul>
<h2 id="installedSupportMe"></h2>
<a href="https://www.patreon.com/bePatron?u=4610890" target="_blank" data-patreon-widget-type="become-patron-button"><img
src="images/patreonBTN.png" draggable="false" height="50px" alt="Support me on Patreon!"></a>
src="../../images/patreonBTN.png" draggable="false" height="50px" alt="Support me on Patreon!"></a>
<a href="https://discord.gg/Kw7WaYn" target="_blank" title="Join our Discord!">
<img src="images/discord-logo.svg" height="50px" draggable="false" alt="Join my Discord!">
<img src="../../images/discord-logo.svg" height="50px" draggable="false" alt="Join my Discord!">
</a>
</div>
<script src="js/updated.js"></script>
<script src="../../js/updated.js"></script>
</body>
</html>

View File

@@ -0,0 +1,62 @@
chrome.runtime.onInstalled.addListener(function(details) {
switch(details.reason) {
case "install": {
chrome.tabs.create({url: "html/tabs/installed.html"})
break;
}
case "update": {
chrome.tabs.create({url: "html/tabs/updated.html"})
break;
}
}
})
//* Tab Priority
var lastAllowedTab = null,
allowedURL = []
setInterval(() => {
chrome.storage.sync.get(['options'], function(result) {
allowedURL = ["www.youtube.com", "music.youtube.com", "twitch.tv", "soundcloud.com", "netflix.com", "kissanime.ac", "kissanime.ru", "jkanime.net"]
var options = result.options
if(!options.enabled) allowedURL = []
if(!options.youtube) allowedURL.remove("www.youtube.com")
if(!options.youtubeMusic) allowedURL.remove("music.youtube.com")
if(!options.twitch) allowedURL.remove("twitch.tv")
if(!options.soundcloud) allowedURL.remove("soundcloud.com")
if(!options.netflix) allowedURL.remove("netflix.com")
if(!options.kissanime) allowedURL.remove("kissanime.ac") && allowedURL.remove('kissanime.ru')
if(!options.jkanime) allowedURL.remove("jkanime.net")
})
chrome.tabs.getAllInWindow(null, (tabs) => {
for (var i = 0; i < allowedURL.length; i++) {
var currentTab = tabs.find(tab => tab.highlighted)
if(currentTab.url.indexOf(allowedURL[i]) > -1) {
lastAllowedTab = currentTab.id
}
}
if(lastAllowedTab != null) {
chrome.tabs.sendMessage(lastAllowedTab, {"high": true})
}
})
}, 500)
Array.prototype.remove = function() {
var what, a = arguments, L = a.length, ax;
while (L && this.length) {
what = a[--L];
while ((ax = this.indexOf(what)) !== -1) {
this.splice(ax, 1);
}
}
return this;
};
//* Create socket connection to application
var socket = io.connect('http://localhost:3020/');
setInterval(() => {
chrome.storage.sync.get(['options'], function(result) {
socket.emit('settingsChange', result)
})
}, 1000)

140
Extension/js/options.js Normal file
View File

@@ -0,0 +1,140 @@
let options = undefined
$('.Ppreferences').html(chrome.i18n.getMessage('options'))
$('.Pgeneral').html(chrome.i18n.getMessage('general'))
$('.Penabled').html(chrome.i18n.getMessage('enabled'))
$('.PmediaControls').html(chrome.i18n.getMessage('mediaControls'))
$('.PcheckForUpdates').html(chrome.i18n.getMessage('checkForUpdates'))
$('.PsystemStartup').html(chrome.i18n.getMessage('systemStartup'))
$('.Ppresences').html(chrome.i18n.getMessage('presences'))
chrome.runtime.getPlatformInfo(function(info) {
if(info.os == "mac")
$('<tr><td>Title Menubar</td><td><label class="switch"><input class="toggleTitleMenubar" type="checkbox"><span class="slider round"></span></label></td></tr>').insertAfter('#tPresence')
titleMenubarToggle = $('.toggleTitleMenubar')
titleMenubarToggle.change(tMB);
})
$(document).ready(function() {
var enabledToggle = $('.togglePresence'),
youtubeToggle = $('.toggleYouTube'),
youtubeMusicToggle = $('.toggleYouTubeMusic'),
twitchToggle = $('.toggleTwitch'),
soundcloudToggle = $('.toggleSoundCloud'),
netflixToggle = $('.toggleNetflix'),
kissanimeToggle = $('.toggleKissAnime'),
jkanimeToggle = $('.toggleJKAnime')
mediaControlsToggle = $('.toggleMediaControls')
checkForUpdatesToggle = $('.toggleCheckUpdates')
systemStartupToggle = $('.toggleSystemStartup')
enabledToggle.change(tEnabled);
youtubeToggle.change(tYT);
youtubeMusicToggle.change(tYTM);
twitchToggle.change(tT);
soundcloudToggle.change(tSC);
netflixToggle.change(tN);
kissanimeToggle.change(tKA);
jkanimeToggle.change(tJKA);
mediaControlsToggle.change(tMC);
checkForUpdatesToggle.change(tCFU);
systemStartupToggle.change(tSS);
chrome.storage.sync.get(['options'], function(result) {
options = result.options
if(result.options == undefined) {
chrome.storage.sync.set({options: {enabled: true, youtube: true, youtubeMusic: true, twitch: true, soundcloud: true, netflix: true, kissanime: true, jkanime: true, titleMenubar: true, mediaControls: true, checkForUpdates: true, systemStartup: true}})
enabledToggle.prop('checked', true)
youtubeToggle.prop('checked', true)
youtubeMusicToggle.prop('checked', true)
twitchToggle.prop('checked', true)
soundcloudToggle.prop('checked', true)
netflixToggle.prop('checked', true)
kissanimeToggle.prop('checked', true)
jkanimeToggle.prop('checked', true)
if(titleMenubarToggle != undefined)
titleMenubarToggle.prop('checked', true)
mediaControlsToggle.prop('checked', true)
checkForUpdatesToggle.prop('checked', true)
systemStartupToggle.prop('checked', true)
} else {
enabledToggle.prop('checked', result.options.enabled)
youtubeToggle.prop('checked', result.options.youtube)
youtubeMusicToggle.prop('checked', result.options.youtubeMusic)
twitchToggle.prop('checked', result.options.twitch)
soundcloudToggle.prop('checked', result.options.soundcloud)
netflixToggle.prop('checked', result.options.netflix)
kissanimeToggle.prop('checked', result.options.kissanime)
jkanimeToggle.prop('checked', result.options.jkanime)
if(titleMenubarToggle != undefined)
titleMenubarToggle.prop('checked', result.options.titleMenubar)
mediaControlsToggle.prop('checked', result.options.mediaControls)
checkForUpdatesToggle.prop('checked', result.options.checkForUpdates)
systemStartupToggle.prop('checked', result.options.systemStartup)
}
})
})
function tEnabled() {
options.enabled = !options.enabled
sync()
}
function tYT() {
options.youtube = !options.youtube
sync()
}
function tYTM() {
options.youtubeMusic = !options.youtubeMusic
sync()
}
function tT() {
options.twitch = !options.twitch
sync()
}
function tSC() {
options.soundcloud = !options.soundcloud
sync()
}
function tN() {
options.netflix = !options.netflix
sync()
}
function tKA() {
options.kissanime = !options.kissanime
sync()
}
function tJKA() {
options.jkanime = !options.jkanime
sync()
}
function tMB() {
options.titleMenubar = !options.titleMenubar
sync()
}
function tMC() {
options.mediaControls = !options.mediaControls
sync()
}
function tCFU() {
options.checkForUpdates = !options.checkForUpdates
sync()
}
function tSS() {
options.systemStartup = !options.systemStartup
sync()
}
function sync() {
chrome.storage.sync.set({options: options})
}

20
Extension/js/popup.js Normal file
View File

@@ -0,0 +1,20 @@
$(document).ready(function() {
$('.Pname').html(chrome.runtime.getManifest().name)
$('.Pversion').html('V' + chrome.runtime.getManifest().version)
$('.Pabout').html(chrome.i18n.getMessage('about'))
$('.Pfeedback').html(chrome.i18n.getMessage('feedback'))
$('.Poptions').html(chrome.i18n.getMessage('options'))
$('#content #panel').each(function() {
this.addEventListener('click', updateItem)
})
})
function updateItem() {
$(this).addClass('open')
setTimeout(() => {
if($(this).attr("class").split(' ')[0] == "github") {
chrome.tabs.create({url: 'https://github.com/Timeraa/PreMiD'})
} else window.location.href= $(this).attr("class").split(' ')[0] + ".html";
}, 350)
}

View File

@@ -103,28 +103,51 @@ function updateData(playbackChange = false) {
var endTime
if(musicRunning && $('.VideoContainer div video')[0] != undefined) {
var startTime = Date.now();
endTime = Math.floor(startTime / 1000) -
var startTime = Math.floor(Date.now()/1000);
endTime = startTime -
Math.floor($('.VideoContainer div video')[0].currentTime) +
Math.floor($('.VideoContainer div video')[0].duration);
data = {
nflix: {
url: urlForVideo,
seriesTitle: $('.ellipsize-text').children().html(),
season: $($('.ellipsize-text').children().get(1)).html(),
episodeTitle: $($('.ellipsize-text').children().get(2)).html(),
episodeCurrentTimeSeconds: Math.floor($('.VideoContainer div video')[0].currentTime),
episodeEndTimeSeconds: Math.floor($('.VideoContainer div video')[0].duration),
episodeCurrentTime: startTime,
episodeEndTime: endTime,
playback: $('.VideoContainer div video')[0].paused ? "paused" : "playing"
var playbackBoolean = !$('.VideoContainer div video')[0].paused
var smallImageKey = playbackBoolean ? "play" : "pause"
smallImageText = playbackBoolean ? chrome.i18n.getMessage('playbackPlaying') : chrome.i18n.getMessage('playbackPaused')
if(playbackBoolean) {
data = {
clientID: '499981204045430784',
presenceData: {
details: $('.ellipsize-text').children().html(),
state: $($('.ellipsize-text').children().get(1)).html(),
largeImageKey: 'nflix_lg',
largeImageText: chrome.runtime.getManifest().name + ' V' + chrome.runtime.getManifest().version,
smallImageKey: smallImageKey,
smallImageText: smallImageText,
startTimestamp: startTime,
endTimestamp: endTime
},
currentSeconds: Math.floor($('.VideoContainer div video')[0].currentTime),
durationSeconds: Math.floor($('.VideoContainer div video')[0].duration),
trayTitle: $('.ellipsize-text').children().html(),
playback: playbackBoolean,
service: 'Netflix'
}
}
} else {
data = {
nflix: {
playback: false
} else {
data = {
clientID: '499981204045430784',
presenceData: {
details: $('.ellipsize-text').children().html(),
state: $($('.ellipsize-text').children().get(1)).html(),
largeImageKey: 'nflix_lg',
largeImageText: chrome.runtime.getManifest().name + ' V' + chrome.runtime.getManifest().version,
smallImageKey: smallImageKey,
smallImageText: smallImageText
},
currentSeconds: Math.floor($('.VideoContainer div video')[0].currentTime),
durationSeconds: Math.floor($('.VideoContainer div video')[0].duration),
trayTitle: $('.ellipsize-text').children().html(),
playback: playbackBoolean,
service: 'Netflix'
}
}
}

View File

@@ -1,7 +1,7 @@
{
"name": "PreMiD",
"author": "Timeraa",
"version": "1.1.2",
"version": "1.2",
"description": "__MSG_appDesc__",
"manifest_version": 2,
"default_locale": "en",
@@ -9,11 +9,11 @@
"2024": "icon.png"
},
"background": {
"scripts": ["background.js"],
"scripts": ["js/util/socket.io-2.1.1.min.js", "js/background.js"],
"presistent": false
},
"browser_action": {
"default_popup": "popup.html",
"default_popup": "html/popup/popup.html",
"default_icon": {
"2024": "icon.png"
}
@@ -21,11 +21,11 @@
"content_scripts": [
{
"js": [
"util/jquery-3.3.1.min.js",
"util/socket.io-2.1.1.min.js",
"util/socketConnector.js"
"js/util/jquery-3.3.1.min.js",
"js/util/socket.io-2.1.1.min.js",
"js/util/socketConnector.js"
],
"css": ["connect.css"],
"css": ["css/connect.css"],
"matches": [
"https://www.youtube.com/*",
"https://music.youtube.com/*",
@@ -38,31 +38,31 @@
]
},
{
"js": ["presences/YouTubeMusic.js"],
"js": ["js/presences/YouTubeMusic.js"],
"matches": ["https://music.youtube.com/*"]
},
{
"js": ["presences/YouTube.js"],
"js": ["js/presences/YouTube.js"],
"matches": ["https://www.youtube.com/*"]
},
{
"js": ["presences/Netflix.js"],
"js": ["js/presences/Netflix.js"],
"matches": ["https://*.netflix.com/*"]
},
{
"js": ["presences/SoundCloud.js"],
"js": ["js/presences/SoundCloud.js"],
"matches": ["https://*.soundcloud.com/*"]
},
{
"js": ["presences/Twitch.js"],
"js": ["js/presences/Twitch.js"],
"matches": ["https://*.twitch.tv/*"]
},
{
"js": ["presences/KissAnime.js"],
"js": ["js/presences/KissAnime.js"],
"matches": ["https://kissanime.ac/*", "https://kissanime.ru/*"]
},
{
"js": ["presences/JKAnime.js"],
"js": ["js/presences/JKAnime.js"],
"matches": ["https://jkanime.net/*"]
}
],

View File

@@ -1,6 +1,6 @@
## ![version](https://img.shields.io/badge/Version-1.1-brightgreen.svg?style=flat-square) [![Discord](https://img.shields.io/discord/493130730549805057.svg?style=flat-square)](https://discord.gg/Kw7WaYn)
## ![version](https://img.shields.io/badge/Version-1.2-brightgreen.svg?style=flat-square) [![Discord](https://img.shields.io/discord/493130730549805057.svg?style=flat-square)](https://discord.gg/Kw7WaYn)
# <img src="gitassets/premid.webp" width="24px" draggable="false"><b> </b>PreMiD &middot; Media Rich Presence for Discord
# <img src="gitassets/premid.webp" width="24px" draggable="false"><b> </b>PreMiD &middot; Discord Rich Presence for your Media!
<a target="_blank" href="https://discord.gg/Kw7WaYn" title="Join our Discord!">
<img src="gitassets/discord.svg" height="50px" draggable="false" alt="Join my Discord!">
@@ -12,7 +12,7 @@
## Summary
**PreMiD** is a simple, configurable utility to allow you to show what you're watching in your Discord **now playing status**. It supports [many different platforms](#support), and will also support multiple users watching the same content simultaneously in an upcoming update.
**PreMiD** is a simple, configurable utility that allows you to show what you're watching/listening in your Discord **now playing status**. It supports [many different platforms](#support), and will support multiple users watching the same content simultaneously in an upcoming update.
## Features
@@ -28,6 +28,9 @@
- [Summary](#summary)
- [Features](#features)
- [Support](#support)
- [Operating Systems](#operating-systems)
- [Browsers](#browsers)
- [Services](#services)
- [Installation](#installation)
- [Extension](#extension)
- Chrome
@@ -48,6 +51,18 @@
- Chrome
- Opera
### **Services**
- YouTube
- YouTube Music
- Netflix
- SoundCloud
- Twitch
- JKAnime
- KissAnime
One missing? Open an [Issue](https://github.com/Timeraa/PreMiD/issues/new?template=feature_request.md)!
# Installation
## Extension
@@ -119,12 +134,17 @@
<h2 style="text-align: center; font-weight: 700; margin: 0;">Fruxh</h2>
</div>
<h1 style="text-align: center;">Patrons & Donators</h1>
<h1 style="text-align: center;">Patrons \ Donators</h1>
<div style="margin: 5px; width: 100px; display: inline-block;">
<img draggable="false" src="gitassets/fruxh.png" style="border-radius: 50%;" width="100px">
<h2 style="text-align: center; font-weight: 700; margin: 0;">Fruxh</h2>
<h3 style="text-align: center; font-weight: 700;margin: 0;">Patron</h3>
</div>
<div style="margin: 5px; width: 100px; display: inline-block;">
<img draggable="false" src="gitassets/UMU.png" style="border-radius: 50%;" width="100px">
<h2 style="text-align: center; font-weight: 700; margin: 0;">UMU</h2>
<h3 style="text-align: center; font-weight: 700;margin: 0;">Patron</h3>
</div>
<div style="margin: 5px; width: 100px; display: inline-block;">
<img draggable="false" src="gitassets/paz.png" style="border-radius: 50%;" width="100px">
<h2 style="text-align: center; font-weight: 700; margin: 0;">Paz</h2>
@@ -132,41 +152,31 @@
</div>
<h1 style="text-align: center;">Translators</h1>
<div style="margin: 5px; width: 100px; display: inline-block;">
<img draggable="false" src="gitassets/timeraa.png" style="border-radius: 50%;" width="100px">
<h2 style="text-align: center; font-weight: 700; margin: 0;">Timeraa</h2>
</div>
<div style="margin: 5px; width: 100px; display: inline-block;">
<img draggable="false" src="gitassets/fruxh.png" style="border-radius: 50%;" width="100px">
<h2 style="text-align: center; font-weight: 700; margin: 0;">Fruxh</h2>
<h3 style="text-align: center; font-weight: 700;margin: 0;">German</h3>
<h3 style="text-align: center; font-weight: 700;margin: 0;">Japanese</h3>
</div>
<div style="margin: 5px; width: 100px; display: inline-block;">
<img draggable="false" src="gitassets/restrike.png" style="border-radius: 50%;" width="100px">
<h2 style="text-align: center; font-weight: 700; margin: 0;">Restrike</h2>
<h3 style="text-align: center; font-weight: 700;margin: 0;">German</h3>
<h3 style="text-align: center; font-weight: 700;margin: 0;">Japanese</h3>
<h3 style="text-align: center; font-weight: 700;margin: 0;">Korean</h3>
<h3 style="text-align: center; font-weight: 700;margin: 0;">Latin</h3>
</div>
<div style="margin: 5px; width: 100px; display: inline-block;">
<img draggable="false" src="gitassets/timeraa.png" style="border-radius: 50%;" width="100px">
<h2 style="text-align: center; font-weight: 700; margin: 0;">Timeraa</h2>
<h3 style="text-align: center; font-weight: 700;margin: 0;">German</h3>
</div>
<div style="margin: 5px; width: 100px; display: inline-block;">
<img draggable="false" src="gitassets/xiRDX.gif" style="border-radius: 50%;" width="100px">
<h2 style="text-align: center; font-weight: 700; margin: 0;">2dward.</h2>
<h3 style="text-align: center; font-weight: 700;margin: 0;">Arabic</h3>
</div>
<div style="margin: 5px; width: 100px; display: inline-block;">
<img draggable="false" src="gitassets/ufo.png" style="border-radius: 50%;" width="100px">
<h2 style="text-align: center; font-weight: 700; margin: 0;">Ufo</h2>
<h3 style="text-align: center; font-weight: 700;margin: 0;">Hebrew</h3>
</div>
<div style="margin: 5px; width: 100px; display: inline-block;">
<img draggable="false" src="gitassets/VerifyBot.png" style="border-radius: 50%;" width="100px">
<h2 style="text-align: center; font-weight: 700; margin: 0;">VerifyBot</h2>
<h3 style="text-align: center; font-weight: 700;margin: 0;">Swedish</h3>
</div>
---
### PreMiD - (Rich) Presence for Media in Discord | by Timeraa
### PreMiD - Discord Rich Presence for your Media!

BIN
gitassets/UMU.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

244
src/package-lock.json generated
View File

@@ -5,9 +5,9 @@
"requires": true,
"dependencies": {
"@babel/parser": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.2.tgz",
"integrity": "sha512-x5HFsW+E/nQalGMw7hu+fvPqnBeBaIr0lWJ2SG0PPL2j+Pm9lYvCrsZJGIgauPIENx0v10INIyFjmSNUD/gSqQ==",
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.3.tgz",
"integrity": "sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w==",
"dev": true
},
"@paulcbetts/mime-db": {
@@ -72,9 +72,9 @@
}
},
"@types/node": {
"version": "8.10.34",
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.34.tgz",
"integrity": "sha512-alypNiaAEd0RBGXoWehJ2gchPYCITmw4CYBoB5nDlji8l8on7FsklfdfIs4DDmgpKLSX3OF3ha6SV+0W7cTzUA==",
"version": "8.10.37",
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.37.tgz",
"integrity": "sha512-Jp39foY8Euv/PG4OGPyzxis82mnjcUtXLEMA8oFMCE4ilmuJgZPdV2nZNV1moz+99EJTtcpOSgDCgATUwABKig==",
"dev": true
},
"abab": {
@@ -251,11 +251,11 @@
"dev": true,
"requires": {
"browserslist": "1.7.7",
"caniuse-db": "1.0.30000889",
"caniuse-db": "1.0.30000903",
"normalize-range": "0.1.2",
"num2fraction": "1.2.2",
"postcss": "5.2.18",
"postcss-value-parser": "3.3.0"
"postcss-value-parser": "3.3.1"
}
},
"aws-sign2": {
@@ -925,7 +925,7 @@
"babel-plugin-transform-regenerator": "6.26.0",
"browserslist": "3.2.8",
"invariant": "2.2.4",
"semver": "5.5.1"
"semver": "5.6.0"
},
"dependencies": {
"browserslist": {
@@ -934,8 +934,8 @@
"integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
"dev": true,
"requires": {
"caniuse-lite": "1.0.30000889",
"electron-to-chromium": "1.3.75"
"caniuse-lite": "1.0.30000903",
"electron-to-chromium": "1.3.83"
}
}
}
@@ -1121,7 +1121,7 @@
},
"boom": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
"resolved": "http://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"dev": true,
"requires": {
@@ -1144,8 +1144,8 @@
"integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
"dev": true,
"requires": {
"caniuse-db": "1.0.30000889",
"electron-to-chromium": "1.3.75"
"caniuse-db": "1.0.30000903",
"electron-to-chromium": "1.3.83"
}
},
"btoa": {
@@ -1190,7 +1190,7 @@
},
"camelcase-keys": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
"resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
"dev": true,
"requires": {
@@ -1205,21 +1205,21 @@
"dev": true,
"requires": {
"browserslist": "1.7.7",
"caniuse-db": "1.0.30000889",
"caniuse-db": "1.0.30000903",
"lodash.memoize": "4.1.2",
"lodash.uniq": "4.5.0"
}
},
"caniuse-db": {
"version": "1.0.30000889",
"resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000889.tgz",
"integrity": "sha512-Rf9Sbm2KS7s6Rk8iNeI5zJdquqctXBXAfy/bb1tCCYRds5RAaHNdyt2D4z8TSRToDkYsAwiSBV/bFHR+4IgTiw==",
"version": "1.0.30000903",
"resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000903.tgz",
"integrity": "sha512-x3npiIhv0zDc5qAj+r4rByMETsz2XkukPFsVWzwyY5r5h63XoO8msj9D65BqeNt1aBn17fsBnDDP78yFM/OAqA==",
"dev": true
},
"caniuse-lite": {
"version": "1.0.30000889",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000889.tgz",
"integrity": "sha512-MFxcQ6x/LEEoaIhO7Zdb7Eg8YyNONN+WBnS5ERJ0li2yRw51+i4xXUNxnLaveTb/4ZoJqsWKEmlomhG2pYzlQA==",
"version": "1.0.30000903",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000903.tgz",
"integrity": "sha512-T1XVJEpGCoaq7MDw7/6hCdYUukmSaS+1l/OQJkLtw7Cr2+/+d67tNGKEbyiqf7Ck8x6EhNFUxjYFXXka0N/w5g==",
"dev": true
},
"caseless": {
@@ -1255,13 +1255,13 @@
},
"cheerio": {
"version": "0.20.0",
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz",
"resolved": "http://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz",
"integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=",
"dev": true,
"requires": {
"css-select": "1.2.0",
"dom-serializer": "0.1.0",
"entities": "1.1.1",
"entities": "1.1.2",
"htmlparser2": "3.8.3",
"jsdom": "7.2.2",
"lodash": "4.17.11"
@@ -1378,7 +1378,7 @@
},
"color": {
"version": "0.11.4",
"resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
"resolved": "http://registry.npmjs.org/color/-/color-0.11.4.tgz",
"integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
"dev": true,
"requires": {
@@ -1592,7 +1592,7 @@
},
"cson-parser": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-1.3.5.tgz",
"resolved": "http://registry.npmjs.org/cson-parser/-/cson-parser-1.3.5.tgz",
"integrity": "sha1-fsZ14DkUVTO/KmqFYHPxWZ2cLSQ=",
"dev": true,
"requires": {
@@ -1611,7 +1611,7 @@
},
"css-color-names": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
"resolved": "http://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
"integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
"dev": true
},
@@ -1623,14 +1623,14 @@
},
"css-select": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
"resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
"integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
"dev": true,
"requires": {
"boolbase": "1.0.0",
"css-what": "2.1.0",
"css-what": "2.1.2",
"domutils": "1.5.1",
"nth-check": "1.0.1"
"nth-check": "1.0.2"
}
},
"css-stringify": {
@@ -1640,9 +1640,9 @@
"dev": true
},
"css-what": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
"integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz",
"integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==",
"dev": true
},
"cssnano": {
@@ -1681,7 +1681,7 @@
"postcss-reduce-transforms": "1.0.4",
"postcss-svgo": "2.1.6",
"postcss-unique-selectors": "2.0.2",
"postcss-value-parser": "3.3.0",
"postcss-value-parser": "3.3.1",
"postcss-zindex": "2.2.0"
}
},
@@ -1796,15 +1796,15 @@
"integrity": "sha512-Rps1xDkEEBSq3kLdsdnHZL1x2S4NGDcbrjmd4q+PykK5aJwDdP5MBgrJw1Xo+kyUHuv3JEzPqxr+Dj9ryeDRTA==",
"dev": true,
"requires": {
"debug": "4.0.1",
"debug": "4.1.0",
"gonzales-pe": "4.2.3",
"node-source-walk": "4.0.0"
"node-source-walk": "4.1.0"
},
"dependencies": {
"debug": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.0.1.tgz",
"integrity": "sha512-K23FHJ/Mt404FSlp6gSZCevIbTMLX0j3fmHhUEhQ3Wq0FMODW3+cUSoLdy1Gx4polAf4t/lphhmHH35BB8cLYw==",
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
"integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
"dev": true,
"requires": {
"ms": "2.1.1"
@@ -1824,15 +1824,15 @@
"integrity": "sha1-BWYKoblc/Yf1dGQ7+s4+iiaBEqE=",
"dev": true,
"requires": {
"debug": "3.2.5",
"debug": "3.2.6",
"gonzales-pe": "3.4.7",
"node-source-walk": "3.3.0"
},
"dependencies": {
"debug": {
"version": "3.2.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
"integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
"ms": "2.1.1"
@@ -1876,15 +1876,15 @@
"integrity": "sha1-dDJGoN01jZ2R/0ElQX9qd/vPJw8=",
"dev": true,
"requires": {
"debug": "3.2.5",
"debug": "3.2.6",
"gonzales-pe": "3.4.7",
"node-source-walk": "3.3.0"
},
"dependencies": {
"debug": {
"version": "3.2.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
"integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
"ms": "2.1.1"
@@ -1944,21 +1944,21 @@
"dev": true,
"requires": {
"domelementtype": "1.1.3",
"entities": "1.1.1"
"entities": "1.1.2"
},
"dependencies": {
"domelementtype": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
"resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
"integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
"dev": true
}
}
},
"domelementtype": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
"integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.2.1.tgz",
"integrity": "sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA==",
"dev": true
},
"domhandler": {
@@ -1967,7 +1967,7 @@
"integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
"dev": true,
"requires": {
"domelementtype": "1.3.0"
"domelementtype": "1.2.1"
}
},
"domutils": {
@@ -1977,7 +1977,7 @@
"dev": true,
"requires": {
"dom-serializer": "0.1.0",
"domelementtype": "1.3.0"
"domelementtype": "1.2.1"
}
},
"dot-prop": {
@@ -2026,7 +2026,7 @@
"dev": true,
"requires": {
"@paulcbetts/mime-types": "2.1.10",
"@types/node": "7.0.71",
"@types/node": "7.10.1",
"btoa": "1.2.1",
"debug": "2.6.9",
"lru-cache": "4.1.3",
@@ -2039,14 +2039,14 @@
},
"dependencies": {
"@types/node": {
"version": "7.0.71",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.71.tgz",
"integrity": "sha512-wpTYiRPPsjw/wiwlmP11mnln9be499B58XwoGsCy2hT8jSrRj7DE84FiIu3TBAQZ7L1ky1ibz5J9AG2YN1qZlQ==",
"version": "7.10.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.1.tgz",
"integrity": "sha512-fZvabBkcFJzc+eJN2XTuhKhop1RKdlGQgjmQuxYuQJ6K5rMNoHr6tomb6q0E8Axe+WPyfe/lr7CnnkGvzNh5mA==",
"dev": true
},
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
@@ -2109,7 +2109,7 @@
"stylus": "0.54.5",
"stylus-lookup": "1.0.2",
"toutsuite": "0.6.0",
"typescript": "3.1.1"
"typescript": "3.1.5"
}
},
"electron-config": {
@@ -2126,21 +2126,21 @@
"integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==",
"dev": true,
"requires": {
"debug": "3.2.5",
"debug": "3.2.6",
"env-paths": "1.0.0",
"fs-extra": "4.0.3",
"minimist": "1.2.0",
"nugget": "2.0.1",
"path-exists": "3.0.0",
"rc": "1.2.8",
"semver": "5.5.1",
"semver": "5.6.0",
"sumchecker": "2.0.2"
},
"dependencies": {
"debug": {
"version": "3.2.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
"integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
"ms": "2.1.1"
@@ -2182,7 +2182,7 @@
"integrity": "sha512-BsU/KJRPODlEoaOZhsmFTIaG2h1Y28JCrqeTGVqGL+fef/7xQZdHx5ZCStUDXXUSTcoqiHlc5QvLH4PfZFbOmg==",
"dev": true,
"requires": {
"@types/node": "8.10.34",
"@types/node": "8.10.37",
"electron-download": "4.1.1",
"extract-zip": "1.6.7"
}
@@ -2198,9 +2198,9 @@
}
},
"electron-to-chromium": {
"version": "1.3.75",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.75.tgz",
"integrity": "sha512-nLo03Qpw++8R6BxDZL/B1c8SQvUe/htdgc5LWYHe5YotV2jVvRUMP5AlOmxOsyeOzgMiXrNln2mC05Ixz6vuUQ==",
"version": "1.3.83",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.83.tgz",
"integrity": "sha512-DqJoDarxq50dcHsOOlMLNoy+qQitlMNbYb6wwbE0oUw2veHdRkpNrhmngiUYKMErdJ8SJ48rpJsZTQgy5SoEAA==",
"dev": true
},
"encodeurl": {
@@ -2292,9 +2292,9 @@
}
},
"entities": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
"integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
"integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
"dev": true
},
"env-paths": {
@@ -2780,7 +2780,7 @@
},
"hoek": {
"version": "2.16.3",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
"resolved": "http://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
"integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
"dev": true
},
@@ -2801,18 +2801,18 @@
"dev": true
},
"html-comment-regex": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz",
"integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=",
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
"integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
"dev": true
},
"htmlparser2": {
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
"resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
"integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
"dev": true,
"requires": {
"domelementtype": "1.3.0",
"domelementtype": "1.2.1",
"domhandler": "2.3.0",
"domutils": "1.5.1",
"entities": "1.0.0",
@@ -2821,7 +2821,7 @@
"dependencies": {
"entities": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
"resolved": "http://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
"integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
"dev": true
}
@@ -3003,7 +3003,7 @@
"integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
"dev": true,
"requires": {
"html-comment-regex": "1.1.1"
"html-comment-regex": "1.1.2"
}
},
"is-typedarray": {
@@ -3550,7 +3550,7 @@
"dependencies": {
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
}
@@ -3651,7 +3651,7 @@
},
"meow": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
"resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
"dev": true,
"requires": {
@@ -3750,12 +3750,12 @@
"integrity": "sha512-OayFWziIxiHY8bCUyLX6sTpDH8Jsbp4FfYd1j1f7vZyfgkcOnAyM4oQR16f8a0s7Gl/viMGRey8eScYk4V4EZA=="
},
"node-source-walk": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.0.0.tgz",
"integrity": "sha512-uvuaGh3yVCNdkx/aiSJ3L5mnI8BNIFdJ89owJQEgLqC8cSw56NZZK4tHuDY13P3DeZr5DjmdRpTUlxr4dHbhAw==",
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.1.0.tgz",
"integrity": "sha512-aR9GdKa9LT7sk00Z3V0c569Vx71n4KSS13be7EapoZGRFNXby/JNA0/3J+U50GaDOKKISw2HX3A3prunX4EEZw==",
"dev": true,
"requires": {
"@babel/parser": "7.1.2"
"@babel/parser": "7.1.3"
}
},
"nopt": {
@@ -3775,7 +3775,7 @@
"requires": {
"hosted-git-info": "2.7.1",
"is-builtin-module": "1.0.0",
"semver": "5.5.1",
"semver": "5.6.0",
"validate-npm-package-license": "3.0.4"
}
},
@@ -3798,9 +3798,9 @@
}
},
"nth-check": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
"integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
"integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
"dev": true,
"requires": {
"boolbase": "1.0.0"
@@ -4032,7 +4032,7 @@
"dependencies": {
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
}
@@ -4162,7 +4162,7 @@
"requires": {
"colormin": "1.1.2",
"postcss": "5.2.18",
"postcss-value-parser": "3.3.0"
"postcss-value-parser": "3.3.1"
}
},
"postcss-convert-values": {
@@ -4172,7 +4172,7 @@
"dev": true,
"requires": {
"postcss": "5.2.18",
"postcss-value-parser": "3.3.0"
"postcss-value-parser": "3.3.1"
}
},
"postcss-discard-comments": {
@@ -4238,7 +4238,7 @@
"requires": {
"has": "1.0.3",
"postcss": "5.2.18",
"postcss-value-parser": "3.3.0"
"postcss-value-parser": "3.3.1"
}
},
"postcss-merge-longhand": {
@@ -4277,7 +4277,7 @@
"requires": {
"object-assign": "4.1.1",
"postcss": "5.2.18",
"postcss-value-parser": "3.3.0"
"postcss-value-parser": "3.3.1"
}
},
"postcss-minify-gradients": {
@@ -4287,7 +4287,7 @@
"dev": true,
"requires": {
"postcss": "5.2.18",
"postcss-value-parser": "3.3.0"
"postcss-value-parser": "3.3.1"
}
},
"postcss-minify-params": {
@@ -4298,7 +4298,7 @@
"requires": {
"alphanum-sort": "1.0.2",
"postcss": "5.2.18",
"postcss-value-parser": "3.3.0",
"postcss-value-parser": "3.3.1",
"uniqs": "2.0.0"
}
},
@@ -4332,7 +4332,7 @@
"is-absolute-url": "2.1.0",
"normalize-url": "1.9.1",
"postcss": "5.2.18",
"postcss-value-parser": "3.3.0"
"postcss-value-parser": "3.3.1"
}
},
"postcss-ordered-values": {
@@ -4342,7 +4342,7 @@
"dev": true,
"requires": {
"postcss": "5.2.18",
"postcss-value-parser": "3.3.0"
"postcss-value-parser": "3.3.1"
}
},
"postcss-reduce-idents": {
@@ -4352,7 +4352,7 @@
"dev": true,
"requires": {
"postcss": "5.2.18",
"postcss-value-parser": "3.3.0"
"postcss-value-parser": "3.3.1"
}
},
"postcss-reduce-initial": {
@@ -4372,7 +4372,7 @@
"requires": {
"has": "1.0.3",
"postcss": "5.2.18",
"postcss-value-parser": "3.3.0"
"postcss-value-parser": "3.3.1"
}
},
"postcss-selector-parser": {
@@ -4394,7 +4394,7 @@
"requires": {
"is-svg": "2.1.0",
"postcss": "5.2.18",
"postcss-value-parser": "3.3.0",
"postcss-value-parser": "3.3.1",
"svgo": "0.7.2"
}
},
@@ -4410,9 +4410,9 @@
}
},
"postcss-value-parser": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
"integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=",
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
"integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
"dev": true
},
"postcss-zindex": {
@@ -4683,7 +4683,7 @@
},
"regjsgen": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
"resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
"integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
"dev": true
},
@@ -4861,9 +4861,9 @@
"dev": true
},
"semver": {
"version": "5.5.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
"integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==",
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
"integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
"dev": true
},
"send": {
@@ -5090,7 +5090,7 @@
"dev": true,
"requires": {
"spdx-expression-parse": "3.0.0",
"spdx-license-ids": "3.0.1"
"spdx-license-ids": "3.0.2"
}
},
"spdx-exceptions": {
@@ -5106,13 +5106,13 @@
"dev": true,
"requires": {
"spdx-exceptions": "2.2.0",
"spdx-license-ids": "3.0.1"
"spdx-license-ids": "3.0.2"
}
},
"spdx-license-ids": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz",
"integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==",
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz",
"integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==",
"dev": true
},
"speedometer": {
@@ -5269,7 +5269,7 @@
"dev": true,
"requires": {
"commander": "2.8.1",
"debug": "3.2.5",
"debug": "3.2.6",
"is-relative-path": "1.0.2"
},
"dependencies": {
@@ -5283,9 +5283,9 @@
}
},
"debug": {
"version": "3.2.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
"integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
"ms": "2.1.1"
@@ -5531,7 +5531,7 @@
"dev": true,
"requires": {
"errlop": "1.0.3",
"semver": "5.5.1"
"semver": "5.6.0"
}
}
}
@@ -5543,9 +5543,9 @@
"dev": true
},
"typescript": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.1.tgz",
"integrity": "sha512-Veu0w4dTc/9wlWNf2jeRInNodKlcdLgemvPsrNpfu5Pq39sgfFjvIIgTsvUHCoLBnMhPoUA+tFxsXjU6VexVRQ==",
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.5.tgz",
"integrity": "sha512-muYNWV9j5+3mXoKD6oPONKuGUmYiFX14gfo9lWm9ZXRHOqVDQiB4q1CzFPbF4QLV2E9TZXH6oK55oQ94rn3PpA==",
"dev": true
},
"uglify-js": {

View File

@@ -1,7 +1,7 @@
{
"name": "premid",
"productName": "PreMiD",
"productVersion": "1.0",
"productVersion": "1.2",
"version": "1.2.0",
"description": "PreMiD adds cool Features to YouTube/YouTube Music. Like for example Discord Rich Presence integration, Media controls and much more.",
"main": "index.js",

View File

@@ -34,6 +34,10 @@ module.exports.register = async () => {
module.exports.unregister = async () => {
console.log(CONSOLEPREFIX + chalk.red("Unregistering keyboard shortcuts..."))
if(require('os').platform() == "darwin") {
app.relaunch()
app.exit(0)
} else
globalShortcut.unregisterAll()
console.log(CONSOLEPREFIX + chalk.green("Unregistered keyboard shortcuts"))
}