From 6ca85079fa0f15be7f1c4b4060e00e11b0e4b90b Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Thu, 30 Jan 2025 03:10:04 +0100 Subject: [PATCH] Updates on download --- package.json | 18 +- pnpm-lock.yaml | 242 +++++++-------- src/lib/components/DownloadManager.svelte | 3 + src/routes/+layout.svelte | 14 + src/routes/+page.server.ts | 98 ++++-- src/routes/+page.svelte | 344 ++++++++++------------ 6 files changed, 375 insertions(+), 344 deletions(-) create mode 100644 src/lib/components/DownloadManager.svelte diff --git a/package.json b/package.json index d83c30f..b7d0f3e 100644 --- a/package.json +++ b/package.json @@ -15,26 +15,26 @@ }, "devDependencies": { "@eslint/compat": "^1.2.5", - "@eslint/js": "^9.18.0", + "@eslint/js": "^9.19.0", "@sveltejs/adapter-auto": "^4.0.0", - "@sveltejs/kit": "^2.16.0", - "@sveltejs/vite-plugin-svelte": "^5.0.0", + "@sveltejs/kit": "^2.16.1", + "@sveltejs/vite-plugin-svelte": "^5.0.3", "@tailwindcss/forms": "^0.5.10", "@tailwindcss/typography": "^0.5.16", "autoprefixer": "^10.4.20", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-svelte": "^2.46.1", "globals": "^15.14.0", "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.10", - "svelte": "^5.0.0", - "svelte-check": "^4.0.0", + "svelte": "^5.19.5", + "svelte-check": "^4.1.4", "tailwindcss": "^3.4.17", - "typescript": "^5.0.0", - "typescript-eslint": "^8.20.0", - "vite": "^6.0.0" + "typescript": "^5.7.3", + "typescript-eslint": "^8.22.0", + "vite": "^6.0.11" }, "dependencies": { "youtube-dl-exec": "^3.0.13" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 56098a6..3f9a5e9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,19 +14,19 @@ importers: devDependencies: '@eslint/compat': specifier: ^1.2.5 - version: 1.2.5(eslint@9.18.0(jiti@1.21.7)) + version: 1.2.5(eslint@9.19.0(jiti@1.21.7)) '@eslint/js': - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 '@sveltejs/adapter-auto': specifier: ^4.0.0 - version: 4.0.0(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0))) + version: 4.0.0(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0))) '@sveltejs/kit': - specifier: ^2.16.0 - version: 2.16.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)) + specifier: ^2.16.1 + version: 2.16.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)) '@sveltejs/vite-plugin-svelte': - specifier: ^5.0.0 - version: 5.0.3(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)) + specifier: ^5.0.3 + version: 5.0.3(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)) '@tailwindcss/forms': specifier: ^0.5.10 version: 0.5.10(tailwindcss@3.4.17) @@ -37,14 +37,14 @@ importers: specifier: ^10.4.20 version: 10.4.20(postcss@8.5.1) eslint: - specifier: ^9.18.0 - version: 9.18.0(jiti@1.21.7) + specifier: ^9.19.0 + version: 9.19.0(jiti@1.21.7) eslint-config-prettier: specifier: ^10.0.1 - version: 10.0.1(eslint@9.18.0(jiti@1.21.7)) + version: 10.0.1(eslint@9.19.0(jiti@1.21.7)) eslint-plugin-svelte: specifier: ^2.46.1 - version: 2.46.1(eslint@9.18.0(jiti@1.21.7))(svelte@5.19.2) + version: 2.46.1(eslint@9.19.0(jiti@1.21.7))(svelte@5.19.5) globals: specifier: ^15.14.0 version: 15.14.0 @@ -53,27 +53,27 @@ importers: version: 3.4.2 prettier-plugin-svelte: specifier: ^3.3.3 - version: 3.3.3(prettier@3.4.2)(svelte@5.19.2) + version: 3.3.3(prettier@3.4.2)(svelte@5.19.5) prettier-plugin-tailwindcss: specifier: ^0.6.10 - version: 0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.19.2))(prettier@3.4.2) + version: 0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.19.5))(prettier@3.4.2) svelte: - specifier: ^5.0.0 - version: 5.19.2 + specifier: ^5.19.5 + version: 5.19.5 svelte-check: - specifier: ^4.0.0 - version: 4.1.4(svelte@5.19.2)(typescript@5.7.3) + specifier: ^4.1.4 + version: 4.1.4(svelte@5.19.5)(typescript@5.7.3) tailwindcss: specifier: ^3.4.17 version: 3.4.17 typescript: - specifier: ^5.0.0 + specifier: ^5.7.3 version: 5.7.3 typescript-eslint: - specifier: ^8.20.0 - version: 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + specifier: ^8.22.0 + version: 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) vite: - specifier: ^6.0.0 + specifier: ^6.0.11 version: 6.0.11(jiti@1.21.7)(yaml@2.7.0) packages: @@ -267,8 +267,8 @@ packages: resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.18.0': - resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} + '@eslint/js@9.19.0': + resolution: {integrity: sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.5': @@ -491,51 +491,51 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@typescript-eslint/eslint-plugin@8.21.0': - resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==} + '@typescript-eslint/eslint-plugin@8.22.0': + resolution: {integrity: sha512-4Uta6REnz/xEJMvwf72wdUnC3rr4jAQf5jnTkeRQ9b6soxLxhDEbS/pfMPoJLDfFPNVRdryqWUIV/2GZzDJFZw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.21.0': - resolution: {integrity: sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==} + '@typescript-eslint/parser@8.22.0': + resolution: {integrity: sha512-MqtmbdNEdoNxTPzpWiWnqNac54h8JDAmkWtJExBVVnSrSmi9z+sZUt0LfKqk9rjqmKOIeRhO4fHHJ1nQIjduIQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.21.0': - resolution: {integrity: sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==} + '@typescript-eslint/scope-manager@8.22.0': + resolution: {integrity: sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.21.0': - resolution: {integrity: sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==} + '@typescript-eslint/type-utils@8.22.0': + resolution: {integrity: sha512-NzE3aB62fDEaGjaAYZE4LH7I1MUwHooQ98Byq0G0y3kkibPJQIXVUspzlFOmOfHhiDLwKzMlWxaNv+/qcZurJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.21.0': - resolution: {integrity: sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==} + '@typescript-eslint/types@8.22.0': + resolution: {integrity: sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.21.0': - resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} + '@typescript-eslint/typescript-estree@8.22.0': + resolution: {integrity: sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.21.0': - resolution: {integrity: sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==} + '@typescript-eslint/utils@8.22.0': + resolution: {integrity: sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.21.0': - resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} + '@typescript-eslint/visitor-keys@8.22.0': + resolution: {integrity: sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -807,8 +807,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.18.0: - resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} + eslint@9.19.0: + resolution: {integrity: sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1515,8 +1515,8 @@ packages: svelte: optional: true - svelte@5.19.2: - resolution: {integrity: sha512-Ww1uLgdX5MdQrAO5zfU1dWUh6zqiPR6uIbwqm8a+4eQ+tNEYHRPgypvKKfHh9lmTkmJ30PWZ2O5qX8aS+PblRQ==} + svelte@5.19.5: + resolution: {integrity: sha512-vVAntseegJX80sgbY8CxQISSE/VoDSfP7VZHoQaf2+z+2XOPOz/N+k455HJmO9O0g8oxTtuE0TBhC/5LAP4lPg==} engines: {node: '>=18'} tailwindcss@3.4.17: @@ -1567,8 +1567,8 @@ packages: type@2.7.3: resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} - typescript-eslint@8.21.0: - resolution: {integrity: sha512-txEKYY4XMKwPXxNkN8+AxAdX6iIJAPiJbHE/FpQccs/sxw8Lf26kqwC3cn0xkHlW8kEbLhkhCsjWuMveaY9Rxw==} + typescript-eslint@8.22.0: + resolution: {integrity: sha512-Y2rj210FW1Wb6TWXzQc5+P+EWI9/zdS57hLEc0gnyuvdzWo8+Y8brKlbj0muejonhMI/xAZCnZZwjbIfv1CkOw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1760,16 +1760,16 @@ snapshots: '@esbuild/win32-x64@0.24.2': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.4.1(eslint@9.19.0(jiti@1.21.7))': dependencies: - eslint: 9.18.0(jiti@1.21.7) + eslint: 9.19.0(jiti@1.21.7) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.2.5(eslint@9.18.0(jiti@1.21.7))': + '@eslint/compat@1.2.5(eslint@9.19.0(jiti@1.21.7))': optionalDependencies: - eslint: 9.18.0(jiti@1.21.7) + eslint: 9.19.0(jiti@1.21.7) '@eslint/config-array@0.19.1': dependencies: @@ -1797,7 +1797,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.18.0': {} + '@eslint/js@9.19.0': {} '@eslint/object-schema@2.1.5': {} @@ -1923,14 +1923,14 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.32.0': optional: true - '@sveltejs/adapter-auto@4.0.0(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))': + '@sveltejs/adapter-auto@4.0.0(@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))': dependencies: - '@sveltejs/kit': 2.16.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)) + '@sveltejs/kit': 2.16.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)) import-meta-resolve: 4.1.0 - '@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0))': + '@sveltejs/kit@2.16.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.1.1 @@ -1942,26 +1942,26 @@ snapshots: sade: 1.8.1 set-cookie-parser: 2.7.1 sirv: 3.0.0 - svelte: 5.19.2 + svelte: 5.19.5 vite: 6.0.11(jiti@1.21.7)(yaml@2.7.0) - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)) debug: 4.4.0 - svelte: 5.19.2 + svelte: 5.19.5 vite: 6.0.11(jiti@1.21.7)(yaml@2.7.0) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0))': + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.2)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.19.5)(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)) debug: 4.4.0 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 - svelte: 5.19.2 + svelte: 5.19.5 vite: 6.0.11(jiti@1.21.7)(yaml@2.7.0) vitefu: 1.0.5(vite@6.0.11(jiti@1.21.7)(yaml@2.7.0)) transitivePeerDependencies: @@ -1986,15 +1986,15 @@ snapshots: '@types/json-schema@7.0.15': {} - '@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.21.0 - eslint: 9.18.0(jiti@1.21.7) + '@typescript-eslint/parser': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.22.0 + eslint: 9.19.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -2003,40 +2003,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.22.0 debug: 4.4.0 - eslint: 9.18.0(jiti@1.21.7) + eslint: 9.19.0(jiti@1.21.7) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.21.0': + '@typescript-eslint/scope-manager@8.22.0': dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/visitor-keys': 8.22.0 - '@typescript-eslint/type-utils@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) debug: 4.4.0 - eslint: 9.18.0(jiti@1.21.7) + eslint: 9.19.0(jiti@1.21.7) ts-api-utils: 2.0.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.21.0': {} + '@typescript-eslint/types@8.22.0': {} - '@typescript-eslint/typescript-estree@8.21.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.22.0(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/visitor-keys': 8.22.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -2047,20 +2047,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/utils@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - eslint: 9.18.0(jiti@1.21.7) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) + eslint: 9.19.0(jiti@1.21.7) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.21.0': + '@typescript-eslint/visitor-keys@8.22.0': dependencies: - '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/types': 8.22.0 eslint-visitor-keys: 4.2.0 acorn-jsx@5.3.2(acorn@8.14.0): @@ -2303,21 +2303,21 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.18.0(jiti@1.21.7)): + eslint-compat-utils@0.5.1(eslint@9.19.0(jiti@1.21.7)): dependencies: - eslint: 9.18.0(jiti@1.21.7) + eslint: 9.19.0(jiti@1.21.7) semver: 7.6.3 - eslint-config-prettier@10.0.1(eslint@9.18.0(jiti@1.21.7)): + eslint-config-prettier@10.0.1(eslint@9.19.0(jiti@1.21.7)): dependencies: - eslint: 9.18.0(jiti@1.21.7) + eslint: 9.19.0(jiti@1.21.7) - eslint-plugin-svelte@2.46.1(eslint@9.18.0(jiti@1.21.7))(svelte@5.19.2): + eslint-plugin-svelte@2.46.1(eslint@9.19.0(jiti@1.21.7))(svelte@5.19.5): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@1.21.7)) '@jridgewell/sourcemap-codec': 1.5.0 - eslint: 9.18.0(jiti@1.21.7) - eslint-compat-utils: 0.5.1(eslint@9.18.0(jiti@1.21.7)) + eslint: 9.19.0(jiti@1.21.7) + eslint-compat-utils: 0.5.1(eslint@9.19.0(jiti@1.21.7)) esutils: 2.0.3 known-css-properties: 0.35.0 postcss: 8.5.1 @@ -2325,9 +2325,9 @@ snapshots: postcss-safe-parser: 6.0.0(postcss@8.5.1) postcss-selector-parser: 6.1.2 semver: 7.6.3 - svelte-eslint-parser: 0.43.0(svelte@5.19.2) + svelte-eslint-parser: 0.43.0(svelte@5.19.5) optionalDependencies: - svelte: 5.19.2 + svelte: 5.19.5 transitivePeerDependencies: - ts-node @@ -2345,14 +2345,14 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.18.0(jiti@1.21.7): + eslint@9.19.0(jiti@1.21.7): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.1 '@eslint/core': 0.10.0 '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.18.0 + '@eslint/js': 9.19.0 '@eslint/plugin-kit': 0.2.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -2811,16 +2811,16 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.19.2): + prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.19.5): dependencies: prettier: 3.4.2 - svelte: 5.19.2 + svelte: 5.19.5 - prettier-plugin-tailwindcss@0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.19.2))(prettier@3.4.2): + prettier-plugin-tailwindcss@0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.4.2)(svelte@5.19.5))(prettier@3.4.2): dependencies: prettier: 3.4.2 optionalDependencies: - prettier-plugin-svelte: 3.3.3(prettier@3.4.2)(svelte@5.19.2) + prettier-plugin-svelte: 3.3.3(prettier@3.4.2)(svelte@5.19.5) prettier@3.4.2: {} @@ -2956,19 +2956,19 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.1.4(svelte@5.19.2)(typescript@5.7.3): + svelte-check@4.1.4(svelte@5.19.5)(typescript@5.7.3): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 4.0.3 fdir: 6.4.3 picocolors: 1.1.1 sade: 1.8.1 - svelte: 5.19.2 + svelte: 5.19.5 typescript: 5.7.3 transitivePeerDependencies: - picomatch - svelte-eslint-parser@0.43.0(svelte@5.19.2): + svelte-eslint-parser@0.43.0(svelte@5.19.5): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -2976,9 +2976,9 @@ snapshots: postcss: 8.5.1 postcss-scss: 4.0.9(postcss@8.5.1) optionalDependencies: - svelte: 5.19.2 + svelte: 5.19.5 - svelte@5.19.2: + svelte@5.19.5: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 @@ -3059,12 +3059,12 @@ snapshots: type@2.7.3: {} - typescript-eslint@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3): + typescript-eslint@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/parser': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) - eslint: 9.18.0(jiti@1.21.7) + '@typescript-eslint/eslint-plugin': 8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/parser': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + eslint: 9.19.0(jiti@1.21.7) typescript: 5.7.3 transitivePeerDependencies: - supports-color diff --git a/src/lib/components/DownloadManager.svelte b/src/lib/components/DownloadManager.svelte new file mode 100644 index 0000000..4967501 --- /dev/null +++ b/src/lib/components/DownloadManager.svelte @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 9b776b7..acd309f 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,6 +1,20 @@ {@render children()} + + + + \ No newline at end of file diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index 02f1eab..8665878 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -1,42 +1,80 @@ -import { DOWNLOAD_PATH } from "$env/static/private"; -import { redirect } from "@sveltejs/kit"; -import youtubedl from "youtube-dl-exec"; +import { DOWNLOAD_PATH } from '$env/static/private'; +import { redirect } from '@sveltejs/kit'; +import youtubedl from 'youtube-dl-exec'; + +const isAudioFormat = (format: string) => { + let isAudio = false; + + switch (format) { + case 'mp3': + isAudio = true; + break; + default: + isAudio = false; + break; + } + + return isAudio; +}; + +const isVideoFormat = (format: string) => { + let isVideo = false; + + switch (format) { + case 'mp4': + isVideo = true; + break; + default: + isVideo = false; + break; + } + + return isVideo; +} export const actions = { - download: async ({ request, cookies }) => { - const data = await request.formData(); + download: async ({ request, cookies }) => { + const data = await request.formData(); - const obj = {}; - for (const element of data) { - obj[element[0]] = element[1]; - } + const obj = {}; + for (const element of data) { + obj[element[0]] = element[1]; + } - const { format, source, link } = obj; + const { format, source, link } = obj; - if (!(format && source && link)) { - throw redirect(307, "/"); - } + if (!(format && source && link)) { + throw redirect(307, '/'); + } - console.info(`Asked ${source} download of ${link}`); + console.info(`Asked ${source} download of ${link}`); switch (source) { - case "youtube": - const output = await youtubedl(link, { - output: `${DOWNLOAD_PATH}/%(artist)s-%(title)s.%(ext)s`, - embedThumbnail: true, - audioFormat: format - }); + case 'youtube': + const options = { + output: `${DOWNLOAD_PATH}/%(artist)s-%(title)s.%(ext)s`, + embedThumbnail: true + } - console.log(output); - console.info(`Downloaded ${link} to ${output}`); + if (isAudioFormat(format)) { + options.extractAudio = true; + options.audioFormat = format; + } - break; - case "spotify": - break; - default: - console.error("ops"); - } + isVideoFormat(format) ? options.format = format : '' - return { success: true }; - }, + const output = await youtubedl(link); + + console.log(output); + console.info(`Downloaded ${link} to ${output}`); + + break; + case 'spotify': + break; + default: + console.error('ops'); + } + + return { success: true }; + } }; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index a0beff6..824e732 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,209 +1,185 @@
- This app allows you to download Spotify playlists and YouTube videos - directly. Choose your source, paste the link, and select a format to - start downloading! -
- -+ This app allows you to download Spotify playlists and YouTube videos directly. Choose your + source, paste the link, and select a format to start downloading! +
+ +