diff --git a/bun.lock b/bun.lock index 4337d87..c287351 100644 --- a/bun.lock +++ b/bun.lock @@ -12,17 +12,18 @@ "@fontsource/lexend": "^5.2.11", "@fontsource/radio-canada-big": "^5.2.7", "@imagemagick/magick-wasm": "^0.0.37", - "@stripe/stripe-js": "^8.7.0", "@mediabunny/ac3": "^1.35.1", + "@mediabunny/flac-encoder": "^1.37.0", "@mediabunny/mp3-encoder": "^1.35.1", + "@stripe/stripe-js": "^8.7.0", "byte-data": "^19.0.1", "client-zip": "^2.5.0", "clsx": "^2.1.1", "fflate": "^0.8.2", "lucide-svelte": "^0.554.0", + "mediabunny": "^1.37.0", "music-metadata": "^11.12.0", "overlayscrollbars": "^2.14.0", - "mediabunny": "^1.35.1", "overlayscrollbars-svelte": "^0.5.5", "p-queue": "^9.1.0", "riff-file": "^1.0.3", @@ -180,6 +181,8 @@ "@mediabunny/ac3": ["@mediabunny/ac3@1.35.1", "", { "peerDependencies": { "mediabunny": "^1.0.0" } }, "sha512-gLx3mFfs58/cdz2/f5Fp+6ZOrX5Jli3AZMXw/5EJcgm2VpnC/2oxtJyP1x/00PIS4UCE770slwIdz7U+2CQ31g=="], + "@mediabunny/flac-encoder": ["@mediabunny/flac-encoder@1.37.0", "", { "peerDependencies": { "mediabunny": "^1.0.0" } }, "sha512-VwKIL5p1WZE4dSwZ1SVv/bd2ksul8a4run4S1eEbPRysnG87nmCXddO5ajD3b2k2478XWitKnVDXl/kxdIIWBw=="], + "@mediabunny/mp3-encoder": ["@mediabunny/mp3-encoder@1.35.1", "", { "peerDependencies": { "mediabunny": "^1.0.0" } }, "sha512-iY6FcPs7GbHMs/ASPmdzwojKcBN4AfMa+zFh4KNZNaLToyR7aEZILj9FsPVJA11bshaoo80dTaBcn69i33JHVA=="], "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], @@ -640,7 +643,7 @@ "media-typer": ["media-typer@1.1.0", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="], - "mediabunny": ["mediabunny@1.35.1", "", { "dependencies": { "@types/dom-mediacapture-transform": "^0.1.11", "@types/dom-webcodecs": "0.1.13" } }, "sha512-VrprpjkLTZyIyhzBAc9D3HqgXarAE+le7+6x0Sdu9WN2SD86L8bUy0hz06Xwf14dVPqS7OwpY2KOhlUyqmI2eQ=="], + "mediabunny": ["mediabunny@1.37.0", "", { "dependencies": { "@types/dom-mediacapture-transform": "^0.1.11", "@types/dom-webcodecs": "0.1.13" } }, "sha512-eV7M9IJ29pr/8RNL1sYtIxNbdMfDMN1hMwMaOFfNLhwuKKGSC+eKwiJFpdVjEJ3zrMA4LGerF4Hps0SENFSAlg=="], "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], diff --git a/eslint.config.js b/eslint.config.js index a526565..b45523b 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,33 +1,39 @@ -import prettier from 'eslint-config-prettier'; -import js from '@eslint/js'; -import svelte from 'eslint-plugin-svelte'; -import globals from 'globals'; -import ts from 'typescript-eslint'; +import prettier from "eslint-config-prettier"; +import js from "@eslint/js"; +import svelte from "eslint-plugin-svelte"; +import globals from "globals"; +import ts from "typescript-eslint"; export default ts.config( js.configs.recommended, ...ts.configs.recommended, - ...svelte.configs['flat/recommended'], + ...svelte.configs["flat/recommended"], prettier, - ...svelte.configs['flat/prettier'], + ...svelte.configs["flat/prettier"], { languageOptions: { globals: { ...globals.browser, - ...globals.node - } - } + ...globals.node, + }, + }, }, { - files: ['**/*.svelte'], + files: ["**/*.svelte"], languageOptions: { parserOptions: { - parser: ts.parser - } - } + parser: ts.parser, + }, + }, }, { - ignores: ['build/', '.svelte-kit/', 'dist/'] - } + ignores: ["build/", ".svelte-kit/", "dist/"], + }, + { + files: ["**/*.ts", "**/*.svelte.ts"], + rules: { + "no-at-html-tags": "off", + }, + }, ); diff --git a/package.json b/package.json index 7f53746..3d264a1 100644 --- a/package.json +++ b/package.json @@ -45,18 +45,19 @@ "@fontsource/lexend": "^5.2.11", "@fontsource/radio-canada-big": "^5.2.7", "@imagemagick/magick-wasm": "^0.0.37", - "@stripe/stripe-js": "^8.7.0", "@mediabunny/ac3": "^1.35.1", + "@mediabunny/flac-encoder": "^1.37.0", "@mediabunny/mp3-encoder": "^1.35.1", + "@stripe/stripe-js": "^8.7.0", "byte-data": "^19.0.1", "client-zip": "^2.5.0", "clsx": "^2.1.1", "fflate": "^0.8.2", "lucide-svelte": "^0.554.0", + "mediabunny": "^1.37.0", "music-metadata": "^11.12.0", "overlayscrollbars": "^2.14.0", "overlayscrollbars-svelte": "^0.5.5", - "mediabunny": "^1.35.1", "p-queue": "^9.1.0", "riff-file": "^1.0.3", "sanitize-html": "^2.17.0", diff --git a/src/lib/components/functional/FormatDropdown.svelte b/src/lib/components/functional/FormatDropdown.svelte index 99f11ce..990d250 100644 --- a/src/lib/components/functional/FormatDropdown.svelte +++ b/src/lib/components/functional/FormatDropdown.svelte @@ -72,9 +72,10 @@ // decide which converters to use to detect category: // - if file provided, prefer its primary converter -- individual file dropdown // - if no file provided, use all converters from all files -- "set all to" dropdown + const primaryConverter = file ? (file.isZip() ? file.converters[0] : file.findConverters()[0]) : null; const convertersToCheck = file - ? file.findConverter() - ? [file.findConverter()!] + ? primaryConverter + ? [primaryConverter] : file.converters : files.files.flatMap((f) => f.converters); diff --git a/src/lib/components/functional/SettingsModal.svelte b/src/lib/components/functional/SettingsModal.svelte index dfc32a6..36a3174 100644 --- a/src/lib/components/functional/SettingsModal.svelte +++ b/src/lib/components/functional/SettingsModal.svelte @@ -1,4 +1,5 @@ {#snippet fileItem(file: VertFile, index: number)} - {@const currentConverter = file.findConverter()} + {@const currentConverter = file.isZip() ? file.converters[0] : file.findConverters()[0]} {@const isImage = currentConverter?.name === "imagemagick"} {@const isAudio = currentConverter?.name === "ffmpeg"} {@const isVideo = currentConverter?.name === "vertd"}