diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 0000000..886bda8
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1 @@
+/public/build/
\ No newline at end of file
diff --git a/public/assets/download.svg b/app/public/assets/download.svg
similarity index 100%
rename from public/assets/download.svg
rename to app/public/assets/download.svg
diff --git a/app/public/favicon.png b/app/public/favicon.png
new file mode 100644
index 0000000..7e6f5eb
Binary files /dev/null and b/app/public/favicon.png differ
diff --git a/app/public/global.css b/app/public/global.css
new file mode 100644
index 0000000..961670b
--- /dev/null
+++ b/app/public/global.css
@@ -0,0 +1,124 @@
+html, body {
+ position: relative;
+ width: 100%;
+ height: 100%;
+}
+
+body {
+ color: #333;
+ margin: 0;
+ padding: 8px;
+ box-sizing: border-box;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+}
+
+a {
+ color: rgb(0,100,200);
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a:visited {
+ color: rgb(0,80,160);
+}
+
+label {
+ display: block;
+}
+
+input, button, select, textarea {
+ font-family: inherit;
+ font-size: inherit;
+ -webkit-padding: 0.4em 0;
+ padding: 0.4em;
+ margin: 0 0 0.5em 0;
+ box-sizing: border-box;
+ border: 1px solid #ccc;
+ border-radius: 2px;
+}
+
+input:disabled {
+ color: #ccc;
+}
+
+button {
+ color: #333;
+ background-color: #f4f4f4;
+ outline: none;
+}
+
+button:disabled {
+ color: #999;
+}
+
+button:not(:disabled):active {
+ background-color: #ddd;
+}
+
+button:focus {
+ border-color: #666;
+}
+
+body {
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+}
+
+* {
+ transition: 0.1s background-color ease-out;
+}
+
+.link {
+ cursor: pointer;
+ transition: 0.1s color ease-out, 0.1s filter ease-out;
+}
+
+.small {
+ font-size: medium;
+}
+.big {
+ font-weight: bold;
+}
+
+#albums {
+ margin-top: 20px;
+ width: 600px;
+ max-width: 98%;
+}
+
+@media (prefers-color-scheme: dark) {
+ body {
+ background-color: #0a0a0f;
+ color: #fff;
+ accent-color: rgb(131, 131, 243);
+ }
+ .small {
+ color: #c8c8d2;
+ }
+ .link {
+ color:#ea74ac;
+ }
+ .link:hover {
+ color: #f484b6;
+ filter: drop-shadow( 0px 0px 2px #f484b6);
+ }
+}
+@media (prefers-color-scheme: light) {
+ body {
+ background-color: #f0f0f0;
+ color: #1e1e2d;
+ accent-color: #ea74ac;
+ }
+ .small {
+ color: #888;
+ }
+ .link {
+ color:rgb(131, 131, 243);
+ }
+ .link:hover {
+ color: rgb(151, 151, 255);
+ filter: drop-shadow( 0px 0px 2px #8383F3);
+ }
+}
\ No newline at end of file
diff --git a/app/public/index.html b/app/public/index.html
new file mode 100644
index 0000000..5da7ed3
--- /dev/null
+++ b/app/public/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Svelte app
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/robots.txt b/app/public/robots.txt
similarity index 100%
rename from public/robots.txt
rename to app/public/robots.txt
diff --git a/app/src/Album.svelte b/app/src/Album.svelte
new file mode 100644
index 0000000..f0b408a
--- /dev/null
+++ b/app/src/Album.svelte
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {#if tracks.length === 0}
+
+ {:else}
+ {#each tracks as track}
+
+ {/each}
+ {/if}
+
\ No newline at end of file
diff --git a/app/src/App.svelte b/app/src/App.svelte
new file mode 100644
index 0000000..67e473f
--- /dev/null
+++ b/app/src/App.svelte
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ {#if $display === displays.AlbumSearch}
+
+
+ {#each $albums as album}
+
+ {/each}
+
+ {/if}
+ {#if $display === displays.Download && $downloading}
+
+ {/if}
+
+
\ No newline at end of file
diff --git a/app/src/Download.svelte b/app/src/Download.svelte
new file mode 100644
index 0000000..429e614
--- /dev/null
+++ b/app/src/Download.svelte
@@ -0,0 +1,45 @@
+
+
+{#if title && artist && coverArt}
+
+
+
+
+
+
+
+ {#if $progress > 0}
+
+ {/if}
+{:else}
+
+{/if}
\ No newline at end of file
diff --git a/app/src/Loading.svelte b/app/src/Loading.svelte
new file mode 100644
index 0000000..1eba3fe
--- /dev/null
+++ b/app/src/Loading.svelte
@@ -0,0 +1,51 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/Search.svelte b/app/src/Search.svelte
new file mode 100644
index 0000000..0b60c7c
--- /dev/null
+++ b/app/src/Search.svelte
@@ -0,0 +1,55 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/Track.svelte b/app/src/Track.svelte
new file mode 100644
index 0000000..6719238
--- /dev/null
+++ b/app/src/Track.svelte
@@ -0,0 +1,98 @@
+
+
+
+
+
+
{artist} - {title}
+
+
+
+
+ {formatTime(duration)}
+
+
\ No newline at end of file
diff --git a/app/src/api.js b/app/src/api.js
new file mode 100644
index 0000000..e02aff0
--- /dev/null
+++ b/app/src/api.js
@@ -0,0 +1,9 @@
+export async function querySearch(q) {
+ let response = await fetch(`http://localhost:4500/api/search?search=${encodeURI(q)}`);
+ return await response.json();
+}
+
+export async function queryTracks(id) {
+ let response = await fetch(`http://localhost:4500/api/album?id=${id}`);
+ return await response.json();
+}
\ No newline at end of file
diff --git a/app/src/download.js b/app/src/download.js
new file mode 100644
index 0000000..5171f22
--- /dev/null
+++ b/app/src/download.js
@@ -0,0 +1,10 @@
+import {downloading, display, displays} from './stores';
+
+export function downloadAlbum(id) {
+ display.set(displays.Download);
+ downloading.set({id: id, isAlbum: true});
+}
+export function downloadTrack(id) {
+ display.set(displays.Download);
+ downloading.set({id: id, isAlbum: false});
+}
\ No newline at end of file
diff --git a/app/src/main.js b/app/src/main.js
new file mode 100644
index 0000000..1719c77
--- /dev/null
+++ b/app/src/main.js
@@ -0,0 +1,9 @@
+import App from './App.svelte';
+
+const app = new App({
+ target: document.body,
+ props: {
+ }
+});
+
+export default app;
\ No newline at end of file
diff --git a/app/src/stores.js b/app/src/stores.js
new file mode 100644
index 0000000..30aeab5
--- /dev/null
+++ b/app/src/stores.js
@@ -0,0 +1,19 @@
+import {writable} from 'svelte/store';
+
+export const albums = writable([]);
+
+export function clearAlbums() {
+ albums.set([]);
+}
+export function pushAlbum(id) {
+ albums.update((l) => [...l, id]);
+}
+
+export const displays = {
+ AlbumSearch: 0,
+ Download: 1,
+}
+
+export let display = writable(displays.AlbumSearch);
+
+export let downloading = writable(null);
\ No newline at end of file
diff --git a/app/src/websocket.js b/app/src/websocket.js
new file mode 100644
index 0000000..fa000e3
--- /dev/null
+++ b/app/src/websocket.js
@@ -0,0 +1,37 @@
+/*
+function getWebsocketLocation() {
+ return window.window.location.toString().replace('https://', 'wss://').replace('http://', 'ws://');
+}
+*/
+function getWebsocketLocation() {
+ return 'ws://localhost:4500/';
+}
+
+export function startWebsocket(id, isAlbum, log, coverArt, title, artist, progress) {
+ let type = isAlbum ? 'album' : 'track';
+ const ws = new WebSocket(`${getWebsocketLocation()}api/${type}?id=${id}`);
+
+ ws.onmessage = (m) => {
+ const d = JSON.parse(m.data);
+ console.log(d);
+ if (d.key === 'downloadInfo') {
+ log(`[${d.data.data.title}] ${d.data.state}`);
+ } else if (d.key === 'updateQueue') {
+ progress(d.data.progress);
+ } else if (d.key === 'coverArt') {
+ log('Fetched cover art');
+ coverArt(d.data);
+ } else if (d.key === 'metadata') {
+ log('Fetched metadata');
+ title(d.data.title);
+ artist(d.data.artist);
+ } else if (d.key === 'download') {
+ console.log(d.data);
+ download(d.data);
+ } else if (d.key === 'finishDownload') {
+ log('Download finished');
+ } else if (d.key === 'zipping') {
+ log('Zipping up files');
+ }
+ };
+}
\ No newline at end of file
diff --git a/package.json b/package.json
index 1e18d07..e495940 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,10 @@
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"quickrun": "tsc && node dist/index.js",
- "build": "tsc"
+ "build": "tsc",
+ "febuild": "rollup -c",
+ "fedev": "rollup -c -w",
+ "start": "sirv app/public --no-clear"
},
"repository": {
"type": "git",
@@ -14,29 +17,39 @@
},
"keywords": [
"deemix",
- "piracy"
+ "piracy",
+ "svelte"
],
"author": "oatmealine",
"license": "AGPL-3.0",
"dependencies": {
"deemix": "git+https://git.freezerapp.xyz/RemixDev/deemix-js",
- "deezer-js": "^1.2.4",
+ "deezer-js": "^1.3.5",
"dotenv": "^10.0.0",
- "express": "^4.17.1",
+ "express": "^4.17.3",
"express-ws": "^5.0.2",
+ "sirv-cli": "^2.0.2",
"timeago.js": "^4.0.2",
"toml": "^3.0.0",
- "winston": "^3.3.3",
- "ws": "^8.2.3"
+ "winston": "^3.6.0",
+ "ws": "^8.5.0"
},
"optionalDependencies": {
- "bufferutil": "^4.0.5",
- "utf-8-validate": "^5.0.7"
+ "bufferutil": "^4.0.6",
+ "utf-8-validate": "^5.0.8"
},
"devDependencies": {
- "typescript": "^4.4.4",
+ "@rollup/plugin-commonjs": "^17.1.0",
+ "@rollup/plugin-node-resolve": "^11.2.1",
"@types/express": "^4.17.13",
"@types/express-ws": "^3.0.1",
- "@types/ws": "^8.2.0"
+ "@types/ws": "^8.2.3",
+ "rollup": "^2.68.0",
+ "rollup-plugin-css-only": "^3.1.0",
+ "rollup-plugin-livereload": "^2.0.5",
+ "rollup-plugin-svelte": "^7.1.0",
+ "rollup-plugin-terser": "^7.0.2",
+ "svelte": "^3.46.4",
+ "typescript": "^4.5.5"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 58eaf42..5a306ad 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,55 +1,154 @@
lockfileVersion: 5.3
specifiers:
+ '@rollup/plugin-commonjs': ^17.1.0
+ '@rollup/plugin-node-resolve': ^11.2.1
'@types/express': ^4.17.13
'@types/express-ws': ^3.0.1
- '@types/ws': ^8.2.0
- bufferutil: ^4.0.5
+ '@types/ws': ^8.2.3
+ bufferutil: ^4.0.6
deemix: git+https://git.freezerapp.xyz/RemixDev/deemix-js
- deezer-js: ^1.2.4
+ deezer-js: ^1.3.5
dotenv: ^10.0.0
- express: ^4.17.1
+ express: ^4.17.3
express-ws: ^5.0.2
+ rollup: ^2.68.0
+ rollup-plugin-css-only: ^3.1.0
+ rollup-plugin-livereload: ^2.0.5
+ rollup-plugin-svelte: ^7.1.0
+ rollup-plugin-terser: ^7.0.2
+ sirv-cli: ^2.0.2
+ svelte: ^3.46.4
timeago.js: ^4.0.2
toml: ^3.0.0
- typescript: ^4.4.4
- utf-8-validate: ^5.0.7
- winston: ^3.3.3
- ws: ^8.2.3
+ typescript: ^4.5.5
+ utf-8-validate: ^5.0.8
+ winston: ^3.6.0
+ ws: ^8.5.0
dependencies:
- deemix: git.freezerapp.xyz/RemixDev/deemix-js/5c81a56d11d0e2dc4392bfcb0b0e67a88fe14ee2
- deezer-js: 1.2.4
+ deemix: git.freezerapp.xyz/RemixDev/deemix-js/58bd92bc303a338aafc56ccf51940713812756ec
+ deezer-js: 1.3.5
dotenv: 10.0.0
- express: 4.17.1
- express-ws: 5.0.2_38c2bbebc27369556ed28f8d7fcfa503
+ express: 4.17.3
+ express-ws: 5.0.2_9938c0c959a5f2b516218250f750cbca
+ sirv-cli: 2.0.2
timeago.js: 4.0.2
toml: 3.0.0
- winston: 3.3.3
- ws: 8.2.3_5971b5a749a91823f5467a6d31a2f8b3
+ winston: 3.6.0
+ ws: 8.5.0_bffff4271b89d628e8333ead80d3d8e8
optionalDependencies:
- bufferutil: 4.0.5
- utf-8-validate: 5.0.7
+ bufferutil: 4.0.6
+ utf-8-validate: 5.0.8
devDependencies:
+ '@rollup/plugin-commonjs': 17.1.0_rollup@2.68.0
+ '@rollup/plugin-node-resolve': 11.2.1_rollup@2.68.0
'@types/express': 4.17.13
'@types/express-ws': 3.0.1
- '@types/ws': 8.2.0
- typescript: 4.4.4
+ '@types/ws': 8.2.3
+ rollup: 2.68.0
+ rollup-plugin-css-only: 3.1.0_rollup@2.68.0
+ rollup-plugin-livereload: 2.0.5_bffff4271b89d628e8333ead80d3d8e8
+ rollup-plugin-svelte: 7.1.0_rollup@2.68.0+svelte@3.46.4
+ rollup-plugin-terser: 7.0.2_rollup@2.68.0
+ svelte: 3.46.4
+ typescript: 4.5.5
packages:
- /@dabh/diagnostics/2.0.2:
- resolution: {integrity: sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==}
+ /@babel/code-frame/7.16.7:
+ resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/highlight': 7.16.10
+ dev: true
+
+ /@babel/helper-validator-identifier/7.16.7:
+ resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/highlight/7.16.10:
+ resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.16.7
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ dev: true
+
+ /@colors/colors/1.5.0:
+ resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
+ engines: {node: '>=0.1.90'}
+ dev: false
+
+ /@dabh/diagnostics/2.0.3:
+ resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==}
dependencies:
colorspace: 1.1.4
enabled: 2.0.0
kuler: 2.0.0
dev: false
- /@sindresorhus/is/4.2.0:
- resolution: {integrity: sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==}
+ /@polka/url/1.0.0-next.21:
+ resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==}
+ dev: false
+
+ /@rollup/plugin-commonjs/17.1.0_rollup@2.68.0:
+ resolution: {integrity: sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==}
+ engines: {node: '>= 8.0.0'}
+ peerDependencies:
+ rollup: ^2.30.0
+ dependencies:
+ '@rollup/pluginutils': 3.1.0_rollup@2.68.0
+ commondir: 1.0.1
+ estree-walker: 2.0.2
+ glob: 7.2.0
+ is-reference: 1.2.1
+ magic-string: 0.25.7
+ resolve: 1.22.0
+ rollup: 2.68.0
+ dev: true
+
+ /@rollup/plugin-node-resolve/11.2.1_rollup@2.68.0:
+ resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==}
+ engines: {node: '>= 10.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0
+ dependencies:
+ '@rollup/pluginutils': 3.1.0_rollup@2.68.0
+ '@types/resolve': 1.17.1
+ builtin-modules: 3.2.0
+ deepmerge: 4.2.2
+ is-module: 1.0.0
+ resolve: 1.22.0
+ rollup: 2.68.0
+ dev: true
+
+ /@rollup/pluginutils/3.1.0_rollup@2.68.0:
+ resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==}
+ engines: {node: '>= 8.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0
+ dependencies:
+ '@types/estree': 0.0.39
+ estree-walker: 1.0.1
+ picomatch: 2.3.1
+ rollup: 2.68.0
+ dev: true
+
+ /@rollup/pluginutils/4.1.2:
+ resolution: {integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==}
+ engines: {node: '>= 8.0.0'}
+ dependencies:
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+ dev: true
+
+ /@sindresorhus/is/4.4.0:
+ resolution: {integrity: sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ==}
engines: {node: '>=10'}
dev: false
@@ -60,11 +159,11 @@ packages:
defer-to-connect: 2.0.1
dev: false
- /@types/body-parser/1.19.1:
- resolution: {integrity: sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==}
+ /@types/body-parser/1.19.2:
+ resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==}
dependencies:
'@types/connect': 3.4.35
- '@types/node': 16.11.4
+ '@types/node': 17.0.21
dev: true
/@types/cacheable-request/6.0.2:
@@ -72,20 +171,28 @@ packages:
dependencies:
'@types/http-cache-semantics': 4.0.1
'@types/keyv': 3.1.3
- '@types/node': 16.11.4
+ '@types/node': 17.0.21
'@types/responselike': 1.0.0
dev: false
/@types/connect/3.4.35:
resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
dependencies:
- '@types/node': 16.11.4
+ '@types/node': 17.0.21
dev: true
- /@types/express-serve-static-core/4.17.24:
- resolution: {integrity: sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==}
+ /@types/estree/0.0.39:
+ resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
+ dev: true
+
+ /@types/estree/0.0.51:
+ resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==}
+ dev: true
+
+ /@types/express-serve-static-core/4.17.28:
+ resolution: {integrity: sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==}
dependencies:
- '@types/node': 16.11.4
+ '@types/node': 17.0.21
'@types/qs': 6.9.7
'@types/range-parser': 1.2.4
dev: true
@@ -94,15 +201,15 @@ packages:
resolution: {integrity: sha512-VguRXzcpPBF0IggIGpUoM65cZJDfMQxoc6dKoCz1yLzcwcXW7ft60yhq3ygKhyEhEIQFtLrWjyz4AJ1qjmzCFw==}
dependencies:
'@types/express': 4.17.13
- '@types/express-serve-static-core': 4.17.24
- '@types/ws': 8.2.0
+ '@types/express-serve-static-core': 4.17.28
+ '@types/ws': 8.2.3
dev: true
/@types/express/4.17.13:
resolution: {integrity: sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==}
dependencies:
- '@types/body-parser': 1.19.1
- '@types/express-serve-static-core': 4.17.24
+ '@types/body-parser': 1.19.2
+ '@types/express-serve-static-core': 4.17.28
'@types/qs': 6.9.7
'@types/serve-static': 1.13.10
dev: true
@@ -114,15 +221,15 @@ packages:
/@types/keyv/3.1.3:
resolution: {integrity: sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==}
dependencies:
- '@types/node': 16.11.4
+ '@types/node': 17.0.21
dev: false
/@types/mime/1.3.2:
resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==}
dev: true
- /@types/node/16.11.4:
- resolution: {integrity: sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==}
+ /@types/node/17.0.21:
+ resolution: {integrity: sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==}
/@types/qs/6.9.7:
resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==}
@@ -132,63 +239,117 @@ packages:
resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==}
dev: true
+ /@types/resolve/1.17.1:
+ resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
+ dependencies:
+ '@types/node': 17.0.21
+ dev: true
+
/@types/responselike/1.0.0:
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
dependencies:
- '@types/node': 16.11.4
+ '@types/node': 17.0.21
dev: false
/@types/serve-static/1.13.10:
resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==}
dependencies:
'@types/mime': 1.3.2
- '@types/node': 16.11.4
+ '@types/node': 17.0.21
dev: true
- /@types/ws/8.2.0:
- resolution: {integrity: sha512-cyeefcUCgJlEk+hk2h3N+MqKKsPViQgF5boi9TTHSK+PoR9KWBb/C5ccPcDyAqgsbAYHTwulch725DV84+pSpg==}
+ /@types/ws/8.2.3:
+ resolution: {integrity: sha512-ahRJZquUYCdOZf/rCsWg88S0/+cb9wazUBHv6HZEe3XdYaBe2zr/slM8J28X07Hn88Pnm4ezo7N8/ofnOgrPVQ==}
dependencies:
- '@types/node': 16.11.4
+ '@types/node': 17.0.21
dev: true
- /accepts/1.3.7:
- resolution: {integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==}
+ /accepts/1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
dependencies:
- mime-types: 2.1.33
- negotiator: 0.6.2
+ mime-types: 2.1.34
+ negotiator: 0.6.3
dev: false
+ /acorn/8.7.0:
+ resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
+ /ansi-styles/3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+ dependencies:
+ color-convert: 1.9.3
+ dev: true
+
+ /anymatch/3.1.2:
+ resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+ dev: true
+
/array-flatten/1.1.1:
resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=}
dev: false
- /async/3.2.1:
- resolution: {integrity: sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==}
+ /async/3.2.3:
+ resolution: {integrity: sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==}
dev: false
/asynckit/0.4.0:
resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=}
dev: false
- /body-parser/1.19.0:
- resolution: {integrity: sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==}
+ /balanced-match/1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ dev: true
+
+ /binary-extensions/2.2.0:
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /body-parser/1.19.2:
+ resolution: {integrity: sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==}
engines: {node: '>= 0.8'}
dependencies:
- bytes: 3.1.0
+ bytes: 3.1.2
content-type: 1.0.4
debug: 2.6.9
depd: 1.1.2
- http-errors: 1.7.2
+ http-errors: 1.8.1
iconv-lite: 0.4.24
on-finished: 2.3.0
- qs: 6.7.0
- raw-body: 2.4.0
+ qs: 6.9.7
+ raw-body: 2.4.3
type-is: 1.6.18
dev: false
- /bufferutil/4.0.5:
- resolution: {integrity: sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==}
+ /brace-expansion/1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+ dev: true
+
+ /braces/3.0.2:
+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.0.1
+ dev: true
+
+ /buffer-from/1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+ dev: true
+
+ /bufferutil/4.0.6:
+ resolution: {integrity: sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==}
engines: {node: '>=6.14.2'}
requiresBuild: true
dependencies:
@@ -196,8 +357,13 @@ packages:
dev: false
optional: true
- /bytes/3.1.0:
- resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==}
+ /builtin-modules/3.2.0:
+ resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /bytes/3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
engines: {node: '>= 0.8'}
dev: false
@@ -213,7 +379,7 @@ packages:
clone-response: 1.0.2
get-stream: 5.2.0
http-cache-semantics: 4.1.0
- keyv: 4.0.3
+ keyv: 4.1.1
lowercase-keys: 2.0.0
normalize-url: 6.1.0
responselike: 2.0.0
@@ -226,6 +392,30 @@ packages:
get-intrinsic: 1.1.1
dev: false
+ /chalk/2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+ dev: true
+
+ /chokidar/3.5.3:
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.2
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
/clone-response/1.0.2:
resolution: {integrity: sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=}
dependencies:
@@ -236,18 +426,16 @@ packages:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
color-name: 1.1.3
- dev: false
/color-name/1.1.3:
resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
- dev: false
/color-name/1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
dev: false
- /color-string/1.6.0:
- resolution: {integrity: sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==}
+ /color-string/1.9.0:
+ resolution: {integrity: sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==}
dependencies:
color-name: 1.1.4
simple-swizzle: 0.2.2
@@ -257,12 +445,7 @@ packages:
resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
dependencies:
color-convert: 1.9.3
- color-string: 1.6.0
- dev: false
-
- /colors/1.4.0:
- resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==}
- engines: {node: '>=0.1.90'}
+ color-string: 1.9.0
dev: false
/colorspace/1.1.4:
@@ -279,20 +462,37 @@ packages:
delayed-stream: 1.0.0
dev: false
+ /commander/2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+ dev: true
+
/commander/8.3.0:
resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
engines: {node: '>= 12'}
dev: false
+ /commondir/1.0.1:
+ resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=}
+ dev: true
+
/component-emitter/1.3.0:
resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==}
dev: false
- /content-disposition/0.5.3:
- resolution: {integrity: sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==}
+ /concat-map/0.0.1:
+ resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
+ dev: true
+
+ /console-clear/1.1.1:
+ resolution: {integrity: sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /content-disposition/0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
dependencies:
- safe-buffer: 5.1.2
+ safe-buffer: 5.2.1
dev: false
/content-type/1.0.4:
@@ -304,8 +504,8 @@ packages:
resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=}
dev: false
- /cookie/0.4.0:
- resolution: {integrity: sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==}
+ /cookie/0.4.2:
+ resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==}
engines: {node: '>= 0.6'}
dev: false
@@ -313,15 +513,6 @@ packages:
resolution: {integrity: sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==}
dev: false
- /core-util-is/1.0.3:
- resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
- dev: false
-
- /crypto/1.0.1:
- resolution: {integrity: sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==}
- deprecated: This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.
- dev: false
-
/debug/2.6.9:
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
dependencies:
@@ -334,8 +525,8 @@ packages:
ms: 2.1.3
dev: false
- /debug/4.3.2:
- resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==}
+ /debug/4.3.3:
+ resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
@@ -353,17 +544,15 @@ packages:
mimic-response: 3.1.0
dev: false
- /deezer-js/1.2.4:
- resolution: {integrity: sha512-Scki1I03YEcnxWiYBz1LQT9gJHo9KIlvMK3gYE65gik19BQ/PW6fsWYPVl/lR7eKuxfO1SWUYF1i49J6Ja0eVg==}
- dependencies:
- got: 11.8.2
- tough-cookie: 4.0.0
- dev: false
+ /deepmerge/4.2.2:
+ resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
- /deezer-js/1.3.4:
- resolution: {integrity: sha512-jPANN+mouVm7hzSjmtGRfi7I/pShBYTd/sZuiBQIYtLYp/5XR1HFdvzrxmx63fqlYhmJEKLR3/izIyotEIUfqg==}
+ /deezer-js/1.3.5:
+ resolution: {integrity: sha512-eyIHRdCx1ZHHz+sPlC0fSgOtfbaAK9pRUz8paJkcgfa0dB70gBQI9b8zr0C2PPn/VGLFK5Bi2KT3RlV57BaMiA==}
dependencies:
- got: 11.8.2
+ got: 11.8.3
tough-cookie: 4.0.0
dev: false
@@ -414,34 +603,51 @@ packages:
resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=}
dev: false
+ /escape-string-regexp/1.0.5:
+ resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
+ engines: {node: '>=0.8.0'}
+ dev: true
+
+ /estree-walker/0.6.1:
+ resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==}
+ dev: true
+
+ /estree-walker/1.0.1:
+ resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==}
+ dev: true
+
+ /estree-walker/2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+ dev: true
+
/etag/1.8.1:
resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=}
engines: {node: '>= 0.6'}
dev: false
- /express-ws/5.0.2_38c2bbebc27369556ed28f8d7fcfa503:
+ /express-ws/5.0.2_9938c0c959a5f2b516218250f750cbca:
resolution: {integrity: sha512-0uvmuk61O9HXgLhGl3QhNSEtRsQevtmbL94/eILaliEADZBHZOQUAiHFrGPrgsjikohyrmSG5g+sCfASTt0lkQ==}
engines: {node: '>=4.5.0'}
peerDependencies:
express: ^4.0.0 || ^5.0.0-alpha.1
dependencies:
- express: 4.17.1
- ws: 7.5.5_5971b5a749a91823f5467a6d31a2f8b3
+ express: 4.17.3
+ ws: 7.5.7_bffff4271b89d628e8333ead80d3d8e8
transitivePeerDependencies:
- bufferutil
- utf-8-validate
dev: false
- /express/4.17.1:
- resolution: {integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==}
+ /express/4.17.3:
+ resolution: {integrity: sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==}
engines: {node: '>= 0.10.0'}
dependencies:
- accepts: 1.3.7
+ accepts: 1.3.8
array-flatten: 1.1.1
- body-parser: 1.19.0
- content-disposition: 0.5.3
+ body-parser: 1.19.2
+ content-disposition: 0.5.4
content-type: 1.0.4
- cookie: 0.4.0
+ cookie: 0.4.2
cookie-signature: 1.0.6
debug: 2.6.9
depd: 1.1.2
@@ -456,12 +662,12 @@ packages:
parseurl: 1.3.3
path-to-regexp: 0.1.7
proxy-addr: 2.0.7
- qs: 6.7.0
+ qs: 6.9.7
range-parser: 1.2.1
- safe-buffer: 5.1.2
- send: 0.17.1
- serve-static: 1.14.1
- setprototypeof: 1.1.1
+ safe-buffer: 5.2.1
+ send: 0.17.2
+ serve-static: 1.14.2
+ setprototypeof: 1.2.0
statuses: 1.5.0
type-is: 1.6.18
utils-merge: 1.0.1
@@ -476,6 +682,13 @@ packages:
resolution: {integrity: sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==}
dev: false
+ /fill-range/7.0.1:
+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+ dev: true
+
/finalhandler/1.1.2:
resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==}
engines: {node: '>= 0.8'}
@@ -499,11 +712,11 @@ packages:
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
- mime-types: 2.1.33
+ mime-types: 2.1.34
dev: false
- /formidable/1.2.2:
- resolution: {integrity: sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==}
+ /formidable/1.2.6:
+ resolution: {integrity: sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==}
deprecated: 'Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau'
dev: false
@@ -517,9 +730,20 @@ packages:
engines: {node: '>= 0.6'}
dev: false
+ /fs.realpath/1.0.0:
+ resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
+ dev: true
+
+ /fsevents/2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/function-bind/1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
- dev: false
/get-intrinsic/1.1.1:
resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==}
@@ -529,6 +753,11 @@ packages:
has-symbols: 1.0.2
dev: false
+ /get-port/3.2.0:
+ resolution: {integrity: sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=}
+ engines: {node: '>=4'}
+ dev: false
+
/get-stream/5.2.0:
resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
engines: {node: '>=8'}
@@ -536,11 +765,29 @@ packages:
pump: 3.0.0
dev: false
- /got/11.8.2:
- resolution: {integrity: sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==}
+ /glob-parent/5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
+ /glob/7.2.0:
+ resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: true
+
+ /got/11.8.3:
+ resolution: {integrity: sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==}
engines: {node: '>=10.19.0'}
dependencies:
- '@sindresorhus/is': 4.2.0
+ '@sindresorhus/is': 4.4.0
'@szmarczak/http-timer': 4.0.6
'@types/cacheable-request': 6.0.2
'@types/responselike': 1.0.0
@@ -553,6 +800,16 @@ packages:
responselike: 2.0.0
dev: false
+ /has-flag/3.0.0:
+ resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /has-flag/4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+ dev: true
+
/has-symbols/1.0.2:
resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==}
engines: {node: '>= 0.4'}
@@ -563,32 +820,20 @@ packages:
engines: {node: '>= 0.4.0'}
dependencies:
function-bind: 1.1.1
- dev: false
/http-cache-semantics/4.1.0:
resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==}
dev: false
- /http-errors/1.7.2:
- resolution: {integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==}
- engines: {node: '>= 0.6'}
- dependencies:
- depd: 1.1.2
- inherits: 2.0.3
- setprototypeof: 1.1.1
- statuses: 1.5.0
- toidentifier: 1.0.0
- dev: false
-
- /http-errors/1.7.3:
- resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==}
+ /http-errors/1.8.1:
+ resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==}
engines: {node: '>= 0.6'}
dependencies:
depd: 1.1.2
inherits: 2.0.4
- setprototypeof: 1.1.1
+ setprototypeof: 1.2.0
statuses: 1.5.0
- toidentifier: 1.0.0
+ toidentifier: 1.0.1
dev: false
/http2-wrapper/1.0.3:
@@ -606,13 +851,15 @@ packages:
safer-buffer: 2.1.2
dev: false
- /inherits/2.0.3:
- resolution: {integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=}
- dev: false
+ /inflight/1.0.6:
+ resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=}
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+ dev: true
/inherits/2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
- dev: false
/ipaddr.js/1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
@@ -623,40 +870,117 @@ packages:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
dev: false
+ /is-binary-path/2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.2.0
+ dev: true
+
+ /is-core-module/2.8.1:
+ resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==}
+ dependencies:
+ has: 1.0.3
+ dev: true
+
+ /is-extglob/2.1.1:
+ resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-glob/4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: true
+
+ /is-module/1.0.0:
+ resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=}
+ dev: true
+
+ /is-number/7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
+ /is-reference/1.2.1:
+ resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
+ dependencies:
+ '@types/estree': 0.0.51
+ dev: true
+
/is-stream/2.0.1:
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
engines: {node: '>=8'}
dev: false
- /isarray/1.0.0:
- resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=}
- dev: false
+ /jest-worker/26.6.2:
+ resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==}
+ engines: {node: '>= 10.13.0'}
+ dependencies:
+ '@types/node': 17.0.21
+ merge-stream: 2.0.0
+ supports-color: 7.2.0
+ dev: true
+
+ /js-tokens/4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ dev: true
/json-buffer/3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
dev: false
- /keyv/4.0.3:
- resolution: {integrity: sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==}
+ /keyv/4.1.1:
+ resolution: {integrity: sha512-tGv1yP6snQVDSM4X6yxrv2zzq/EvpW+oYiUz6aueW1u9CtS8RzUQYxxmFwgZlO2jSgCxQbchhxaqXXp2hnKGpQ==}
dependencies:
json-buffer: 3.0.1
dev: false
+ /kleur/4.1.4:
+ resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==}
+ engines: {node: '>=6'}
+ dev: false
+
/kuler/2.0.0:
resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==}
dev: false
+ /livereload-js/3.3.3:
+ resolution: {integrity: sha512-a7Jipme3XIBIryJluWP5LQrEAvhobDPyScBe+q+MYwxBiMT2Ck7msy4tAdF8TAa33FMdJqX4guP81Yhiu6BkmQ==}
+ dev: true
+
+ /livereload/0.9.3_bffff4271b89d628e8333ead80d3d8e8:
+ resolution: {integrity: sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==}
+ engines: {node: '>=8.0.0'}
+ hasBin: true
+ dependencies:
+ chokidar: 3.5.3
+ livereload-js: 3.3.3
+ opts: 2.0.2
+ ws: 7.5.7_bffff4271b89d628e8333ead80d3d8e8
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: true
+
+ /local-access/1.1.0:
+ resolution: {integrity: sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==}
+ engines: {node: '>=6'}
+ dev: false
+
/lodash.merge/4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
dev: false
- /logform/2.3.0:
- resolution: {integrity: sha512-graeoWUH2knKbGthMtuG1EfaSPMZFZBIrhuJHhkS5ZseFBrc7DupCzihOQAzsK/qIKPQaPJ/lFQFctILUY5ARQ==}
+ /logform/2.4.0:
+ resolution: {integrity: sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw==}
dependencies:
- colors: 1.4.0
+ '@colors/colors': 1.5.0
fecha: 4.2.1
ms: 2.1.3
- safe-stable-stringify: 1.1.1
+ safe-stable-stringify: 2.3.1
triple-beam: 1.3.0
dev: false
@@ -672,6 +996,12 @@ packages:
yallist: 4.0.0
dev: false
+ /magic-string/0.25.7:
+ resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==}
+ dependencies:
+ sourcemap-codec: 1.4.8
+ dev: true
+
/media-typer/0.3.0:
resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=}
engines: {node: '>= 0.6'}
@@ -681,12 +1011,16 @@ packages:
resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=}
dev: false
+ /merge-stream/2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+ dev: true
+
/metaflac-js2/1.0.8:
resolution: {integrity: sha512-Ql39J3w4RPUEaTMRgq/CtGd6QXIH5cjUwexg/dupVxoamA94DCsUd3J6bH43JyXrd4L16FaxT4tc5f/sjNEiVw==}
hasBin: true
dependencies:
commander: 8.3.0
- probe-image-size: 7.2.1
+ probe-image-size: 7.2.3
dev: false
/methods/1.1.2:
@@ -694,16 +1028,16 @@ packages:
engines: {node: '>= 0.6'}
dev: false
- /mime-db/1.50.0:
- resolution: {integrity: sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==}
+ /mime-db/1.51.0:
+ resolution: {integrity: sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==}
engines: {node: '>= 0.6'}
dev: false
- /mime-types/2.1.33:
- resolution: {integrity: sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==}
+ /mime-types/2.1.34:
+ resolution: {integrity: sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==}
engines: {node: '>= 0.6'}
dependencies:
- mime-db: 1.50.0
+ mime-db: 1.51.0
dev: false
/mime/1.6.0:
@@ -712,8 +1046,8 @@ packages:
hasBin: true
dev: false
- /mime/2.5.2:
- resolution: {integrity: sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==}
+ /mime/2.6.0:
+ resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
engines: {node: '>=4.0.0'}
hasBin: true
dev: false
@@ -728,12 +1062,24 @@ packages:
engines: {node: '>=10'}
dev: false
- /ms/2.0.0:
- resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=}
+ /minimatch/3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ dependencies:
+ brace-expansion: 1.1.11
+ dev: true
+
+ /mri/1.2.0:
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+ engines: {node: '>=4'}
dev: false
- /ms/2.1.1:
- resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==}
+ /mrmime/1.0.0:
+ resolution: {integrity: sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /ms/2.0.0:
+ resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=}
dev: false
/ms/2.1.2:
@@ -754,8 +1100,8 @@ packages:
sax: 1.2.4
dev: false
- /negotiator/0.6.2:
- resolution: {integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==}
+ /negotiator/0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
engines: {node: '>= 0.6'}
dev: false
@@ -765,13 +1111,18 @@ packages:
dev: false
optional: true
+ /normalize-path/3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/normalize-url/6.1.0:
resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
engines: {node: '>=10'}
dev: false
- /object-inspect/1.11.0:
- resolution: {integrity: sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==}
+ /object-inspect/1.12.0:
+ resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==}
dev: false
/on-finished/2.3.0:
@@ -785,7 +1136,6 @@ packages:
resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=}
dependencies:
wrappy: 1.0.2
- dev: false
/one-time/1.0.0:
resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==}
@@ -793,6 +1143,10 @@ packages:
fn.name: 1.1.0
dev: false
+ /opts/2.0.2:
+ resolution: {integrity: sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==}
+ dev: true
+
/p-cancelable/2.1.1:
resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==}
engines: {node: '>=8'}
@@ -803,22 +1157,32 @@ packages:
engines: {node: '>= 0.8'}
dev: false
+ /path-is-absolute/1.0.1:
+ resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /path-parse/1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ dev: true
+
/path-to-regexp/0.1.7:
resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=}
dev: false
- /probe-image-size/7.2.1:
- resolution: {integrity: sha512-d+6L3NvQBCNt4peRDoEfA7r9bPm6/qy18FnLKwg4NWBC5JrJm0pMLRg1kF4XNsPe1bUdt3WIMonPJzQWN2HXjQ==}
+ /picomatch/2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+ dev: true
+
+ /probe-image-size/7.2.3:
+ resolution: {integrity: sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w==}
dependencies:
lodash.merge: 4.6.2
needle: 2.9.1
stream-parser: 0.3.1
dev: false
- /process-nextick-args/2.0.1:
- resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
- dev: false
-
/proxy-addr/2.0.7:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
@@ -843,15 +1207,15 @@ packages:
engines: {node: '>=6'}
dev: false
- /qs/6.10.1:
- resolution: {integrity: sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==}
+ /qs/6.10.3:
+ resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==}
engines: {node: '>=0.6'}
dependencies:
side-channel: 1.0.4
dev: false
- /qs/6.7.0:
- resolution: {integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==}
+ /qs/6.9.7:
+ resolution: {integrity: sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==}
engines: {node: '>=0.6'}
dev: false
@@ -860,33 +1224,27 @@ packages:
engines: {node: '>=10'}
dev: false
+ /randombytes/2.1.0:
+ resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: true
+
/range-parser/1.2.1:
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
engines: {node: '>= 0.6'}
dev: false
- /raw-body/2.4.0:
- resolution: {integrity: sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==}
+ /raw-body/2.4.3:
+ resolution: {integrity: sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==}
engines: {node: '>= 0.8'}
dependencies:
- bytes: 3.1.0
- http-errors: 1.7.2
+ bytes: 3.1.2
+ http-errors: 1.8.1
iconv-lite: 0.4.24
unpipe: 1.0.0
dev: false
- /readable-stream/2.3.7:
- resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==}
- dependencies:
- core-util-is: 1.0.3
- inherits: 2.0.4
- isarray: 1.0.0
- process-nextick-args: 2.0.1
- safe-buffer: 5.1.2
- string_decoder: 1.1.1
- util-deprecate: 1.0.2
- dev: false
-
/readable-stream/3.6.0:
resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==}
engines: {node: '>= 6'}
@@ -896,26 +1254,108 @@ packages:
util-deprecate: 1.0.2
dev: false
+ /readdirp/3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.1
+ dev: true
+
+ /require-relative/0.8.7:
+ resolution: {integrity: sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=}
+ dev: true
+
/resolve-alpn/1.2.1:
resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
dev: false
+ /resolve/1.22.0:
+ resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.8.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ dev: true
+
/responselike/2.0.0:
resolution: {integrity: sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==}
dependencies:
lowercase-keys: 2.0.0
dev: false
- /safe-buffer/5.1.2:
- resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+ /rollup-plugin-css-only/3.1.0_rollup@2.68.0:
+ resolution: {integrity: sha512-TYMOE5uoD76vpj+RTkQLzC9cQtbnJNktHPB507FzRWBVaofg7KhIqq1kGbcVOadARSozWF883Ho9KpSPKH8gqA==}
+ engines: {node: '>=10.12.0'}
+ peerDependencies:
+ rollup: 1 || 2
+ dependencies:
+ '@rollup/pluginutils': 4.1.2
+ rollup: 2.68.0
+ dev: true
+
+ /rollup-plugin-livereload/2.0.5_bffff4271b89d628e8333ead80d3d8e8:
+ resolution: {integrity: sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA==}
+ engines: {node: '>=8.3'}
+ dependencies:
+ livereload: 0.9.3_bffff4271b89d628e8333ead80d3d8e8
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: true
+
+ /rollup-plugin-svelte/7.1.0_rollup@2.68.0+svelte@3.46.4:
+ resolution: {integrity: sha512-vopCUq3G+25sKjwF5VilIbiY6KCuMNHP1PFvx2Vr3REBNMDllKHFZN2B9jwwC+MqNc3UPKkjXnceLPEjTjXGXg==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ rollup: '>=2.0.0'
+ svelte: '>=3.5.0'
+ dependencies:
+ require-relative: 0.8.7
+ rollup: 2.68.0
+ rollup-pluginutils: 2.8.2
+ svelte: 3.46.4
+ dev: true
+
+ /rollup-plugin-terser/7.0.2_rollup@2.68.0:
+ resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==}
+ peerDependencies:
+ rollup: ^2.0.0
+ dependencies:
+ '@babel/code-frame': 7.16.7
+ jest-worker: 26.6.2
+ rollup: 2.68.0
+ serialize-javascript: 4.0.0
+ terser: 5.11.0
+ dev: true
+
+ /rollup-pluginutils/2.8.2:
+ resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
+ dependencies:
+ estree-walker: 0.6.1
+ dev: true
+
+ /rollup/2.68.0:
+ resolution: {integrity: sha512-XrMKOYK7oQcTio4wyTz466mucnd8LzkiZLozZ4Rz0zQD+HeX4nUK4B8GrTX/2EvN2/vBF/i2WnaXboPxo0JylA==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /sade/1.8.1:
+ resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
+ engines: {node: '>=6'}
+ dependencies:
+ mri: 1.2.0
dev: false
/safe-buffer/5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
- dev: false
- /safe-stable-stringify/1.1.1:
- resolution: {integrity: sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==}
+ /safe-stable-stringify/2.3.1:
+ resolution: {integrity: sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==}
+ engines: {node: '>=10'}
dev: false
/safer-buffer/2.1.2:
@@ -926,6 +1366,11 @@ packages:
resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
dev: false
+ /semiver/1.1.0:
+ resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==}
+ engines: {node: '>=6'}
+ dev: false
+
/semver/7.3.5:
resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==}
engines: {node: '>=10'}
@@ -934,8 +1379,8 @@ packages:
lru-cache: 6.0.0
dev: false
- /send/0.17.1:
- resolution: {integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==}
+ /send/0.17.2:
+ resolution: {integrity: sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==}
engines: {node: '>= 0.8.0'}
dependencies:
debug: 2.6.9
@@ -945,26 +1390,32 @@ packages:
escape-html: 1.0.3
etag: 1.8.1
fresh: 0.5.2
- http-errors: 1.7.3
+ http-errors: 1.8.1
mime: 1.6.0
- ms: 2.1.1
+ ms: 2.1.3
on-finished: 2.3.0
range-parser: 1.2.1
statuses: 1.5.0
dev: false
- /serve-static/1.14.1:
- resolution: {integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==}
+ /serialize-javascript/4.0.0:
+ resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==}
+ dependencies:
+ randombytes: 2.1.0
+ dev: true
+
+ /serve-static/1.14.2:
+ resolution: {integrity: sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==}
engines: {node: '>= 0.8.0'}
dependencies:
encodeurl: 1.0.2
escape-html: 1.0.3
parseurl: 1.3.3
- send: 0.17.1
+ send: 0.17.2
dev: false
- /setprototypeof/1.1.1:
- resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==}
+ /setprototypeof/1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
dev: false
/side-channel/1.0.4:
@@ -972,7 +1423,7 @@ packages:
dependencies:
call-bind: 1.0.2
get-intrinsic: 1.1.1
- object-inspect: 1.11.0
+ object-inspect: 1.12.0
dev: false
/simple-swizzle/0.2.2:
@@ -981,6 +1432,51 @@ packages:
is-arrayish: 0.3.2
dev: false
+ /sirv-cli/2.0.2:
+ resolution: {integrity: sha512-OtSJDwxsF1NWHc7ps3Sa0s+dPtP15iQNJzfKVz+MxkEo3z72mCD+yu30ct79rPr0CaV1HXSOBp+MIY5uIhHZ1A==}
+ engines: {node: '>= 10'}
+ hasBin: true
+ dependencies:
+ console-clear: 1.1.1
+ get-port: 3.2.0
+ kleur: 4.1.4
+ local-access: 1.1.0
+ sade: 1.8.1
+ semiver: 1.1.0
+ sirv: 2.0.2
+ tinydate: 1.3.0
+ dev: false
+
+ /sirv/2.0.2:
+ resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==}
+ engines: {node: '>= 10'}
+ dependencies:
+ '@polka/url': 1.0.0-next.21
+ mrmime: 1.0.0
+ totalist: 3.0.0
+ dev: false
+
+ /source-map-support/0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+ dev: true
+
+ /source-map/0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /source-map/0.7.3:
+ resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /sourcemap-codec/1.4.8:
+ resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+ dev: true
+
/spotify-web-api-node/5.0.2:
resolution: {integrity: sha512-r82dRWU9PMimHvHEzL0DwEJrzFk+SMCVfq249SLt3I7EFez7R+jeoKQd+M1//QcnjqlXPs2am4DFsGk8/GCsrA==}
dependencies:
@@ -1004,12 +1500,6 @@ packages:
debug: 2.6.9
dev: false
- /string_decoder/1.1.1:
- resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
- dependencies:
- safe-buffer: 5.1.2
- dev: false
-
/string_decoder/1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
dependencies:
@@ -1019,22 +1509,58 @@ packages:
/superagent/6.1.0:
resolution: {integrity: sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==}
engines: {node: '>= 7.0.0'}
+ deprecated: Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .
dependencies:
component-emitter: 1.3.0
cookiejar: 2.1.3
- debug: 4.3.2
+ debug: 4.3.3
fast-safe-stringify: 2.1.1
form-data: 3.0.1
- formidable: 1.2.2
+ formidable: 1.2.6
methods: 1.1.2
- mime: 2.5.2
- qs: 6.10.1
+ mime: 2.6.0
+ qs: 6.10.3
readable-stream: 3.6.0
semver: 7.3.5
transitivePeerDependencies:
- supports-color
dev: false
+ /supports-color/5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+ dependencies:
+ has-flag: 3.0.0
+ dev: true
+
+ /supports-color/7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+ dev: true
+
+ /supports-preserve-symlinks-flag/1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /svelte/3.46.4:
+ resolution: {integrity: sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /terser/5.11.0:
+ resolution: {integrity: sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ acorn: 8.7.0
+ commander: 2.20.3
+ source-map: 0.7.3
+ source-map-support: 0.5.21
+ dev: true
+
/text-hex/1.0.0:
resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==}
dev: false
@@ -1043,8 +1569,20 @@ packages:
resolution: {integrity: sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w==}
dev: false
- /toidentifier/1.0.0:
- resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==}
+ /tinydate/1.3.0:
+ resolution: {integrity: sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /to-regex-range/5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+ dependencies:
+ is-number: 7.0.0
+ dev: true
+
+ /toidentifier/1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
dev: false
@@ -1052,6 +1590,11 @@ packages:
resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==}
dev: false
+ /totalist/3.0.0:
+ resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==}
+ engines: {node: '>=6'}
+ dev: false
+
/tough-cookie/4.0.0:
resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==}
engines: {node: '>=6'}
@@ -1070,11 +1613,11 @@ packages:
engines: {node: '>= 0.6'}
dependencies:
media-typer: 0.3.0
- mime-types: 2.1.33
+ mime-types: 2.1.34
dev: false
- /typescript/4.4.4:
- resolution: {integrity: sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==}
+ /typescript/4.5.5:
+ resolution: {integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==}
engines: {node: '>=4.2.0'}
hasBin: true
dev: true
@@ -1089,8 +1632,8 @@ packages:
engines: {node: '>= 0.8'}
dev: false
- /utf-8-validate/5.0.7:
- resolution: {integrity: sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==}
+ /utf-8-validate/5.0.8:
+ resolution: {integrity: sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA==}
engines: {node: '>=6.14.2'}
requiresBuild: true
dependencies:
@@ -1112,35 +1655,36 @@ packages:
engines: {node: '>= 0.8'}
dev: false
- /winston-transport/4.4.0:
- resolution: {integrity: sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==}
+ /winston-transport/4.5.0:
+ resolution: {integrity: sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==}
engines: {node: '>= 6.4.0'}
dependencies:
- readable-stream: 2.3.7
+ logform: 2.4.0
+ readable-stream: 3.6.0
triple-beam: 1.3.0
dev: false
- /winston/3.3.3:
- resolution: {integrity: sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==}
- engines: {node: '>= 6.4.0'}
+ /winston/3.6.0:
+ resolution: {integrity: sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w==}
+ engines: {node: '>= 12.0.0'}
dependencies:
- '@dabh/diagnostics': 2.0.2
- async: 3.2.1
+ '@dabh/diagnostics': 2.0.3
+ async: 3.2.3
is-stream: 2.0.1
- logform: 2.3.0
+ logform: 2.4.0
one-time: 1.0.0
readable-stream: 3.6.0
+ safe-stable-stringify: 2.3.1
stack-trace: 0.0.10
triple-beam: 1.3.0
- winston-transport: 4.4.0
+ winston-transport: 4.5.0
dev: false
/wrappy/1.0.2:
resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=}
- dev: false
- /ws/7.5.5_5971b5a749a91823f5467a6d31a2f8b3:
- resolution: {integrity: sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==}
+ /ws/7.5.7_bffff4271b89d628e8333ead80d3d8e8:
+ resolution: {integrity: sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==}
engines: {node: '>=8.3.0'}
peerDependencies:
bufferutil: ^4.0.1
@@ -1151,12 +1695,11 @@ packages:
utf-8-validate:
optional: true
dependencies:
- bufferutil: 4.0.5
- utf-8-validate: 5.0.7
- dev: false
+ bufferutil: 4.0.6
+ utf-8-validate: 5.0.8
- /ws/8.2.3_5971b5a749a91823f5467a6d31a2f8b3:
- resolution: {integrity: sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==}
+ /ws/8.5.0_bffff4271b89d628e8333ead80d3d8e8:
+ resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
@@ -1167,23 +1710,22 @@ packages:
utf-8-validate:
optional: true
dependencies:
- bufferutil: 4.0.5
- utf-8-validate: 5.0.7
+ bufferutil: 4.0.6
+ utf-8-validate: 5.0.8
dev: false
/yallist/4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: false
- git.freezerapp.xyz/RemixDev/deemix-js/5c81a56d11d0e2dc4392bfcb0b0e67a88fe14ee2:
- resolution: {commit: 5c81a56d11d0e2dc4392bfcb0b0e67a88fe14ee2, repo: https://git.freezerapp.xyz/RemixDev/deemix-js, type: git}
+ git.freezerapp.xyz/RemixDev/deemix-js/58bd92bc303a338aafc56ccf51940713812756ec:
+ resolution: {commit: 58bd92bc303a338aafc56ccf51940713812756ec, repo: https://git.freezerapp.xyz/RemixDev/deemix-js, type: git}
name: deemix
- version: 3.6.4
+ version: 3.6.7
dependencies:
- async: 3.2.1
- crypto: 1.0.1
- deezer-js: 1.3.4
- got: 11.8.2
+ async: 3.2.3
+ deezer-js: 1.3.5
+ got: 11.8.3
metaflac-js2: 1.0.8
spotify-web-api-node: 5.0.2
transitivePeerDependencies:
diff --git a/public/android-icon-192x192.png b/public-old/android-icon-192x192.png
similarity index 100%
rename from public/android-icon-192x192.png
rename to public-old/android-icon-192x192.png
diff --git a/public/apple-icon-114x114.png b/public-old/apple-icon-114x114.png
similarity index 100%
rename from public/apple-icon-114x114.png
rename to public-old/apple-icon-114x114.png
diff --git a/public/apple-icon-120x120.png b/public-old/apple-icon-120x120.png
similarity index 100%
rename from public/apple-icon-120x120.png
rename to public-old/apple-icon-120x120.png
diff --git a/public/apple-icon-144x144.png b/public-old/apple-icon-144x144.png
similarity index 100%
rename from public/apple-icon-144x144.png
rename to public-old/apple-icon-144x144.png
diff --git a/public/apple-icon-152x152.png b/public-old/apple-icon-152x152.png
similarity index 100%
rename from public/apple-icon-152x152.png
rename to public-old/apple-icon-152x152.png
diff --git a/public/apple-icon-180x180.png b/public-old/apple-icon-180x180.png
similarity index 100%
rename from public/apple-icon-180x180.png
rename to public-old/apple-icon-180x180.png
diff --git a/public/apple-icon-57x57.png b/public-old/apple-icon-57x57.png
similarity index 100%
rename from public/apple-icon-57x57.png
rename to public-old/apple-icon-57x57.png
diff --git a/public/apple-icon-60x60.png b/public-old/apple-icon-60x60.png
similarity index 100%
rename from public/apple-icon-60x60.png
rename to public-old/apple-icon-60x60.png
diff --git a/public/apple-icon-72x72.png b/public-old/apple-icon-72x72.png
similarity index 100%
rename from public/apple-icon-72x72.png
rename to public-old/apple-icon-72x72.png
diff --git a/public/apple-icon-76x76.png b/public-old/apple-icon-76x76.png
similarity index 100%
rename from public/apple-icon-76x76.png
rename to public-old/apple-icon-76x76.png
diff --git a/public/favicon-16x16.png b/public-old/favicon-16x16.png
similarity index 100%
rename from public/favicon-16x16.png
rename to public-old/favicon-16x16.png
diff --git a/public/favicon-32x32.png b/public-old/favicon-32x32.png
similarity index 100%
rename from public/favicon-32x32.png
rename to public-old/favicon-32x32.png
diff --git a/public/favicon-96x96.png b/public-old/favicon-96x96.png
similarity index 100%
rename from public/favicon-96x96.png
rename to public-old/favicon-96x96.png
diff --git a/public-old/index.css b/public-old/index.css
new file mode 100644
index 0000000..4191457
--- /dev/null
+++ b/public-old/index.css
@@ -0,0 +1,163 @@
+@media (prefers-color-scheme: dark) {
+ .lds-ring div {
+ border: 8px solid #fff;
+ border-color: #fff transparent transparent transparent;
+ }
+ #progress-bar {
+ background-color: #161627;
+ }
+ #progress-bar-inner {
+ background-color: rgb(131, 131, 243);
+ }
+ .slider {
+ background-color: rgb(131, 131, 243);
+ }
+ .slider:hover {
+ filter: drop-shadow( 0px 0px 5px #8383F3);
+ }
+ #progress-state {
+ background-color: #0a0a0f;
+ }
+}
+@media (prefers-color-scheme: light) {
+ #progress-bar {
+ background-color: #fafafa;
+ }
+ #progress-bar-inner {
+ background-color: #ea74ac;
+ }
+ .slider {
+ background-color: #ea74ac;
+ }
+ .slider:hover {
+ filter: drop-shadow( 0px 0px 5px #ea74ac);
+ }
+ #git {
+ filter: invert(100%);
+ }
+ #progress-state {
+ background-color: #fafafa;
+ }
+}
+
+#progress {
+ width: 600px;
+ max-width: 98%;
+}
+
+#progress-bar {
+ border-radius: 10px;
+ width: 100%;
+ height: 12px;
+}
+#progress-bar-inner {
+ border-radius: 10px;
+}
+
+
+#header {
+ display: flex;
+ align-items: left;
+ justify-content: left;
+ flex-direction: row;
+}
+#header > * {
+ margin-left: 12px;
+ margin-right: 12px;
+}
+#header .link {
+ font-size: x-large;
+ text-decoration: none;
+}
+#header img {
+ position: relative;
+ top: 5px;
+}
+
+ /* The switch - the box around the slider */
+.switch {
+ position: relative;
+ display: inline-block;
+ width: 60px;
+ height: 34px;
+}
+
+/* Hide default HTML checkbox */
+.switch input {
+ opacity: 0;
+ width: 0;
+ height: 0;
+}
+
+/* The slider */
+.slider {
+ position: absolute;
+ cursor: pointer;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ -webkit-transition: .2s;
+ transition: .2s;
+}
+
+.slider:before {
+ position: absolute;
+ content: "";
+ height: 26px;
+ width: 26px;
+ left: 4px;
+ bottom: 4px;
+ background-color: white;
+ -webkit-transition: .2s;
+ transition: .2s;
+}
+
+input:checked + .slider:before {
+ -webkit-transform: translateX(26px);
+ -ms-transform: translateX(26px);
+ transform: translateX(26px);
+}
+
+/* Rounded sliders */
+.slider.round {
+ border-radius: 34px;
+}
+
+.slider.round:before {
+ border-radius: 50%;
+}
+
+#header-left {
+ width: 100%;
+}
+#header-left > * {
+ margin-right: 16px;
+}
+
+#progress-state {
+ font-family: monospace;
+ font-size: 12px;
+ border-radius: 10px;
+ width: 80%;
+ padding: 6px;
+ height: 110px;
+}
+
+.album-downloading {
+ border-radius: 10px;
+}
+
+.error {
+ background-color: rgb(255, 155, 155, 0.3);
+ padding: 20px;
+ border-radius: 15px;
+ border: 3px solid rgb(255, 155, 155, 0.8);
+ text-align: center;
+ margin: 15px;
+ width: 400px;
+ display: none; /* this is changed by the js */
+}
+.error .big {
+ font-size: x-large;
+}
\ No newline at end of file
diff --git a/public/index.html b/public-old/index.html
similarity index 100%
rename from public/index.html
rename to public-old/index.html
diff --git a/public/index.js b/public-old/index.js
similarity index 100%
rename from public/index.js
rename to public-old/index.js
diff --git a/public/manifest.json b/public-old/manifest.json
similarity index 100%
rename from public/manifest.json
rename to public-old/manifest.json
diff --git a/public/index.css b/public/index.css
deleted file mode 100644
index 2b743ee..0000000
--- a/public/index.css
+++ /dev/null
@@ -1,450 +0,0 @@
-@media (prefers-color-scheme: dark) {
- * {
- transition: 0.1s background-color ease-out;
- }
- body {
- background-color: #0a0a0f;
- color: #fff;
- accent-color: rgb(131, 131, 243);
- }
- input {
- background-color: #112;
- color: #fff;
- box-shadow: 0px 0px 15px #000;
- border-bottom: 0rem solid rgb(131, 131, 243);
- }
- input:focus, input:hover {
- border-bottom: 0.25rem solid rgb(131, 131, 243);
- background-color: #161626;
- }
- .album {
- background-color: #161627;
- box-shadow: 0px 0px 12px #000;
- border-left: 0rem solid rgb(131, 131, 243);
- }
- .album:hover {
- border-left: 0.25rem solid rgb(131, 131, 243);
- background-color: #181829;
- }
- .small {
- color: #888;
- }
- .album-image {
- border: 0px solid rgb(131, 131, 243);
- box-shadow: 0px 0px 15px #000;
- }
- .album:hover .album-image {
- border: 2px solid rgb(131, 131, 243);
- box-shadow: 0px 0px 30px #000;
- }
- .album-image-wrapper {
- border: 2px solid rgba(0, 0, 0, 0);
- }
- .album:hover .album-image-wrapper {
- border: 0px solid rgba(0, 0, 0, 0);
- }
- .link {
- color:rgb(131, 131, 243);
- }
- .link:hover {
- color: rgb(151, 151, 255);
- filter: drop-shadow( 0px 0px 2px #8383F3);
- }
- .album-download {
- filter: invert(100%);
- }
- .album-download:hover {
- filter: invert(50%) sepia(58%) saturate(893%) hue-rotate(206deg) brightness(99%) contrast(92%) drop-shadow( 0px 0px 5px #8383F3);
- }
- .lds-ring div {
- border: 8px solid #fff;
- border-color: #fff transparent transparent transparent;
- }
- #progress-bar {
- background-color: #161627;
- }
- #progress-bar-inner {
- background-color: rgb(131, 131, 243);
- }
- .album-bottom {
- background-color: #112;
- border-left: 0rem solid rgb(131, 131, 243);
- }
- .album:hover .album-bottom {
- border-left: 0.25rem solid rgb(131, 131, 243);
- }
- .track {
- border-bottom: 3px solid #0a0a0f;
- border-left: 0rem solid rgb(131, 131, 243);
- }
- .track:hover {
- background-color: #161627;
- border-left: 0.25rem solid rgb(131, 131, 243);
- }
- .slider {
- background-color: rgb(131, 131, 243);
- }
- .slider:hover {
- filter: drop-shadow( 0px 0px 5px #8383F3);
- }
- #progress-state {
- background-color: #0a0a0f;
- }
-}
-@media (prefers-color-scheme: light) {
- body {
- background-color: #f0f0f0;
- color: #1e1e2d;
- accent-color: #ea74ac;
- }
- input {
- background-color: #ffffff;
- color: #1e1e2d;
- box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.2);
- border-bottom: 0rem solid #ea74ac;
- }
- input:focus, input:hover {
- border-bottom: 0.25rem solid #ea74ac;
- background-color: #fafafa;
- }
- .album {
- background-color: #ffffff;
- box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
- border-left: 0rem solid #ea74ac;
- }
- .album:hover {
- border-left: 0.25rem solid #ea74ac;
- background-color: #fafafa;
- }
- .small {
- color: #c8c8d2;
- }
- .album-image {
- border: 0px solid #ea74ac;
- box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.2);
- }
- .album:hover .album-image {
- border: 2px solid #ea74ac;
- box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.2);
- }
- .album-image-wrapper {
- border: 2px solid rgba(0, 0, 0, 0);
- }
- .album:hover .album-image-wrapper {
- border: 0px solid rgba(0, 0, 0, 0);
- }
- .link {
- color:#ea74ac;
- }
- .link:hover {
- color: #f484b6;
- filter: drop-shadow( 0px 0px 2px #f484b6);
- }
- .album-download {
- filter: none;
- }
- .album-download:hover {
- filter: invert(65%) sepia(45%) saturate(772%) hue-rotate(295deg) brightness(103%) contrast(91%) drop-shadow( 0px 0px 5px #f484b6);
- }
- .lds-ring div {
- border: 8px solid #1e1e2d;
- border-color: #1e1e2d transparent transparent transparent;
- }
- #progress-bar {
- background-color: #fafafa;
- }
- #progress-bar-inner {
- background-color: #ea74ac;
- }
- .album-bottom {
- background-color: #ffffff;
- border-left: 0rem solid #ea74ac;
- }
- .album:hover .album-bottom {
- border-left: 0.25rem solid #ea74ac;
- }
- .track {
- border-bottom: 3px solid #f0f0f0;
- border-left: 0rem solid #ea74ac;
- }
- .track:hover {
- background-color: #fafafa;
- border-left: 0.25rem solid #ea74ac;
- }
- .slider {
- background-color: #ea74ac;
- }
- .slider:hover {
- filter: drop-shadow( 0px 0px 5px #ea74ac);
- }
- #git {
- filter: invert(100%);
- }
- #progress-state {
- background-color: #fafafa;
- }
-}
-
-body {
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
-}
-
-#main {
- display: flex;
- justify-content: center;
- align-items: center;
- flex-direction: column;
-}
-
-input {
- margin: 5px;
- width: 550px;
- max-width: 98%;
- padding: 15px;
- font-size: x-large;
- border: none;
- border-radius: 7px;
- transition: 0.1s border-bottom ease-out, 0.1s background-color ease-in-out;
-}
-
-.album {
- padding: 15px;
- margin: 2px;
- font-size: large;
- border-radius: 10px 10px 0px 0px;
- transition: 0.1s border-left ease-out, 0.1s background-color ease-in-out;
- min-height: 96px;
- display: flex;
- justify-content: space-between;
-}
-.small {
- font-size: medium;
-}
-.big {
- font-weight: bold;
-}
-
-#albums {
- margin-top: 20px;
- width: 600px;
- max-width: 98%;
-}
-#progress {
- width: 600px;
- max-width: 98%;
-}
-.album-image {
- width: auto;
- height: 100%;
- border-radius: 10px;
- transition: 0.1s border ease-out, 0.1s box-shadow ease-out;
- width: 96px;
- height: 96px;
-}
-.album-image-wrapper {
- transition: 0.1s border ease-out;
-}
-.album-metadata {
- display: flex;
- flex-direction: column;
- width: 100%;
-}
-.metadata {
- height: 100%;
-}
-.link {
- cursor: pointer;
- transition: 0.1s color ease-out, 0.1s filter ease-out;
-}
-.album-download {
- width: 32px;
- height: 32px;
- cursor: pointer;
- transition: 0.1s filter ease-out;
-}
-.track .album-download {
- position: relative;
- top: 20px;
-}
-.lds-ring {
- display: inline-block;
- position: relative;
- width: 80px;
- height: 80px;
-}
-.lds-ring div {
- box-sizing: border-box;
- display: block;
- position: absolute;
- width: 64px;
- height: 64px;
- margin: 8px;
- border-radius: 50%;
- animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
-}
-.lds-ring div:nth-child(1) {
- animation-delay: -0.45s;
-}
-.lds-ring div:nth-child(2) {
- animation-delay: -0.3s;
-}
-.lds-ring div:nth-child(3) {
- animation-delay: -0.15s;
-}
-@keyframes lds-ring {
- 0% {
- transform: rotate(0deg);
- }
- 100% {
- transform: rotate(360deg);
- }
-}
-
-#progress-bar {
- border-radius: 10px;
- width: 100%;
- height: 12px;
-}
-#progress-bar-inner {
- border-radius: 10px;
-}
-
-.album-bottom {
- padding: 0px;
- margin-left: 2px;
- margin-right: 2px;
- border-radius: 0px 0px 10px 10px;
- transition: 0.1s border-left ease-out;
-}
-.track {
- padding: 10px;
- padding-top: 6px;
- padding-bottom: 6px;
- margin: none;
- display: flex;
- justify-content: space-between;
- font-size: large;
- transition: 0.05s background-color ease-out, 0.1s border-left ease-out;
-}
-.track:nth-last-child(1) {
- border-bottom: none;
- border-radius: 0px 0px 15px 15px;
-}
-
-.track .album-download {
- vertical-align: top;
-}
-
-.track-download-wrapper {
- position: relative;
- bottom: 20px;
- height: 50%;
- width: auto;
-}
-
-#header {
- display: flex;
- align-items: left;
- justify-content: left;
- flex-direction: row;
-}
-#header > * {
- margin-left: 12px;
- margin-right: 12px;
-}
-#header .link {
- font-size: x-large;
- text-decoration: none;
-}
-#header img {
- position: relative;
- top: 5px;
-}
-
- /* The switch - the box around the slider */
-.switch {
- position: relative;
- display: inline-block;
- width: 60px;
- height: 34px;
-}
-
-/* Hide default HTML checkbox */
-.switch input {
- opacity: 0;
- width: 0;
- height: 0;
-}
-
-/* The slider */
-.slider {
- position: absolute;
- cursor: pointer;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- -webkit-transition: .2s;
- transition: .2s;
-}
-
-.slider:before {
- position: absolute;
- content: "";
- height: 26px;
- width: 26px;
- left: 4px;
- bottom: 4px;
- background-color: white;
- -webkit-transition: .2s;
- transition: .2s;
-}
-
-input:checked + .slider:before {
- -webkit-transform: translateX(26px);
- -ms-transform: translateX(26px);
- transform: translateX(26px);
-}
-
-/* Rounded sliders */
-.slider.round {
- border-radius: 34px;
-}
-
-.slider.round:before {
- border-radius: 50%;
-}
-
-#header-left {
- width: 100%;
-}
-#header-left > * {
- margin-right: 16px;
-}
-
-#progress-state {
- font-family: monospace;
- font-size: 12px;
- border-radius: 10px;
- width: 80%;
- padding: 6px;
- height: 110px;
-}
-
-.album-downloading {
- border-radius: 10px;
-}
-
-.error {
- background-color: rgb(255, 155, 155, 0.3);
- padding: 20px;
- border-radius: 15px;
- border: 3px solid rgb(255, 155, 155, 0.8);
- text-align: center;
- margin: 15px;
- width: 400px;
- display: none; /* this is changed by the js */
-}
-.error .big {
- font-size: x-large;
-}
\ No newline at end of file
diff --git a/rollup.config.js b/rollup.config.js
new file mode 100644
index 0000000..5222ef7
--- /dev/null
+++ b/rollup.config.js
@@ -0,0 +1,76 @@
+import svelte from 'rollup-plugin-svelte';
+import commonjs from '@rollup/plugin-commonjs';
+import resolve from '@rollup/plugin-node-resolve';
+import livereload from 'rollup-plugin-livereload';
+import { terser } from 'rollup-plugin-terser';
+import css from 'rollup-plugin-css-only';
+
+const production = !process.env.ROLLUP_WATCH;
+
+function serve() {
+ let server;
+
+ function toExit() {
+ if (server) server.kill(0);
+ }
+
+ return {
+ writeBundle() {
+ if (server) return;
+ server = require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], {
+ stdio: ['ignore', 'inherit', 'inherit'],
+ shell: true
+ });
+
+ process.on('SIGTERM', toExit);
+ process.on('exit', toExit);
+ }
+ };
+}
+
+export default {
+ input: 'app/src/main.js',
+ output: {
+ sourcemap: true,
+ format: 'iife',
+ name: 'app',
+ file: 'app/public/build/bundle.js'
+ },
+ plugins: [
+ svelte({
+ compilerOptions: {
+ // enable run-time checks when not in production
+ dev: !production
+ }
+ }),
+ // we'll extract any component CSS out into
+ // a separate file - better for performance
+ css({ output: 'bundle.css' }),
+
+ // If you have external dependencies installed from
+ // npm, you'll most likely need these plugins. In
+ // some cases you'll need additional configuration -
+ // consult the documentation for details:
+ // https://github.com/rollup/plugins/tree/master/packages/commonjs
+ resolve({
+ browser: true,
+ dedupe: ['svelte']
+ }),
+ commonjs(),
+
+ // In dev mode, call `npm run start` once
+ // the bundle has been generated
+ !production && serve(),
+
+ // Watch the `public` directory and refresh the
+ // browser on changes when not in production
+ !production && livereload('app/public'),
+
+ // If we're building for production (npm run build
+ // instead of npm run dev), minify
+ production && terser()
+ ],
+ watch: {
+ clearScreen: false
+ }
+};
diff --git a/src/index.ts b/src/index.ts
index 5c39c55..250caef 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -24,6 +24,7 @@ if (config.server.proxy) {
app.use((req, res, next) => {
logger.http(`${(config.server.proxy && req.headers['x-forwarded-for']) || req.connection.remoteAddress} ${req.method} ${req.originalUrl} `);
+ res.setHeader('Access-Control-Allow-Origin', '*');
next();
});