diff --git a/index.js b/index.js index aa1ade1d..3ba9a9d2 100644 --- a/index.js +++ b/index.js @@ -169,8 +169,8 @@ app.get('/info', (req, res) => { } }) -if (config.PokaPlayer.debug) app.get('/debug', (req, res) => { - res.send('true') +app.get('/debug', async(req, res) => { + res.send(config.PokaPlayer.debug ? (await git.raw(['rev-parse', '--short', 'HEAD'])).slice(0,-1) : 'false') }) // get song diff --git a/js/api.js b/js/api.js index 48c8ec8e..eeeed330 100644 --- a/js/api.js +++ b/js/api.js @@ -7,14 +7,15 @@ function getBackground() { } //- 取得封面 function getCover(type, info, artist_name, album_artist_name) { + let url; if (type == "album") { - var q = '' + let q = '' q += info ? `&album_name=${encodeURIComponent(info)}` : `` q += artist_name ? `&artist_name=${encodeURIComponent(artist_name)}` : `` q += album_artist_name ? `&album_artist_name=${encodeURIComponent(album_artist_name)}` : `&album_artist_name=` - var url = `/cover/album/` + pp_encode(q) + url = `/cover/album/` + ppEncode(q) } else { - var url = `/cover/${encodeURIComponent(type)}/${encodeURIComponent(info)}` + url = `/cover/${encodeURIComponent(type)}/${encodeURIComponent(info)}` } if (window.localStorage["imgRes"] == "true") return getBackground() @@ -24,27 +25,27 @@ function getCover(type, info, artist_name, album_artist_name) { //- 取得歌詞 async function getLrc(artist, title) { - var PARAMS_JSON = [ + let PARAMS_JSON = [ { key: "additional", "value": "full_lyrics" }, { key: "limit", "value": 1 } ] if (artist) PARAMS_JSON.push({ key: "artist", "value": artist }) if (title) PARAMS_JSON.push({ key: "title", "value": title }) - var lrc = await getAPI("AudioStation/lyrics_search.cgi", "SYNO.AudioStation.LyricsSearch", "searchlyrics", PARAMS_JSON, 2) + let lrc = await getAPI("AudioStation/lyrics_search.cgi", "SYNO.AudioStation.LyricsSearch", "searchlyrics", PARAMS_JSON, 2) return lrc.data } async function getLrcByID(id) { - var lrc = await getAPI("AudioStation/lyrics.cgi", "SYNO.AudioStation.Lyrics", "getlyrics", [{ key: "id", "value": id }], 2) + let lrc = await getAPI("AudioStation/lyrics.cgi", "SYNO.AudioStation.Lyrics", "getlyrics", [{ key: "id", "value": id }], 2) return lrc.data } //- 取得歌曲連結 function getSong(song) { - var id = song.id - var res = window.localStorage["musicRes"] - var bitrate = song.additional.song_audio.bitrate / 1000 + let id = song.id + let res = window.localStorage["musicRes"] + let bitrate = song.additional.song_audio.bitrate / 1000 if (res == "wav" && bitrate > 320) res = "wav" else @@ -54,7 +55,7 @@ function getSong(song) { //- 取得專輯歌曲 async function getAlbumSong(album_name, album_artist_name, artist_name) { - var PARAMS_JSON = [ + let PARAMS_JSON = [ { key: "additional", "value": "song_tag,song_audio,song_rating" }, { key: "library", "value": "shared" }, { key: "limit", "value": 100000 }, @@ -64,12 +65,12 @@ async function getAlbumSong(album_name, album_artist_name, artist_name) { if (album_name) PARAMS_JSON.push({ key: "album", "value": album_name }) if (album_artist_name) PARAMS_JSON.push({ key: "album_artist", "value": album_artist_name }) if (artist_name) PARAMS_JSON.push({ key: "artist", "value": artist_name }) - var info = await getAPI("AudioStation/song.cgi", "SYNO.AudioStation.Song", "list", PARAMS_JSON, 3) + let info = await getAPI("AudioStation/song.cgi", "SYNO.AudioStation.Song", "list", PARAMS_JSON, 3) return info } //- 取得搜尋結果 async function searchAll(keyword) { - var PARAMS_JSON = [ + let PARAMS_JSON = [ { key: "additional", "value": "song_tag,song_audio,song_rating" }, { key: "library", "value": "shared" }, { key: "limit", "value": 1000 }, @@ -77,16 +78,16 @@ async function searchAll(keyword) { { key: "sort_direction", "value": "ASC" }, { key: "keyword", "value": keyword }, ] - var result = await getAPI("AudioStation/search.cgi", "SYNO.AudioStation.Search", "list", PARAMS_JSON, 1) + let result = await getAPI("AudioStation/search.cgi", "SYNO.AudioStation.Search", "list", PARAMS_JSON, 1) return result.data } //- API 請求 async function getAPI(CGI_PATH, API_NAME, METHOD, PARAMS_JSON = [], VERSION = 1) { - var PARAMS = '' + let PARAMS = '' for (i = 0; i < PARAMS_JSON.length; i++) {  - var PARAMS = PARAMS + '&' + PARAMS_JSON[i].key + '=' + encodeURIComponent(PARAMS_JSON[i].value) + PARAMS += '&' + PARAMS_JSON[i].key + '=' + encodeURIComponent(PARAMS_JSON[i].value) } - var req_json = { + let req_json = { "CGI_PATH": CGI_PATH, "API_NAME": API_NAME, "METHOD": METHOD, @@ -94,6 +95,6 @@ async function getAPI(CGI_PATH, API_NAME, METHOD, PARAMS_JSON = [], VERSION = 1) "PARAMS": PARAMS } req_json = JSON.stringify(req_json) - const response = await axios.get('/api/' + pp_encode(req_json)); + const response = await axios.get('/api/' + ppEncode(req_json)); return response.data } \ No newline at end of file diff --git a/js/color-theme.js b/js/color-theme.js index 48a01715..2221ed70 100644 --- a/js/color-theme.js +++ b/js/color-theme.js @@ -1,4 +1,4 @@ -$(function() { +$(() => { // 檢查有沒有設定顏色 if (!window.localStorage["mdui-theme-primary"]) window.localStorage["mdui-theme-primary"] = "indigo" @@ -12,6 +12,6 @@ $(function() { $('body').addClass("mdui-theme-layout-dark") // 設定狀態欄顏色 - var metaThemeColor = document.querySelector("meta[name=theme-color]"); + let metaThemeColor = document.querySelector("meta[name=theme-color]"); metaThemeColor.setAttribute("content", $('header>div:first-child').css("background-color")); }); \ No newline at end of file diff --git a/js/script.js b/js/script.js index bd5419fb..0db089e9 100644 --- a/js/script.js +++ b/js/script.js @@ -2,7 +2,7 @@ songList = []; const lrc = new Lyrics(`[00:00.000]`); const socket = io(); -socket.on("hello", function() { +socket.on("hello", () => { console.log('hello') socket.emit('login') }); @@ -11,70 +11,71 @@ const ap = new APlayer({ container: document.getElementById('aplayer'), fixed: true }); -//吼吼路由 -var router = new Navigo(null, true, '#!'); + +// 路由 +const router = new Navigo(null, true, '#!'); router .on({ - 'search/:keyword': function(params) { show_search(params.keyword) }, - 'search': function() { show_search() }, - 'album/:artist/:name/:album_artist': function(params) { show_album_songs(params.artist, params.name, params.album_artist) }, - 'album': function() { show_album() }, - 'folder/:dir': function(params) { show_folder(params.dir) }, - 'folder': function() { show_folder() }, - 'artist/:artist': function(params) { show_artist(params.artist) }, - 'artist': function() { show_artist() }, - 'composer/:composer': function(params) { show_composer(params.composer) }, - 'composer': function() { show_composer() }, - 'playlist/:playlistType/:playlistID': function(params) { show_playlist_songs(params.playlistType + '/' + params.playlistID) }, - 'playlist': function() { show_playlist() }, - 'random': function() { show_random() }, - 'now': function() { show_now() }, - 'lrc': function() { show_lrc() }, - 'settings': function() { show_settings() }, - '*': function() { show_home() } + 'search/:keyword': params => showSearch(params.keyword), + 'search': showSearch, + 'album/:artist/:name/:albumArtist': params => showAlbumSongs(params.artist, params.name, params.albumArtist), + 'album': showAlbum, + 'folder/:dir': params => showFolder(params.dir), + 'folder': showFolder, + 'artist/:artist': params => showArtist(params.artist), + 'artist': showArtist, + 'composer/:composer': params => showComposer(params.composer), + 'composer': showComposer, + 'playlist/:playlistType/:playlistID': params => showPlaylistSongs(params.playlistType + '/' + params.playlistID), + 'playlist': showPlaylist, + 'random': showRandom, + 'now': showNow, + 'lrc': showLrc, + 'settings': showSettings, + '*': showHome }) .resolve() router .hooks({ - before: function(done, params) { + before: (done, params) => { $("#player").removeClass('hide') done() }, - after: function(params) { + after: params => { $('#drawer a').removeClass('mdui-list-item-active') $(`#drawer a[href="${$('#content').attr('data-page')}"]`).addClass('mdui-list-item-active') } }) -ap.on("play", async function() { +ap.on("play", async () => { //沒歌就隨機播放 - if (ap.list.audios.length == 0) play_random().then(() => { + if (ap.list.audios.length == 0) playRandom().then(() => { router.navigate('now'); - show_now() + showNow() }) updateMediaSession() }) -ap.on("loadedmetadata", async function() { +ap.on("loadedmetadata", async () => { lrc.load(`[00:00.000]歌詞讀取中`) $("div[data-lrc=\"inner\"]").html(`

歌詞讀取中

`) - var nowPlaying = ap.list.audios[ap.list.index], + let nowPlaying = ap.list.audios[ap.list.index], name = nowPlaying.name, id = nowPlaying.id, artist = nowPlaying.artist, - lyric_regex = /\[([0-9.:]*)\]/i + lyricRegex = /\[([0-9.:]*)\]/i - var lrc_result = await getLrcByID(id), - lrc_s = lrc_result.lyrics - if (lrc_s == "" || !lrc_s.match(lyric_regex)) { - lrc_result = await getLrc(artist, name) - lrc_s = lrc_result ? lrc_result.lyrics[0].additional.full_lyrics : false + let lrcResult = await getLrcByID(id), + lrcs = lrcResult.lyrics + if (lrcs == "" || !lrcs.match(lyricRegex)) { + lrcResult = await getLrc(artist, name) + lrcs = lrcResult ? lrcResult.lyrics[0].additional.full_lyrics : false } - if (lrc_s && lrc_s.match(lyric_regex)) { - lrc.load(lrc_s); + if (lrcs && lrcs.match(lyricRegex)) { + lrc.load(lrcs); } else lrc.load(`[00:00.000]無歌詞`) if ($("div[data-lrc]").length > 0) { - var html = `` + let html = `` for (i = 0; i < lrc.getLyrics().length; i++) { let text = lrc.getLyrics()[i].text html += `

${text}

` @@ -82,11 +83,11 @@ ap.on("loadedmetadata", async function() { $("div[data-lrc=\"inner\"]").html(html) } }) -ap.on("timeupdate", function() { - var name = ap.list.audios[ap.list.index].name || "" - var artist = ap.list.audios[ap.list.index].artist || "" +ap.on("timeupdate", () => { + let name = ap.list.audios[ap.list.index].name || "" + let artist = ap.list.audios[ap.list.index].artist || "" - var img = window.localStorage["imgRes"] != "true" ? ap.list.audios[ap.list.index].cover : getBackground() //一定會有圖片 + let img = window.localStorage["imgRes"] != "true" ? ap.list.audios[ap.list.index].cover : getBackground() //一定會有圖片 $('#player button.play[onclick="ap.toggle()"] i').text("pause") if (name != $('#player .song-info .name').text()) { //歌名有變才更新 $('#player .song-info .name').text(name) @@ -95,7 +96,7 @@ ap.on("timeupdate", function() { } updateMediaSession() }) -ap.on("pause", function() { +ap.on("pause", () => { $('#player button.play[onclick="ap.toggle()"] i').text("play_arrow") }) @@ -106,51 +107,49 @@ function updateMediaSession() { artist: $('#player .song-info .artist').text(), artwork: [{ src: $('#player img').attr('src'), type: 'image/png' }] }); - navigator.mediaSession.setActionHandler('play', function() { ap.toggle() }); - navigator.mediaSession.setActionHandler('pause', function() { ap.pause() }); - navigator.mediaSession.setActionHandler('seekbackward', function() { ap.seek(ap.audio.currentTime - 10) }); - navigator.mediaSession.setActionHandler('seekforward', function() { ap.seek(ap.audio.currentTime + 10) }); - navigator.mediaSession.setActionHandler('previoustrack', function() { ap.skipBack() }); - navigator.mediaSession.setActionHandler('nexttrack', function() { ap.skipForward() }); + navigator.mediaSession.setActionHandler('play', () => { ap.toggle() }); + navigator.mediaSession.setActionHandler('pause', () => { ap.pause() }); + navigator.mediaSession.setActionHandler('seekbackward', () => { ap.seek(ap.audio.currentTime - 10) }); + navigator.mediaSession.setActionHandler('seekforward', () => { ap.seek(ap.audio.currentTime + 10) }); + navigator.mediaSession.setActionHandler('previoustrack', () => { ap.skipBack() }); + navigator.mediaSession.setActionHandler('nexttrack', () => { ap.skipForward() }); } } // 初始化網頁 -$(function() { +$(() => { $(`#drawer a[href="${$('#content').attr('data-page')}"]`).addClass('mdui-list-item-active') if ($(window).width() < 1024) { $('#drawer a').attr("mdui-drawer", "{target: '#drawer', swipe: true}") mdui.mutation() } - $('#player>*:not(.ctrl)').click(function() { - router.navigate('now') - }); + $('#player>*:not(.ctrl)').click(() => router.navigate('now')); // 初始化 MediaSession updateMediaSession() }); -var count = 0 +var loginFailureCount = 0 function tryRelogin() { - if (window.localStorage["userPASS"] || count <= 10) { //如果有存到密碼或是嘗試次數少於 10 次就嘗試登入 - $.post("/login/", { userPASS: window.localStorage["userPASS"] }, function(data) { + if (window.localStorage["userPASS"] || loginFailureCount <= 10) { //如果有存到密碼或是嘗試次數少於 10 次就嘗試登入 + $.post("/login/", { userPASS: window.localStorage["userPASS"] }, data => { if (data == 'success') { - count = 0 + loginFailureCount = 0 //mdui.snackbar({ message: 'Session 過期,重新登入成功', timeout: 1000 }); } else { mdui.snackbar({ message: 'Session 過期,請重新登入', timeout: 1000 }); document.location.href = "/login/"; } }); - } else if (count > 10) { + } else if (loginFailureCount > 10) { mdui.snackbar({ message: '發生了未知錯誤', timeout: 1000 }); } } //-- 加解密 -function pp_encode(str) { +function ppEncode(str) { return encodeURIComponent(base64.encode(str)) } -function pp_decode(str) { +function ppDecode(str) { return decodeURIComponent(base64.decode(str)) } //-- 秒數轉時間 @@ -162,24 +161,24 @@ function secondToTime(second) { } // 首頁 -async function show_home() { +async function showHome() { $('#content').attr('data-page', 'home') // 展示讀取中 - var header = HTML_getHeader("PokaPlayer") - $("#content").html(header + HTML_getSpinner()) + let header = HTML.getHeader("PokaPlayer") + $("#content").html(header + HTML.getSpinner()) mdui.mutation() - var data = await getAPI("entry.cgi", "SYNO.AudioStation.Pin", "list", [{ key: "limit", "value": -1 }, { key: "offset", "value": 0 }]), - album = HTML_showPins(data.data.items) + let data = await getAPI("entry.cgi", "SYNO.AudioStation.Pin", "list", [{ key: "limit", "value": -1 }, { key: "offset", "value": 0 }]), + album = HTML.showPins(data.data.items) $("#content").html(header + album) $("#content>:not(#header-wrapper)") router.updatePageLinks() } //- 搜尋 -async function show_search(keyword) { +async function showSearch(keyword) { $('#content').attr('data-page', 'search') - var html = ` + let html = `
@@ -195,7 +194,7 @@ async function show_search(keyword) {
` - var noResultText = [ + let noResultTexts = [ '嘿,我們沒聽說過那個!', '也許試試其他關鍵字', '找不到啦QQQ', @@ -212,26 +211,26 @@ async function show_search(keyword) { '飛鴿傳書也找不到,咕咕咕', '我們把搜尋結果拿去餵魚了' ] - var noResult = () => { return `

${noResultText[Math.floor(Math.random() * noResultText.length)]}

` } + const noResult = () => { return `

${noResultTexts[Math.floor(Math.random() * noResultTexts.length)]}

` } if (keyword) { - var result = await searchAll(keyword) - var tabs = `
+ let result = await searchAll(keyword) + let tabs = `
歌曲 (${result.songTotal}) 專輯 (${result.albumTotal}) 演出者 (${result.artistTotal})
` - var result_html = `` + let resultHtml = `` // 歌曲 - if (result.songTotal > 0) result_html += `
${HTML_showSongs(result.songs)}
` - else result_html += `
${noResult()}
` + if (result.songTotal > 0) resultHtml += `
${HTML.showSongs(result.songs)}
` + else resultHtml += `
${noResult()}
` // 專輯 - if (result.albumTotal > 0) result_html += `
${HTML_showAlbums(result.albums)}
` - else result_html += `
${noResult()}
` + if (result.albumTotal > 0) resultHtml += `
${HTML.showAlbums(result.albums)}
` + else resultHtml += `
${noResult()}
` // 演出者 - if (result.artistTotal > 0) result_html += `
${HTML_showArtist(result.artists)}
` - else result_html += `
${noResult()}
` + if (result.artistTotal > 0) resultHtml += `
${HTML.showArtist(result.artists)}
` + else resultHtml += `
${noResult()}
` if ($("#content").attr('data-page') == 'search') { - $("#content").html(html + tabs + result_html) + $("#content").html(html + tabs + resultHtml) mdui.mutation() } } else @@ -244,21 +243,21 @@ async function show_search(keyword) { }); } //- 列出專輯 -async function show_album() { +async function showAlbum() { // 展示讀取中 - var header = HTML_getHeader("專輯") + let header = HTML.getHeader("專輯") $('#content').attr('data-page', 'album') - $("#content").html(header + HTML_getSpinner()) + $("#content").html(header + HTML.getSpinner()) mdui.mutation() - var albums_albums = await getAPI("AudioStation/album.cgi", "SYNO.AudioStation.Album", "list", [ + let albums = await getAPI("AudioStation/album.cgi", "SYNO.AudioStation.Album", "list", [ { key: "additional", "value": "avg_rating" }, { key: "library", "value": "shared" }, { key: "limit", "value": 1000 }, { key: "sort_by", "value": "name" }, { key: "sort_direction", "value": "ASC" }, ], 3), - album = HTML_showAlbums(albums_albums.data.albums), - recently_albums = await getAPI("AudioStation/album.cgi", "SYNO.AudioStation.Album", "list", [ + album = HTML.showAlbums(albums.data.albums), + recentlyAlbums = await getAPI("AudioStation/album.cgi", "SYNO.AudioStation.Album", "list", [ { key: "additional", "value": "avg_rating" }, { key: "library", "value": "shared" }, { key: "limit", "value": 1000 }, @@ -266,7 +265,7 @@ async function show_album() { { key: "sort_by", "value": "time" }, { key: "sort_direction", "value": "desc" }, ], 3), - recently = HTML_showAlbums(recently_albums.data.albums), + recently = HTML.showAlbums(recentlyAlbums.data.albums), tabs = `
專輯列表 最近加入 @@ -281,17 +280,17 @@ async function show_album() { } } //- 展示專輯歌曲 -async function show_album_songs(a, b, c) { - var artist = a == '#' ? '' : a, +async function showAlbumSongs(a, b, c) { + let artist = a == '#' ? '' : a, album = b == '#' ? '' : b, - album_artist = c == '#' ? '' : c + albumArtist = c == '#' ? '' : c //如果從首頁按進去頁籤沒切換 $("#content").attr('data-page', 'album') - var albumInfo = ` + let albumInfo = `
+ style="background-image:url(${getCover("album", album,artist,albumArtist)})">
${album}
@@ -306,7 +305,7 @@ async function show_album_songs(a, b, c) {
` - var actions = ` + let actions = ` ` // 展示讀取中 - $("#content").html(albumInfo + HTML_getSpinner()) + $("#content").html(albumInfo + HTML.getSpinner()) mdui.mutation() //抓資料 - var data = await getAlbumSong(album, album_artist, artist), - html = HTML_showSongs(data.data.songs) + let data = await getAlbumSong(album, albumArtist, artist), + html = HTML.showSongs(data.data.songs) if ($("#content").attr('data-page') == 'album') { $("#content").html(albumInfo + html) $("#content>:not(.album-info):not(.mdui-divider)") } // 獲取總時間 - var time = 0 + let time = 0 for (i = 0; i < data.data.songs.length; i++) time += data.data.songs[i].additional.song_audio.duration $("#content .album-info .time").html(`${data.data.songs.length} 首歌曲/${secondToTime(time)}`) $("#content .album-info .actions").html(actions) } // 資料夾 -async function show_folder(folder) { +async function showFolder(folder) { $("#content").attr('data-page', 'folder') // 展示讀取中 - var header = HTML_getHeader("資料夾") - $("#content").html(header + HTML_getSpinner()) + let header = HTML.getHeader("資料夾") + $("#content").html(header + HTML.getSpinner()) mdui.mutation() - var PARAMS_JSON = [ + let PARAMS_JSON = [ { key: "additional", "value": "song_tag,song_audio,song_rating" }, { key: "library", "value": "shared" }, { key: "limit", "value": 1000 }, @@ -350,22 +349,22 @@ async function show_folder(folder) { if (folder) { PARAMS_JSON.push({ key: "id", "value": folder }) } - var data = await getAPI("AudioStation/folder.cgi", "SYNO.AudioStation.Folder", "list", PARAMS_JSON, 2), - folderHTML = HTML_showFolder(data.data.items) + let data = await getAPI("AudioStation/folder.cgi", "SYNO.AudioStation.Folder", "list", PARAMS_JSON, 2), + folderHTML = HTML.showFolder(data.data.items) if ($("#content").attr('data-page') == 'folder') { $("#content").html(header + folderHTML) $("#content>:not(#header-wrapper)") router.updatePageLinks() } } -async function show_artist(artist) { - var header = HTML_getHeader("演出者") +async function showArtist(artist) { + let header = HTML.getHeader("演出者") $("#content").attr('data-page', 'artist') - $("#content").html(header + HTML_getSpinner()) + $("#content").html(header + HTML.getSpinner()) mdui.mutation() if (artist) { - var header = HTML_getHeader("演出者 / " + artist) - var PARAMS_JSON = [ + let header = HTML.getHeader("演出者 / " + artist) + let PARAMS_JSON = [ { key: "additional", "value": "avg_rating" }, { key: "library", "value": "shared" }, { key: "limit", "value": 1000 }, @@ -374,21 +373,21 @@ async function show_artist(artist) { { key: "sort_direction", "value": "ASC" }, { key: "artist", "value": artist != "未知" ? artist : '' }, ] - var data = await getAPI("AudioStation/album.cgi", "SYNO.AudioStation.Album", "list", PARAMS_JSON, 3), - albumHTML = HTML_showAlbums(data.data.albums) + let data = await getAPI("AudioStation/album.cgi", "SYNO.AudioStation.Album", "list", PARAMS_JSON, 3), + albumHTML = HTML.showAlbums(data.data.albums) if ($("#content").attr('data-page') == 'artist') $("#content").html(header + albumHTML) } else { //請求資料囉 - var PARAMS_JSON = [ + let PARAMS_JSON = [ { key: "limit", "value": 1000 }, { key: "library", "value": "shared" }, { key: "additional", "value": "avg_rating" }, { key: "sort_by", "value": "name" }, { key: "sort_direction", "value": "ASC" } ] - var data = await getAPI("AudioStation/artist.cgi", "SYNO.AudioStation.Artist", "list", PARAMS_JSON, 4), - artistsHTML = HTML_showArtist(data.data.artists) + let data = await getAPI("AudioStation/artist.cgi", "SYNO.AudioStation.Artist", "list", PARAMS_JSON, 4), + artistsHTML = HTML.showArtist(data.data.artists) if ($("#content").attr('data-page') == 'artist') $("#content").html(header + artistsHTML) } @@ -397,14 +396,14 @@ async function show_artist(artist) { router.updatePageLinks() } } -async function show_composer(composer) { - var header = HTML_getHeader("作曲者") +async function showComposer(composer) { + let header = HTML.getHeader("作曲者") $("#content").attr('data-page', 'composer') - $("#content").html(header + HTML_getSpinner()) + $("#content").html(header + HTML.getSpinner()) mdui.mutation() if (composer) { - var header = HTML_getHeader("作曲者 / " + composer) - var PARAMS_JSON = [ + let header = HTML.getHeader("作曲者 / " + composer) + let PARAMS_JSON = [ { key: "additional", "value": "avg_rating" }, { key: "library", "value": "shared" }, { key: "limit", "value": 1000 }, @@ -414,12 +413,12 @@ async function show_composer(composer) { { key: "composer", "value": composer != "未知" ? composer : '' }, ], data = await getAPI("AudioStation/album.cgi", "SYNO.AudioStation.Album", "list", PARAMS_JSON, 3), - albumHTML = HTML_showAlbums(data.data.albums) + albumHTML = HTML.showAlbums(data.data.albums) if ($("#content").attr('data-page') == 'composer') $("#content").html(header + albumHTML) } else { //請求資料囉 - var PARAMS_JSON = [ + let PARAMS_JSON = [ { key: "limit", "value": 1000 }, { key: "library", "value": "shared" }, { key: "additional", "value": "avg_rating" }, @@ -427,7 +426,7 @@ async function show_composer(composer) { { key: "sort_direction", "value": "ASC" } ], data = await getAPI("AudioStation/composer.cgi", "SYNO.AudioStation.Composer", "list", PARAMS_JSON, 2), - composersHTML = HTML_showComposer(data.data.composers) + composersHTML = HTML.showComposer(data.data.composers) if ($("#content").attr('data-page') == 'composer') $("#content").html(header + composersHTML) } @@ -437,13 +436,13 @@ async function show_composer(composer) { } } //- 播放清單 -async function show_playlist() { +async function showPlaylist() { // 展示讀取中 - var header = HTML_getHeader("所有清單") - $("#content").html(header + HTML_getSpinner()) + let header = HTML.getHeader("所有清單") + $("#content").html(header + HTML.getSpinner()) $('#content').attr('data-page', 'playlist') mdui.mutation() - var playlist = await getAPI("AudioStation/playlist.cgi", "SYNO.AudioStation.Playlist", "list", [ + let playlist = await getAPI("AudioStation/playlist.cgi", "SYNO.AudioStation.Playlist", "list", [ { key: "limit", "value": 1000 }, { key: "library", "value": "shared" }, { key: "sort_by", "value": "" }, @@ -453,22 +452,22 @@ async function show_playlist() { if (playlist.data.playlists.length < 0) { $("#content").html(header + `

沒有任何播放清單

`) } - $("#content").html(header + HTML_showPlaylists(playlist.data.playlists)) + $("#content").html(header + HTML.showPlaylists(playlist.data.playlists)) router.updatePageLinks() } } //- 播放清單歌曲 -async function show_playlist_songs(id) { +async function showPlaylistSongs(id) { //如果從首頁按進去 $("#content").attr('data-page', 'playlist') // 展示讀取中 - var header = HTML_getHeader("正在讀取播放清單") - $("#content").html(header + HTML_getSpinner()) + let header = HTML.getHeader("正在讀取播放清單") + $("#content").html(header + HTML.getSpinner()) mdui.mutation() //抓資料 - var playlist = await getAPI("AudioStation/playlist.cgi", "SYNO.AudioStation.Playlist", "getinfo", [ + let playlist = await getAPI("AudioStation/playlist.cgi", "SYNO.AudioStation.Playlist", "getinfo", [ { key: "limit", "value": 1000 }, { key: "library", "value": "shared" }, { key: "sort_by", "value": "" }, @@ -476,39 +475,39 @@ async function show_playlist_songs(id) { { key: "id", "value": id }, { key: "sort_direction", "value": "ASC" } ], 3) - var result = playlist.data.playlists[0] - var name = result.name - var songs = HTML_showSongs(result.additional.songs) - var header = HTML_getHeader(name) + let result = playlist.data.playlists[0] + let name = result.name + let songs = HTML.showSongs(result.additional.songs) + let header = HTML.getHeader(name) if ($("#content").attr('data-page') == 'playlist') { $("#content").html(header + songs) $("#content>:not(#header-wrapper)") } } //- 隨機播放 -async function show_random() { +async function showRandom() { // 展示讀取中 - var header = HTML_getHeader("隨機播放") - $("#content").html(header + HTML_getSpinner()) + let header = HTML.getHeader("隨機播放") + $("#content").html(header + HTML.getSpinner()) $('#content').attr('data-page', 'random') mdui.mutation() - var PARAMS_JSON = [ + let PARAMS_JSON = [ { key: "additional", "value": "song_tag,song_audio,song_rating" }, { key: "library", "value": "shared" }, { key: "limit", "value": 100 }, { key: "sort_by", "value": "random" } ], data = await getAPI("AudioStation/song.cgi", "SYNO.AudioStation.Song", "list", PARAMS_JSON, 1), - album = HTML_showSongs(data.data.songs) + album = HTML.showSongs(data.data.songs) if ($("#content").attr('data-page') == 'random') { $("#content").html(header + album) $("#content>:not(#header-wrapper)") } } -async function play_random() { +async function playRandom() { router.navigate('now') - var PARAMS_JSON = [ + let PARAMS_JSON = [ { key: "additional", "value": "song_tag,song_audio,song_rating" }, { key: "library", "value": "shared" }, { key: "limit", "value": 100 }, @@ -518,14 +517,14 @@ async function play_random() { playSongs(data.data.songs, false, false) } //- 現正播放 -async function show_now() { +async function showNow() { $('#content').attr('data-page', 'now') - var html = `` - return html -} - -function HTML_showAlbums(items) { - //var album = '
' - var album = '
' - for (i = 0; i < items.length; i++) {  - let albumData = items[i] - var artist = albumData.album_artist || albumData.display_artist || '' - var album_artist = albumData.album_artist || '' - var name = albumData.name || '' - var img = getCover("album", name, artist, album_artist) - if (albumData.criteria) { - var artist = artist || albumData.criteria.artist || albumData.criteria.album_artist || '未知' - var album_artist = album_artist || albumData.criteria.album_artist || '' - var name = name || albumData.criteria.album || '' - } - //await getAlbumSong(albumData.criteria.album, albumData.criteria.album_artist, albumData.criteria.artist) - album += ` -
-
-
-
-
${name}
-
${artist}
-
+ html += '
' + return html + }, + showArtist: artists => { + let html = `
    ` + for (i = 0; i < artists.length; i++) { + let artist = artists[i] + let name = artist.name ? artist.name : "未知" + let img = window.localStorage["imgRes"] == "true" ? '' : `
    ` + html += ` +
  • + ${img} +
    + ${name}
    -
-
` - } - album += "
" - return album -} - -function HTML_showPlaylists(playlists) { - var html = `' - return html -} - -function HTML_showSongs(songs) { - songList = songs - var html = `
` - for (i = 0; i < songs.length; i++) { - let song = songs[i] - let title = song.title - let artist = song.additional.song_tag.artist - let album_artist = song.additional.song_tag.album_artist - let album = song.additional.song_tag.album - let clickAction = `onclick="playSongs(songList,\`${song.id}\`);router.navigate('now');" ` - let addAction = `onclick="addSong(songList,'${song.id}')"` - - let img = window.localStorage["imgRes"] == "true" ? '' : - `
- -
` - - html += ` -
  • - ${img} -
    -
    ${title}
    -
    ${artist}
    -
    - -
  • `  - } - html += '
    ' - return html -} - - -function HTML_showArtist(artists) { - var html = `' - return html -} - -function HTML_showComposer(composers) { - var html = `' + return html + }, + showComposer: composers => { + let html = `' return html + } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7cc2e7a9..2977e744 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "pokaplayer", - "version": "0.5.4", + "version": "0.6.5", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -14,7 +14,7 @@ "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.3.tgz", "integrity": "sha512-lyJ8sW1PbY3uwuvpOBZ9zMYKshMnQpXmeDHh8dj9j2nJm/xrW0FgB5gLSYOArj5X0IfaXnmhFoJnhS4KbqIMug==", "requires": { - "@types/babel-types": "*" + "@types/babel-types": "7.0.4" } }, "accepts": { @@ -22,7 +22,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "~2.1.18", + "mime-types": "2.1.19", "negotiator": "0.6.1" } }, @@ -36,7 +36,7 @@ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", "requires": { - "acorn": "^4.0.4" + "acorn": "4.0.13" }, "dependencies": { "acorn": { @@ -56,10 +56,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "align-text": { @@ -67,9 +67,9 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" } }, "array-flatten": { @@ -122,8 +122,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "core-js": "2.5.7", + "regenerator-runtime": "0.11.1" } }, "babel-types": { @@ -131,10 +131,10 @@ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "1.0.3" } }, "babylon": { @@ -173,7 +173,7 @@ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "optional": true, "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "better-assert": { @@ -195,15 +195,15 @@ "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", "requires": { "bytes": "3.0.0", - "content-type": "~1.0.4", + "content-type": "1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", + "depd": "1.1.2", + "http-errors": "1.6.3", "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", + "on-finished": "2.3.0", "qs": "6.5.2", "raw-body": "2.3.3", - "type-is": "~1.6.16" + "type-is": "1.6.16" } }, "bytes": { @@ -231,8 +231,8 @@ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, "character-parser": { @@ -240,7 +240,7 @@ "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", "requires": { - "is-regex": "^1.0.3" + "is-regex": "1.0.4" } }, "clean-css": { @@ -248,7 +248,7 @@ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", "requires": { - "source-map": "0.5.x" + "source-map": "0.5.7" } }, "co": { @@ -261,7 +261,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "component-bind": { @@ -284,10 +284,10 @@ "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", "requires": { - "@types/babel-types": "^7.0.0", - "@types/babylon": "^6.16.2", - "babel-types": "^6.26.0", - "babylon": "^6.18.0" + "@types/babel-types": "7.0.4", + "@types/babylon": "6.16.3", + "babel-types": "6.26.0", + "babylon": "6.18.0" } }, "content-disposition": { @@ -351,8 +351,8 @@ "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-2.5.0.tgz", "integrity": "sha512-gzmXu16/prizIbKPPKJo+WgBpV7k8Rxxu9FgaANW+vx5DebCXavfRqbROjKkr9ETvVPqs+IO+NXj4GG/eLf8zQ==", "requires": { - "is-nan": "^1.2.1", - "moment-timezone": "^0.5.0" + "is-nan": "1.2.1", + "moment-timezone": "0.5.21" } }, "dashdash": { @@ -360,7 +360,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "dasherize": { @@ -386,8 +386,8 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" + "foreach": "2.0.5", + "object-keys": "1.0.12" } }, "delayed-stream": { @@ -426,7 +426,7 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "0.1.1" } }, "ee-first": { @@ -444,12 +444,12 @@ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.0.tgz", "integrity": "sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw==", "requires": { - "accepts": "~1.3.4", + "accepts": "1.3.5", "base64id": "1.0.0", "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~3.3.1" + "debug": "3.1.0", + "engine.io-parser": "2.1.2", + "ws": "3.3.3" }, "dependencies": { "debug": { @@ -469,14 +469,14 @@ "requires": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", + "debug": "3.1.0", + "engine.io-parser": "2.1.2", "has-cors": "1.1.0", "indexof": "0.0.1", "parseqs": "0.0.5", "parseuri": "0.0.5", - "ws": "~3.3.1", - "xmlhttprequest-ssl": "~1.5.4", + "ws": "3.3.3", + "xmlhttprequest-ssl": "1.5.5", "yeast": "0.1.2" }, "dependencies": { @@ -496,10 +496,10 @@ "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==", "requires": { "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", + "arraybuffer.slice": "0.0.7", "base64-arraybuffer": "0.1.5", "blob": "0.0.4", - "has-binary2": "~1.0.2" + "has-binary2": "1.0.3" } }, "escape-html": { @@ -527,36 +527,36 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "requires": { - "accepts": "~1.3.5", + "accepts": "1.3.5", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", - "content-type": "~1.0.4", + "content-type": "1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "finalhandler": "1.1.1", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.3", + "proxy-addr": "2.0.3", "qs": "6.5.1", - "range-parser": "~1.2.0", + "range-parser": "1.2.0", "safe-buffer": "5.1.1", "send": "0.16.2", "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", + "statuses": "1.4.0", + "type-is": "1.6.16", "utils-merge": "1.0.1", - "vary": "~1.1.2" + "vary": "1.1.2" }, "dependencies": { "body-parser": { @@ -565,15 +565,15 @@ "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", "requires": { "bytes": "3.0.0", - "content-type": "~1.0.4", + "content-type": "1.0.4", "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", + "depd": "1.1.2", + "http-errors": "1.6.3", "iconv-lite": "0.4.19", - "on-finished": "~2.3.0", + "on-finished": "2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "~1.6.15" + "type-is": "1.6.16" } }, "iconv-lite": { @@ -610,7 +610,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" + "statuses": "1.4.0" } }, "setprototypeof": { @@ -636,10 +636,10 @@ "cookie-signature": "1.0.6", "crc": "3.4.4", "debug": "2.6.9", - "depd": "~1.1.1", - "on-headers": "~1.0.1", - "parseurl": "~1.3.2", - "uid-safe": "~2.1.5", + "depd": "1.1.2", + "on-headers": "1.0.1", + "parseurl": "1.3.2", + "uid-safe": "2.1.5", "utils-merge": "1.0.1" } }, @@ -648,9 +648,9 @@ "resolved": "https://registry.npmjs.org/express-socket.io-session/-/express-socket.io-session-1.3.5.tgz", "integrity": "sha512-ila9jN7Pu9OuNIDzkuW+ZChR2Y0TzyyFITT7xiOWCjuGCDUWioD382zqxI7HOaa8kIhfs3wTLOZMU9h6buuOFw==", "requires": { - "cookie-parser": "~1.3.3", - "crc": "^3.3.0", - "debug": "~2.6.0" + "cookie-parser": "1.3.5", + "crc": "3.4.4", + "debug": "2.6.9" } }, "extend": { @@ -679,12 +679,12 @@ "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.4.0", + "unpipe": "1.0.0" }, "dependencies": { "statuses": { @@ -709,9 +709,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "^0.4.0", + "asynckit": "0.4.0", "combined-stream": "1.0.6", - "mime-types": "^2.1.12" + "mime-types": "2.1.19" } }, "forwarded": { @@ -734,9 +734,9 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.2" } }, "function-bind": { @@ -749,7 +749,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "graceful-fs": { @@ -767,8 +767,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" + "ajv": "5.5.2", + "har-schema": "2.0.0" } }, "has": { @@ -776,7 +776,7 @@ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { - "function-bind": "^1.1.1" + "function-bind": "1.1.1" } }, "has-binary2": { @@ -842,10 +842,10 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "statuses": "1.5.0" } }, "http-signature": { @@ -853,9 +853,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.2" } }, "iconv-lite": { @@ -863,7 +863,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "ienoopen": { @@ -901,8 +901,8 @@ "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", "requires": { - "acorn": "~4.0.2", - "object-assign": "^4.0.1" + "acorn": "4.0.13", + "object-assign": "4.1.1" }, "dependencies": { "acorn": { @@ -917,7 +917,7 @@ "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.2.1.tgz", "integrity": "sha1-n69ltvttskt/XAYoR16nH5iEAeI=", "requires": { - "define-properties": "^1.1.1" + "define-properties": "1.1.2" } }, "is-promise": { @@ -930,7 +930,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "requires": { - "has": "^1.0.1" + "has": "1.0.3" } }, "is-typedarray": { @@ -979,7 +979,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "4.1.11" } }, "jsprim": { @@ -998,8 +998,8 @@ "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", "requires": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" + "is-promise": "2.1.0", + "promise": "7.3.1" } }, "kind-of": { @@ -1007,7 +1007,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } }, "lazy-cache": { @@ -1060,7 +1060,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", "requires": { - "mime-db": "~1.35.0" + "mime-db": "1.35.0" } }, "moment": { @@ -1073,7 +1073,7 @@ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.21.tgz", "integrity": "sha512-j96bAh4otsgj3lKydm3K7kdtA3iKf2m6MY2iSYCzCm5a1zmHo1g+aK3068dDEeocLZQIS9kU8bsdQHLqEvgW0A==", "requires": { - "moment": ">= 2.9.0" + "moment": "2.22.2" } }, "ms": { @@ -1096,9 +1096,9 @@ "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-1.3.0.tgz", "integrity": "sha512-NNwO9SUPjBwFmPh3vXiPVEhJLn4uqYmZYvJV358SRGM06BR4UoIqxJpeJwDDXB6atULsgQA97MfD1zMd5xsu+A==", "requires": { - "cron-parser": "^2.4.0", + "cron-parser": "2.5.0", "long-timeout": "0.1.1", - "sorted-array-functions": "^1.0.0" + "sorted-array-functions": "1.2.0" } }, "oauth-sign": { @@ -1139,7 +1139,7 @@ "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", "requires": { - "better-assert": "~1.0.0" + "better-assert": "1.0.2" } }, "parseuri": { @@ -1147,7 +1147,7 @@ "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", "requires": { - "better-assert": "~1.0.0" + "better-assert": "1.0.2" } }, "parseurl": { @@ -1180,7 +1180,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "asap": "~2.0.3" + "asap": "2.0.6" } }, "proxy-addr": { @@ -1188,7 +1188,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.1.2", "ipaddr.js": "1.6.0" } }, @@ -1197,14 +1197,14 @@ "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", "requires": { - "pug-code-gen": "^2.0.1", - "pug-filters": "^3.1.0", - "pug-lexer": "^4.0.0", - "pug-linker": "^3.0.5", - "pug-load": "^2.0.11", - "pug-parser": "^5.0.0", - "pug-runtime": "^2.0.4", - "pug-strip-comments": "^1.0.3" + "pug-code-gen": "2.0.1", + "pug-filters": "3.1.0", + "pug-lexer": "4.0.0", + "pug-linker": "3.0.5", + "pug-load": "2.0.11", + "pug-parser": "5.0.0", + "pug-runtime": "2.0.4", + "pug-strip-comments": "1.0.3" } }, "pug-attrs": { @@ -1212,9 +1212,9 @@ "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.3.tgz", "integrity": "sha1-owlflw5kFR972tlX7vVftdeQXRU=", "requires": { - "constantinople": "^3.0.1", - "js-stringify": "^1.0.1", - "pug-runtime": "^2.0.4" + "constantinople": "3.1.2", + "js-stringify": "1.0.2", + "pug-runtime": "2.0.4" } }, "pug-code-gen": { @@ -1222,14 +1222,14 @@ "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", "requires": { - "constantinople": "^3.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.1", - "pug-attrs": "^2.0.3", - "pug-error": "^1.3.2", - "pug-runtime": "^2.0.4", - "void-elements": "^2.0.1", - "with": "^5.0.0" + "constantinople": "3.1.2", + "doctypes": "1.1.0", + "js-stringify": "1.0.2", + "pug-attrs": "2.0.3", + "pug-error": "1.3.2", + "pug-runtime": "2.0.4", + "void-elements": "2.0.1", + "with": "5.1.1" } }, "pug-error": { @@ -1242,13 +1242,13 @@ "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz", "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=", "requires": { - "clean-css": "^4.1.11", - "constantinople": "^3.0.1", + "clean-css": "4.1.11", + "constantinople": "3.1.2", "jstransformer": "1.0.0", - "pug-error": "^1.3.2", - "pug-walk": "^1.1.7", - "resolve": "^1.1.6", - "uglify-js": "^2.6.1" + "pug-error": "1.3.2", + "pug-walk": "1.1.7", + "resolve": "1.8.1", + "uglify-js": "2.8.29" } }, "pug-lexer": { @@ -1256,9 +1256,9 @@ "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz", "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=", "requires": { - "character-parser": "^2.1.1", - "is-expression": "^3.0.0", - "pug-error": "^1.3.2" + "character-parser": "2.2.0", + "is-expression": "3.0.0", + "pug-error": "1.3.2" } }, "pug-linker": { @@ -1266,8 +1266,8 @@ "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", "requires": { - "pug-error": "^1.3.2", - "pug-walk": "^1.1.7" + "pug-error": "1.3.2", + "pug-walk": "1.1.7" } }, "pug-load": { @@ -1275,8 +1275,8 @@ "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.11.tgz", "integrity": "sha1-5kjlftET/iwfRdV4WOorrWvAFSc=", "requires": { - "object-assign": "^4.1.0", - "pug-walk": "^1.1.7" + "object-assign": "4.1.1", + "pug-walk": "1.1.7" } }, "pug-parser": { @@ -1284,7 +1284,7 @@ "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz", "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=", "requires": { - "pug-error": "^1.3.2", + "pug-error": "1.3.2", "token-stream": "0.0.1" } }, @@ -1298,7 +1298,7 @@ "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.3.tgz", "integrity": "sha1-8VWVkiBu3G+FMQ2s9K+0igJa9Z8=", "requires": { - "pug-error": "^1.3.2" + "pug-error": "1.3.2" } }, "pug-walk": { @@ -1357,26 +1357,26 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" + "aws-sign2": "0.7.0", + "aws4": "1.7.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.19", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.1", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.3.2" } }, "resolve": { @@ -1384,7 +1384,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "requires": { - "path-parse": "^1.0.5" + "path-parse": "1.0.5" } }, "retry": { @@ -1397,7 +1397,7 @@ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "requires": { - "align-text": "^0.1.1" + "align-text": "0.1.4" } }, "safe-buffer": { @@ -1416,18 +1416,18 @@ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", + "http-errors": "1.6.3", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" }, "dependencies": { "statuses": { @@ -1442,9 +1442,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", "send": "0.16.2" } }, @@ -1453,10 +1453,10 @@ "resolved": "https://registry.npmjs.org/session-file-store/-/session-file-store-1.2.0.tgz", "integrity": "sha512-DkYLYFkkK6u9xyraVHemulhlUuuufLukf7SQxOZSx8SPwkswcaIrls882PaQZ72zRKsyhUVNxOUl9w0lQubUFw==", "requires": { - "bagpipe": "^0.3.5", - "fs-extra": "^4.0.0", - "object-assign": "^4.1.1", - "retry": "^0.10.0", + "bagpipe": "0.3.5", + "fs-extra": "4.0.3", + "object-assign": "4.1.1", + "retry": "0.10.1", "write-file-atomic": "1.3.1" } }, @@ -1470,7 +1470,7 @@ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.96.0.tgz", "integrity": "sha512-+gXuzJFpGtK9zCa7rPMMNs8AF2weWMsB0Vlyym5VkFX2VGQ3VBzKhnxPN//PWrGuPFGQ/u0F1yL6rZoPhj/KPQ==", "requires": { - "debug": "^3.1.0" + "debug": "3.1.0" }, "dependencies": { "debug": { @@ -1493,12 +1493,12 @@ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", "requires": { - "debug": "~3.1.0", - "engine.io": "~3.2.0", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", + "debug": "3.1.0", + "engine.io": "3.2.0", + "has-binary2": "1.0.3", + "socket.io-adapter": "1.1.1", "socket.io-client": "2.1.1", - "socket.io-parser": "~3.2.0" + "socket.io-parser": "3.2.0" }, "dependencies": { "debug": { @@ -1525,15 +1525,15 @@ "base64-arraybuffer": "0.1.5", "component-bind": "1.0.0", "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.2.0", - "has-binary2": "~1.0.2", + "debug": "3.1.0", + "engine.io-client": "3.2.1", + "has-binary2": "1.0.3", "has-cors": "1.1.0", "indexof": "0.0.1", "object-component": "0.0.3", "parseqs": "0.0.5", "parseuri": "0.0.5", - "socket.io-parser": "~3.2.0", + "socket.io-parser": "3.2.0", "to-array": "0.1.4" }, "dependencies": { @@ -1553,7 +1553,7 @@ "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", "requires": { "component-emitter": "1.2.1", - "debug": "~3.1.0", + "debug": "3.1.0", "isarray": "2.0.1" }, "dependencies": { @@ -1582,15 +1582,15 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" } }, "statuses": { @@ -1618,7 +1618,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { - "punycode": "^1.4.1" + "punycode": "1.4.1" } }, "tunnel-agent": { @@ -1626,7 +1626,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.1" } }, "tweetnacl": { @@ -1641,7 +1641,7 @@ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.18" + "mime-types": "2.1.19" } }, "uglify-js": { @@ -1649,9 +1649,9 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" }, "dependencies": { "camelcase": { @@ -1664,8 +1664,8 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", + "center-align": "0.1.3", + "right-align": "0.1.3", "wordwrap": "0.0.2" } }, @@ -1679,9 +1679,9 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", "window-size": "0.1.0" } } @@ -1698,7 +1698,7 @@ "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", "requires": { - "random-bytes": "~1.0.0" + "random-bytes": "1.0.0" } }, "ultron": { @@ -1736,9 +1736,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "^1.0.0", + "assert-plus": "1.0.0", "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "extsprintf": "1.3.0" } }, "void-elements": { @@ -1751,8 +1751,8 @@ "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", "requires": { - "acorn": "^3.1.0", - "acorn-globals": "^3.0.0" + "acorn": "3.3.0", + "acorn-globals": "3.1.0" } }, "wordwrap": { @@ -1765,9 +1765,9 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.1.tgz", "integrity": "sha1-fUW6MjFjKN0ex9kPYOvA2EW7dZo=", "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" } }, "ws": { @@ -1775,9 +1775,9 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1", + "ultron": "1.1.1" } }, "x-xss-protection": { diff --git a/package.json b/package.json index 5e0ff9ef..9558fd2a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pokaplayer", - "version": "0.6.5", + "version": "0.6.6", "description": "", "main": "index.js", "scripts": { @@ -33,4 +33,4 @@ "simple-git": "^1.96.0", "socket.io": "^2.1.1" } -} \ No newline at end of file +}