From 716ebe9ecd63a98fad24621009402ede98938307 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Sat, 19 Apr 2025 18:50:10 +0200 Subject: [PATCH 01/25] just log everything sadly --- .forgejo/workflows/release.yaml | 13 +++++++------ scripts/install.sh | 4 ++-- src/lib/server/helpers.ts | 4 ++-- src/routes/download/+server.ts | 2 ++ 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.forgejo/workflows/release.yaml b/.forgejo/workflows/release.yaml index ac6d9b5..3eb5b52 100644 --- a/.forgejo/workflows/release.yaml +++ b/.forgejo/workflows/release.yaml @@ -29,14 +29,15 @@ jobs: - name: Create Release run: | npm ci - touch .env - echo "HOST=0.0.0.0" >> .env - echo "ORIGIN=https://dl.emersa.it" >> .env - echo "PUBLIC_VERSION=$(cat package.json | jq .version)" >> .env - echo "NODE_ENV=production" >> .env + touch .env.production + echo "HOST=0.0.0.0" >> .env.production + echo "PORT=3000" >> .env.production + echo "ORIGIN=https://dl.emersa.it" >> .env.production + echo "PUBLIC_VERSION=$(cat package.json | jq .version)" >> .env.production + echo "NODE_ENV=production" >> .env.production npm run build cp package* build/ - cp .env build/ + cp .env.production build/ mkdir releases cd build/ tar czvf ../releases/build.tar.gz . diff --git a/scripts/install.sh b/scripts/install.sh index 57b2ff4..929c279 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -29,5 +29,5 @@ tar -xvf build.tar.gz -C . rm build.tar.gz npm ci npm run download-yt-dlp -echo "YTDLP_PATH=$(readlink -f yt-dlp)" >>.env -echo "HTTPS_PROXY=${PROXY}" >>.env +echo "YTDLP_PATH=$(readlink -f yt-dlp)" >> .env.production +echo "HTTPS_PROXY=${PROXY}" >> .env.production diff --git a/src/lib/server/helpers.ts b/src/lib/server/helpers.ts index 6a31c32..bd93790 100644 --- a/src/lib/server/helpers.ts +++ b/src/lib/server/helpers.ts @@ -1,12 +1,12 @@ import formats from '$lib/common/supportedFormats.json'; import winston from 'winston'; -import { dev } from '$app/environment'; export const logger = winston.createLogger({ - level: import.meta.env.DEV ? 'debug' : 'error', + level: 'debug', format: winston.format.json(), transports: [new winston.transports.Console()] }); +logger.debug(import.meta.env.DEV) const formatMime = new Map(Object.entries(formats)); export const isURLValid = (url: string) => { try { diff --git a/src/routes/download/+server.ts b/src/routes/download/+server.ts index 9b62aba..8db31e1 100644 --- a/src/routes/download/+server.ts +++ b/src/routes/download/+server.ts @@ -41,6 +41,8 @@ export const GET: RequestHandler = async ({ url }) => { let filename = ''; let contentLength = 0; + logger.debug(`Requested: ${link}`); + try { logger.debug(`Fetching video data to set filename`); // Fetch metadata for filename From 57d2adbdbc333a1b30ba33c7f674ae76da1d0e52 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Sat, 19 Apr 2025 18:50:31 +0200 Subject: [PATCH 02/25] remove useless log --- src/lib/server/helpers.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/server/helpers.ts b/src/lib/server/helpers.ts index bd93790..1b86056 100644 --- a/src/lib/server/helpers.ts +++ b/src/lib/server/helpers.ts @@ -6,7 +6,6 @@ export const logger = winston.createLogger({ format: winston.format.json(), transports: [new winston.transports.Console()] }); -logger.debug(import.meta.env.DEV) const formatMime = new Map(Object.entries(formats)); export const isURLValid = (url: string) => { try { From b43ee05ecfb1536b0f5cfc1f3495f02cfb6ff958 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Sat, 19 Apr 2025 18:50:59 +0200 Subject: [PATCH 03/25] 1.0.0-c --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a0ee797..f384442 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dl.emersa.it", - "version": "1.0.0-b", + "version": "1.0.0-c", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dl.emersa.it", - "version": "1.0.0-b", + "version": "1.0.0-c", "dependencies": { "@tailwindcss/forms": "^0.5.10", "@tailwindcss/postcss": "^4.1.4", diff --git a/package.json b/package.json index 388beba..73e1dff 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "dl.emersa.it", "private": true, - "version": "1.0.0-b", + "version": "1.0.0-c", "type": "module", "scripts": { "dev": "vite dev", From 64c95b5dd45662bba589c373b0c82696ad6a084b Mon Sep 17 00:00:00 2001 From: forgejo-bot Date: Sat, 19 Apr 2025 23:00:39 +0000 Subject: [PATCH 04/25] chore: update minor dependencies --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index f384442..b213935 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "prettier-plugin-tailwindcss": "^0.6.11", "svelte": "^5.28.1", "svelte-check": "^4.1.6", - "sveltekit-sse": "^0.13.18", + "sveltekit-sse": "^0.13.19", "tailwindcss": "^4.1.4", "typescript": "^5.8.3", "typescript-eslint": "^8.30.1", @@ -4520,9 +4520,9 @@ } }, "node_modules/sveltekit-sse": { - "version": "0.13.18", - "resolved": "https://registry.npmjs.org/sveltekit-sse/-/sveltekit-sse-0.13.18.tgz", - "integrity": "sha512-DEK2pcnHZsQTezM6Eq4qBUewkp3v1SBpBXX4eNiFZs4cwfGw++lEVAoPoR4I1CmLjfz+RznblvvX/Q0qomj1VA==", + "version": "0.13.19", + "resolved": "https://registry.npmjs.org/sveltekit-sse/-/sveltekit-sse-0.13.19.tgz", + "integrity": "sha512-0uOiMqRdpjoM2dM/2fyLPUfGdhhOeW9KX4LR03b4K/cYFoZt4RYyOQJrX5RPijPf9sGX2mXkc0GEA2d0l3zifg==", "dev": true, "license": "MIT", "peerDependencies": { diff --git a/package.json b/package.json index 73e1dff..109d2a9 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "prettier-plugin-tailwindcss": "^0.6.11", "svelte": "^5.28.1", "svelte-check": "^4.1.6", - "sveltekit-sse": "^0.13.18", + "sveltekit-sse": "^0.13.19", "tailwindcss": "^4.1.4", "typescript": "^5.8.3", "typescript-eslint": "^8.30.1", From 0706e42e850331097be52fb9df71bae2c950f289 Mon Sep 17 00:00:00 2001 From: forgejo-bot Date: Mon, 21 Apr 2025 23:00:39 +0000 Subject: [PATCH 05/25] chore: update minor dependencies --- package-lock.json | 179 ++++++++++++++++++++++++++++++---------------- package.json | 8 +-- 2 files changed, 121 insertions(+), 66 deletions(-) diff --git a/package-lock.json b/package-lock.json index b213935..4014141 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,16 +17,16 @@ }, "devDependencies": { "@eslint/compat": "^1.2.8", - "@eslint/js": "^9.25.0", + "@eslint/js": "^9.25.1", "@sveltejs/adapter-node": "^5.2.12", "@sveltejs/kit": "^2.20.7", "@sveltejs/vite-plugin-svelte": "^5.0.3", "@tailwindcss/vite": "^4.1.4", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "eslint-config-prettier": "^10.1.2", "eslint-plugin-svelte": "^3.5.1", "globals": "^16.0.0", - "mdsvex": "^0.12.3", + "mdsvex": "^0.12.4", "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.11", @@ -35,7 +35,7 @@ "sveltekit-sse": "^0.13.19", "tailwindcss": "^4.1.4", "typescript": "^5.8.3", - "typescript-eslint": "^8.30.1", + "typescript-eslint": "^8.31.0", "vite": "^6.3.2" } }, @@ -639,9 +639,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.25.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz", - "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==", + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz", + "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==", "dev": true, "license": "MIT", "engines": { @@ -1628,6 +1628,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/node": { "version": "22.14.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", @@ -1655,17 +1665,17 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.30.1.tgz", - "integrity": "sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.31.0.tgz", + "integrity": "sha512-evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.30.1", - "@typescript-eslint/type-utils": "8.30.1", - "@typescript-eslint/utils": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1", + "@typescript-eslint/scope-manager": "8.31.0", + "@typescript-eslint/type-utils": "8.31.0", + "@typescript-eslint/utils": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -1685,16 +1695,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.30.1.tgz", - "integrity": "sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.31.0.tgz", + "integrity": "sha512-67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.30.1", - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/typescript-estree": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1", + "@typescript-eslint/scope-manager": "8.31.0", + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/typescript-estree": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0", "debug": "^4.3.4" }, "engines": { @@ -1710,14 +1720,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz", - "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.0.tgz", + "integrity": "sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1" + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1728,14 +1738,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.30.1.tgz", - "integrity": "sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.31.0.tgz", + "integrity": "sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.30.1", - "@typescript-eslint/utils": "8.30.1", + "@typescript-eslint/typescript-estree": "8.31.0", + "@typescript-eslint/utils": "8.31.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -1752,9 +1762,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz", - "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.0.tgz", + "integrity": "sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==", "dev": true, "license": "MIT", "engines": { @@ -1766,14 +1776,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz", - "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.0.tgz", + "integrity": "sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/visitor-keys": "8.30.1", + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -1819,16 +1829,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.30.1.tgz", - "integrity": "sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.0.tgz", + "integrity": "sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.30.1", - "@typescript-eslint/types": "8.30.1", - "@typescript-eslint/typescript-estree": "8.30.1" + "@typescript-eslint/scope-manager": "8.31.0", + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/typescript-estree": "8.31.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1843,13 +1853,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz", - "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.0.tgz", + "integrity": "sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.30.1", + "@typescript-eslint/types": "8.31.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -2378,9 +2388,9 @@ } }, "node_modules/eslint": { - "version": "9.25.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz", - "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==", + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz", + "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2390,7 +2400,7 @@ "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.13.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.25.0", + "@eslint/js": "9.25.1", "@eslint/plugin-kit": "^0.2.8", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -3451,14 +3461,17 @@ } }, "node_modules/mdsvex": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/mdsvex/-/mdsvex-0.12.3.tgz", - "integrity": "sha512-C/uIJamjNo5PHHnR3JHqsBPoLcfUBpzRmAEB6FLMXI/s7XHOceswjDMKqSPEW2WHmYpKm0taZ3U20GSyhMridA==", + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/mdsvex/-/mdsvex-0.12.4.tgz", + "integrity": "sha512-m7m2VN7gKl9OAwRbUju6EDH1zzQf9tU5jFFEAEW13am2GuGstNYyYEY35J0vmCSviC5xgwsnQGYoCg+lYMxKRQ==", "dev": true, + "license": "MIT", "dependencies": { + "@types/mdast": "^4.0.4", "@types/unist": "^2.0.3", "prism-svelte": "^0.4.7", "prismjs": "^1.17.1", + "unist-util-visit": "^2.0.1", "vfile-message": "^2.0.4" }, "peerDependencies": { @@ -4678,15 +4691,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.30.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.30.1.tgz", - "integrity": "sha512-D7lC0kcehVH7Mb26MRQi64LMyRJsj3dToJxM1+JVTl53DQSV5/7oUGWQLcKl1C1KnoVHxMMU2FNQMffr7F3Row==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.31.0.tgz", + "integrity": "sha512-u+93F0sB0An8WEAPtwxVhFby573E8ckdjwUUQUj9QA4v8JAvgtoDdIyYR3XFwFHq2W1KJ1AurwJCO+w+Y1ixyQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.30.1", - "@typescript-eslint/parser": "8.30.1", - "@typescript-eslint/utils": "8.30.1" + "@typescript-eslint/eslint-plugin": "8.31.0", + "@typescript-eslint/parser": "8.31.0", + "@typescript-eslint/utils": "8.31.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4706,6 +4719,17 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-stringify-position": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", @@ -4719,6 +4743,37 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", diff --git a/package.json b/package.json index 109d2a9..95ffdc8 100644 --- a/package.json +++ b/package.json @@ -16,16 +16,16 @@ }, "devDependencies": { "@eslint/compat": "^1.2.8", - "@eslint/js": "^9.25.0", + "@eslint/js": "^9.25.1", "@sveltejs/adapter-node": "^5.2.12", "@sveltejs/kit": "^2.20.7", "@sveltejs/vite-plugin-svelte": "^5.0.3", "@tailwindcss/vite": "^4.1.4", - "eslint": "^9.25.0", + "eslint": "^9.25.1", "eslint-config-prettier": "^10.1.2", "eslint-plugin-svelte": "^3.5.1", "globals": "^16.0.0", - "mdsvex": "^0.12.3", + "mdsvex": "^0.12.4", "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.11", @@ -34,7 +34,7 @@ "sveltekit-sse": "^0.13.19", "tailwindcss": "^4.1.4", "typescript": "^5.8.3", - "typescript-eslint": "^8.30.1", + "typescript-eslint": "^8.31.0", "vite": "^6.3.2" }, "dependencies": { From 8e760a905f423b0f405ed41b8bb891cb81233101 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 20:37:21 +0200 Subject: [PATCH 06/25] Update download logic --- src/lib/client/downloader.ts | 21 ------ src/lib/components/DownloadManager.svelte | 81 +++++------------------ src/routes/+page.svelte | 47 +++++++++++-- 3 files changed, 57 insertions(+), 92 deletions(-) delete mode 100644 src/lib/client/downloader.ts diff --git a/src/lib/client/downloader.ts b/src/lib/client/downloader.ts deleted file mode 100644 index c75c651..0000000 --- a/src/lib/client/downloader.ts +++ /dev/null @@ -1,21 +0,0 @@ -const createAnchorElement = (url: string, filename: string): HTMLAnchorElement => { - const anchor = document.createElement('a'); - anchor.href = url; - anchor.download = filename; - return anchor; -}; -export const download = async (url: string, filename: string) => { - const response = await fetch(url); - - if (!response.ok) { - throw new Error('Network response was not ok'); - } - - const blob = await response.blob(); - const objectURL = window.URL.createObjectURL(blob); - const anchor = createAnchorElement(url, filename); - document.body.appendChild(anchor); - anchor.click(); - anchor.remove(); - window.URL.revokeObjectURL(objectURL); -}; diff --git a/src/lib/components/DownloadManager.svelte b/src/lib/components/DownloadManager.svelte index efe3bc0..ffa1444 100644 --- a/src/lib/components/DownloadManager.svelte +++ b/src/lib/components/DownloadManager.svelte @@ -1,73 +1,22 @@ -{#if visible} +
-
-

- Downloading {filename} -

-
-
-
-

{progress}%

+

+ Downloading {filename} +

+
+
+

{progress}%

-{/if} +
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index eb2fc45..ac7dcae 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -2,12 +2,12 @@ import { PUBLIC_VERSION } from '$env/static/public'; import supportedFormats from '$lib/common/supportedFormats.json'; import Loader from '$lib/components/Loader.svelte'; - import { download } from '$lib/client/downloader'; import DownloadManager from '$lib/components/DownloadManager.svelte'; import { mount, unmount } from 'svelte'; let source = $state('youtube'); let link = $state(''); + let downloading = $state(false); let format = $state('mp3'); let showModal = $state(false); let href = $state(''); @@ -15,6 +15,8 @@ let metadata = $state(false); let logs = $state(''); let downloadManager: DownloadManager | null = null; + let progress = $state(0); + let filename = $state(''); const formats = Object.keys(supportedFormats).map((f) => { return { value: f, label: f.toUpperCase() }; @@ -28,15 +30,46 @@ showModal = !showModal; }; - const dismiss = () => { - unmount(downloadManager); + const download = async (url: string) => { + const response = await fetch(url); + + if (!response.ok) { + throw new Error('Network response was not ok'); + } + + const contentDisposition: string | null = response?.headers?.get('content-disposition'); + filename = contentDisposition?.split('filename=')[1] || 'noname'; + const contentLength: number = Number(response?.headers?.get('content-length')); + const reader = response?.body?.getReader(); + const chunks: Uint8Array[] = []; + let receivedLength = 0; + + while (true) { + const { done, value }: ReadableStreamReadResult = await reader!.read(); + if (done) break; + if (value) { + chunks.push(value); + receivedLength += value.length; + progress = Math.round((receivedLength / contentLength) * 100); + } + } + + const blob = new Blob(chunks); + const downloadUrl = URL.createObjectURL(blob); + + const a = document.createElement('a'); + a.href = downloadUrl; + a.download = filename; + a.click(); + window.URL.revokeObjectURL(downloadUrl); }; const onClick = async (evt) => { evt.preventDefault(); - const props = $state({ url: href }); - downloadManager = mount(DownloadManager, { target: document.body, props, events: { dismiss } }); + downloading = true; + await download(href); + downloading = false; link = ''; }; @@ -187,6 +220,10 @@
+{#if downloading} + +{/if} + {#if showModal}
From f72ea7589ceac0f338d96c1c8ad5401cf458cd0a Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 20:37:34 +0200 Subject: [PATCH 07/25] 1.0.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4014141..2b47724 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dl.emersa.it", - "version": "1.0.0-c", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dl.emersa.it", - "version": "1.0.0-c", + "version": "1.0.1", "dependencies": { "@tailwindcss/forms": "^0.5.10", "@tailwindcss/postcss": "^4.1.4", diff --git a/package.json b/package.json index 95ffdc8..7740fbf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "dl.emersa.it", "private": true, - "version": "1.0.0-c", + "version": "1.0.1", "type": "module", "scripts": { "dev": "vite dev", From 46c5bc6d7b2af67a4325dcb382b44b2f61d88a56 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 20:49:43 +0200 Subject: [PATCH 08/25] 150MB default file --- src/routes/+page.svelte | 4 +++- src/routes/download/+server.ts | 6 ++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index ac7dcae..f23038c 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -50,7 +50,7 @@ if (value) { chunks.push(value); receivedLength += value.length; - progress = Math.round((receivedLength / contentLength) * 100); + progress = Math.round((receivedLength / 150000) * 100); } } @@ -72,6 +72,8 @@ downloading = false; link = ''; + progress = 0; + filename = ''; }; const createAnchor = () => { diff --git a/src/routes/download/+server.ts b/src/routes/download/+server.ts index 8db31e1..247dd73 100644 --- a/src/routes/download/+server.ts +++ b/src/routes/download/+server.ts @@ -39,7 +39,6 @@ const validateRequest = (url: URL) => { export const GET: RequestHandler = async ({ url }) => { const { format, source, metadata, link } = validateRequest(url); let filename = ''; - let contentLength = 0; logger.debug(`Requested: ${link}`); @@ -47,8 +46,7 @@ export const GET: RequestHandler = async ({ url }) => { logger.debug(`Fetching video data to set filename`); // Fetch metadata for filename const ytMetadata = await getYouTubeMetadata(link); - const { title, uploader, filesize_approx } = ytMetadata; - contentLength = filesize_approx; + const { title, uploader } = ytMetadata; const safeTitle = `${uploader} - ${title}`; filename = `${safeTitle}.${format}`; } catch (err) { @@ -62,7 +60,7 @@ export const GET: RequestHandler = async ({ url }) => { return new Response(streamYouTube(link, format), { headers: { 'Content-Type': `${mimeTypeMap.get(format)}`, - 'Content-Length': contentLength, + 'Content-Disposition': `attachment; filename="${filename}"` } }); From a48cb16ab73aa1649329c015ccf641a0490a7916 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 20:50:25 +0200 Subject: [PATCH 09/25] remove filename --- src/routes/download/+server.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/routes/download/+server.ts b/src/routes/download/+server.ts index 247dd73..24a9c55 100644 --- a/src/routes/download/+server.ts +++ b/src/routes/download/+server.ts @@ -60,7 +60,6 @@ export const GET: RequestHandler = async ({ url }) => { return new Response(streamYouTube(link, format), { headers: { 'Content-Type': `${mimeTypeMap.get(format)}`, - 'Content-Disposition': `attachment; filename="${filename}"` } }); From e6dc9292a65257ccc1e214f49fa192b4139c8c56 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 20:50:44 +0200 Subject: [PATCH 10/25] 1.0.1-b --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b47724..b4f54a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dl.emersa.it", - "version": "1.0.1", + "version": "1.0.1-b", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dl.emersa.it", - "version": "1.0.1", + "version": "1.0.1-b", "dependencies": { "@tailwindcss/forms": "^0.5.10", "@tailwindcss/postcss": "^4.1.4", diff --git a/package.json b/package.json index 7740fbf..5467659 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "dl.emersa.it", "private": true, - "version": "1.0.1", + "version": "1.0.1-b", "type": "module", "scripts": { "dev": "vite dev", From 5e0071f15da7f8d53a2faaa33127abc9129031fc Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 20:57:01 +0200 Subject: [PATCH 11/25] Better naming and faster progress bar --- .../{DownloadManager.svelte => ProgressBar.svelte} | 2 +- src/routes/+page.svelte | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) rename src/lib/components/{DownloadManager.svelte => ProgressBar.svelte} (98%) diff --git a/src/lib/components/DownloadManager.svelte b/src/lib/components/ProgressBar.svelte similarity index 98% rename from src/lib/components/DownloadManager.svelte rename to src/lib/components/ProgressBar.svelte index ffa1444..de2bac6 100644 --- a/src/lib/components/DownloadManager.svelte +++ b/src/lib/components/ProgressBar.svelte @@ -15,7 +15,7 @@
+ >

{progress}%

diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index f23038c..ac89f4c 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -2,7 +2,7 @@ import { PUBLIC_VERSION } from '$env/static/public'; import supportedFormats from '$lib/common/supportedFormats.json'; import Loader from '$lib/components/Loader.svelte'; - import DownloadManager from '$lib/components/DownloadManager.svelte'; + import DownloadManager from '$lib/components/ProgressBar.svelte'; import { mount, unmount } from 'svelte'; let source = $state('youtube'); @@ -44,13 +44,14 @@ const chunks: Uint8Array[] = []; let receivedLength = 0; + while (true) { const { done, value }: ReadableStreamReadResult = await reader!.read(); if (done) break; if (value) { chunks.push(value); receivedLength += value.length; - progress = Math.round((receivedLength / 150000) * 100); + progress = Math.round((receivedLength / 50000) * 100); } } From 3c5f7dc6c26740c609e48d5e14820ce187a8270e Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 20:57:13 +0200 Subject: [PATCH 12/25] the same as before --- src/lib/components/ProgressBar.svelte | 2 +- src/routes/+page.svelte | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/lib/components/ProgressBar.svelte b/src/lib/components/ProgressBar.svelte index de2bac6..04bb07d 100644 --- a/src/lib/components/ProgressBar.svelte +++ b/src/lib/components/ProgressBar.svelte @@ -15,7 +15,7 @@
+ >

{progress}%

diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index ac89f4c..6039115 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -44,7 +44,6 @@ const chunks: Uint8Array[] = []; let receivedLength = 0; - while (true) { const { done, value }: ReadableStreamReadResult = await reader!.read(); if (done) break; From fad656932650ef089e931caf6f3da81d2c8351fd Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 21:40:01 +0200 Subject: [PATCH 13/25] 1.0.1-c --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b4f54a7..e74b77c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dl.emersa.it", - "version": "1.0.1-b", + "version": "1.0.1-c", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dl.emersa.it", - "version": "1.0.1-b", + "version": "1.0.1-c", "dependencies": { "@tailwindcss/forms": "^0.5.10", "@tailwindcss/postcss": "^4.1.4", diff --git a/package.json b/package.json index 5467659..2ab1129 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "dl.emersa.it", "private": true, - "version": "1.0.1-b", + "version": "1.0.1-c", "type": "module", "scripts": { "dev": "vite dev", From 51ee4299bd21a8267da42ca4af90c71d891ea2a5 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 21:48:53 +0200 Subject: [PATCH 14/25] Remove metadata query param --- src/routes/+page.svelte | 17 ----------------- src/routes/download/+server.ts | 5 ++--- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 6039115..39acccd 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -12,7 +12,6 @@ let showModal = $state(false); let href = $state(''); let disabled = $state(true); - let metadata = $state(false); let logs = $state(''); let downloadManager: DownloadManager | null = null; let progress = $state(0); @@ -100,8 +99,6 @@ searchParams.append('link', link); searchParams.append('format', format); - if (metadata) searchParams.append('metadata', '1'); - href = `/download?${searchParams.toString()}`; }; @@ -194,20 +191,6 @@ /> - -
- - -
- { return { link, format, - source, - metadata + source }; }; export const GET: RequestHandler = async ({ url }) => { - const { format, source, metadata, link } = validateRequest(url); + const { format, source, link } = validateRequest(url); let filename = ''; logger.debug(`Requested: ${link}`); From 48ab1a42ed930feedf4c8fafd22fbdde9c282a85 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 23:43:56 +0200 Subject: [PATCH 15/25] remove node env from .env --- .env.example | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.env.example b/.env.example index b7f7612..0b9efdb 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,5 @@ -NODE_ENV=development HOST=0.0.0.0 ORIGIN=https://dl.emersa.it YTDLP_PATH=./yt-dlp PUBLIC_VERSION=0.6.3 -HTTPS_PROXY= \ No newline at end of file +HTTPS_PROXY= From e6096f2cd2f461e7dfcefcf8faef8fd12b911b66 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 23:48:48 +0200 Subject: [PATCH 16/25] update ci --- .forgejo/workflows/ci.yaml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 9d5a98e..c4bfccb 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -1,4 +1,4 @@ -name: Bump deps (only minor versions) +name: Just some continuos integration on: [push] @@ -15,7 +15,16 @@ jobs: uses: actions/setup-node@v3 with: node-version: '20' - - name: Prepare, Check, Lint and Format + - name: Update deps, install them (to change package-lock.json) and commit run: | - npm i + npm install npm run prepare + npm run lint + npm run format + git config --global user.name "forgejo-bot" + git config --global user.email "bot@pweapon.org" + git add --all || exit 0 + git commit -m "chore: lint and format" || exit 0 + git push origin HEAD:${GITHUB_REF#refs/heads/} + env: + GITHUB_TOKEN: ${{ secrets.FORGEJO_TOKEN }} From 9f36097598d1cd1df65c0e4ac53ea46651e5365a Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 23:54:19 +0200 Subject: [PATCH 17/25] Dumb update --- src/lib/server/ytdlp.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/lib/server/ytdlp.ts b/src/lib/server/ytdlp.ts index 173c9bf..9e358a3 100644 --- a/src/lib/server/ytdlp.ts +++ b/src/lib/server/ytdlp.ts @@ -1,7 +1,6 @@ -import { create } from 'youtube-dl-exec'; +import { create, type Flags } from 'youtube-dl-exec'; import { env } from '$env/dynamic/private'; import { spawn } from 'node:child_process'; -import supportedFormats from '$lib/common/supportedFormats.json'; import { logger, mimeTypeMap } from '$lib/server/helpers'; const YTDLP_PATH: string = env.YTDLP_PATH as string; @@ -13,7 +12,7 @@ export const ytdl = create(YTDLP_PATH); * Fetch YouTube metadata (title, uploader/artist) */ export async function getYouTubeMetadata(link: string) { - const options = { + const options: Flags = { dumpSingleJson: true, noCheckCertificates: true, noWarnings: true, @@ -66,10 +65,13 @@ export function streamYouTube(link: string, format: string): ReadableStream { try { controller.enqueue(chunk); - } catch (ex) { + } catch () { process.kill(); } }); + + + process.stderr.on('data', (chunk) => logger.debug(chunk.toString())); process.stdout.on('end', () => { try { From 08a3ec3883c43bf775b2c561249bfec2de712b89 Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 23:55:20 +0200 Subject: [PATCH 18/25] pre commit autoformat won't block committing for this project --- src/lib/server/ytdlp.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/lib/server/ytdlp.ts b/src/lib/server/ytdlp.ts index 9e358a3..1a548ed 100644 --- a/src/lib/server/ytdlp.ts +++ b/src/lib/server/ytdlp.ts @@ -65,13 +65,11 @@ export function streamYouTube(link: string, format: string): ReadableStream { try { controller.enqueue(chunk); - } catch () { + } catch { process.kill(); } }); - - process.stderr.on('data', (chunk) => logger.debug(chunk.toString())); process.stdout.on('end', () => { try { From 749192667b0359d47c9796658e2e26ff1df57e4d Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Tue, 22 Apr 2025 23:56:16 +0200 Subject: [PATCH 19/25] Update ci --- .forgejo/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index c4bfccb..9ff6b3c 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -15,7 +15,7 @@ jobs: uses: actions/setup-node@v3 with: node-version: '20' - - name: Update deps, install them (to change package-lock.json) and commit + - name: Format things if needed run: | npm install npm run prepare From bf1c63e2e61ab748dc492a57a4ddf5d0cb6f1fcb Mon Sep 17 00:00:00 2001 From: 0d0 <0d0acre@esiliati.org> Date: Wed, 23 Apr 2025 00:03:17 +0200 Subject: [PATCH 20/25] Liste to warnings --- src/lib/components/Loader.svelte | 28 ---------------------------- src/routes/+page.svelte | 24 ++++++------------------ src/routes/download/+server.ts | 5 ++--- 3 files changed, 8 insertions(+), 49 deletions(-) delete mode 100644 src/lib/components/Loader.svelte diff --git a/src/lib/components/Loader.svelte b/src/lib/components/Loader.svelte deleted file mode 100644 index 4ea9b50..0000000 --- a/src/lib/components/Loader.svelte +++ /dev/null @@ -1,28 +0,0 @@ -
- -
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 39acccd..600806b 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,9 +1,7 @@