diff --git a/.deepsource.toml b/.deepsource.toml
deleted file mode 100644
index e5ec308..0000000
--- a/.deepsource.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-version = 1
-
-[[analyzers]]
-name = "javascript"
-
- [analyzers.meta]
- environment = ["nodejs"]
\ No newline at end of file
diff --git a/bun.lockb b/bun.lockb
index d5d7902..a30146c 100755
Binary files a/bun.lockb and b/bun.lockb differ
diff --git a/eslint.config.js b/eslint.config.js
index 0405ce8..45f0fab 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -1,28 +1,23 @@
-import comments from "@eslint-community/eslint-plugin-eslint-comments/configs";
import { fixupPluginRules } from "@eslint/compat";
-import js from "@eslint/js";
+import eslint from "@eslint/js";
import deprecationPlugin from "eslint-plugin-deprecation";
-import importPlugin from "eslint-plugin-import";
+import eslintPluginReadableTailwind from "eslint-plugin-readable-tailwind";
import simpleImportSortPlugin from "eslint-plugin-simple-import-sort";
import tailwind from "eslint-plugin-tailwindcss";
import globals from "globals";
import tseslint from "typescript-eslint";
-
export default tseslint.config(
- js.configs.recommended,
- importPlugin.flatConfigs.recommended,
- comments.recommended,
+ eslint.configs.recommended,
...tseslint.configs.recommended,
...tailwind.configs["flat/recommended"],
{
plugins: {
- "@typescript-eslint": tseslint.plugin,
deprecation: fixupPluginRules(deprecationPlugin),
- import: fixupPluginRules(importPlugin),
"simple-import-sort": simpleImportSortPlugin,
+ "readable-tailwind": eslintPluginReadableTailwind,
},
- ignores: ["**/node_modules/**", "**/public/**"],
+ ignores: ["**/node_modules/**"],
languageOptions: {
parserOptions: {
projectService: true,
@@ -36,12 +31,20 @@ export default tseslint.config(
...globals.browser,
},
},
- files: ["**/*.{js,mjs,cjs}"],
+ files: ["**/*.{js,mjs,cjs,tsx,ts}"],
rules: {
- "tailwindcss/no-custom-classname": [
- "error",
+ ...eslintPluginReadableTailwind.configs.warning.rules,
+ "tailwindcss/classnames-order": "off",
+ "readable-tailwind/multiline": [
+ "warn",
+ {
+ group: "newLine",
+ printWidth: 100,
+ },
+ ],
+ "tailwindcss/no-custom-classname": [
+ "warn",
{
- config: "./tailwind.config.js",
whitelist: [
"select_container",
"convert_to_popup",
@@ -51,7 +54,6 @@ export default tseslint.config(
],
},
],
- "import/no-named-as-default": "off",
},
},
-);
\ No newline at end of file
+);
diff --git a/package.json b/package.json
index 9df3eae..20776fa 100644
--- a/package.json
+++ b/package.json
@@ -4,12 +4,12 @@
"scripts": {
"dev": "bun run --watch src/index.tsx",
"hot": "bun run --hot src/index.tsx",
- "format": "biome format --write ./src",
- "build": "postcss ./src/main.css -o ./src/public/generated.css",
+ "format": "eslint --fix .",
+ "build": "postcss ./src/main.css -o ./src/public/generated.css",
"lint": "run-p 'lint:*'",
"lint:tsc": "tsc --noEmit",
"lint:knip": "knip",
- "lint:biome": "biome lint --error-on-warnings ./src"
+ "lint:eslint": "eslint ."
},
"dependencies": {
"@elysiajs/cookie": "^0.8.0",
@@ -24,13 +24,10 @@
"start": "bun run src/index.tsx"
},
"devDependencies": {
- "@biomejs/biome": "1.9.3",
- "@eslint-community/eslint-plugin-eslint-comments": "^4.4.0",
"@eslint/compat": "^1.1.1",
- "@eslint/js": "^9.11.1",
+ "@eslint/js": "^9.12.0",
"@ianvs/prettier-plugin-sort-imports": "^4.3.1",
"@kitajs/ts-html-plugin": "^4.1.0",
- "@picocss/pico": "^2.0.6",
"@total-typescript/ts-reset": "^0.6.1",
"@types/bun": "^1.1.10",
"@types/eslint": "^9.6.1",
@@ -41,12 +38,12 @@
"@typescript-eslint/parser": "^8.7.0",
"autoprefixer": "^10.4.20",
"cssnano": "^7.0.6",
- "eslint": "^9.11.1",
+ "eslint": "^9.12.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-deprecation": "^3.0.0",
- "eslint-plugin-import": "^2.30.0",
"eslint-plugin-isaacscript": "^4.0.0",
"eslint-plugin-prettier": "^5.2.1",
+ "eslint-plugin-readable-tailwind": "^1.8.1",
"eslint-plugin-simple-import-sort": "^12.1.1",
"eslint-plugin-tailwindcss": "^3.17.4",
"globals": "^15.9.0",
@@ -59,9 +56,6 @@
"tailwind-scrollbar": "^3.1.0",
"tailwindcss": "^3.4.13",
"typescript": "^5.6.2",
- "typescript-eslint": "^8.7.0"
- },
- "trustedDependencies": [
- "@biomejs/biome"
- ]
+ "typescript-eslint": "^8.8.0"
+ }
}
\ No newline at end of file
diff --git a/postcss.config.cjs b/postcss.config.cjs
index f8fd003..b18fd44 100644
--- a/postcss.config.cjs
+++ b/postcss.config.cjs
@@ -1,9 +1,9 @@
-// eslint-disable-next-line no-undef
+
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
- // eslint-disable-next-line no-undef
+
...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {})
}
}
\ No newline at end of file
diff --git a/renovate.json b/renovate.json
index 5db72dd..83ae79a 100644
--- a/renovate.json
+++ b/renovate.json
@@ -1,6 +1,7 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
- "config:recommended"
+ "config:recommended",
+ ":disableDependencyDashboard"
]
-}
+}
\ No newline at end of file
diff --git a/src/components/header.tsx b/src/components/header.tsx
index 500d182..5526d89 100644
--- a/src/components/header.tsx
+++ b/src/components/header.tsx
@@ -5,17 +5,23 @@ export const Header = ({
let rightNav: JSX.Element;
if (loggedIn) {
rightNav = (
-
+
-
History
-
Logout
@@ -27,7 +33,10 @@ export const Header = ({
-
Login
@@ -35,7 +44,10 @@ export const Header = ({
{accountRegistration ? (
-
Register
diff --git a/src/converters/assimp.ts b/src/converters/assimp.ts
index b3c9f1a..1ef7c6a 100644
--- a/src/converters/assimp.ts
+++ b/src/converters/assimp.ts
@@ -116,8 +116,8 @@ export async function convert(
fileType: string,
convertTo: string,
targetPath: string,
- // biome-ignore lint/suspicious/noExplicitAny:
- options?: any,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ options?: unknown,
): Promise {
// let command = "ffmpeg";
diff --git a/src/converters/ffmpeg.ts b/src/converters/ffmpeg.ts
index 01437eb..9a8f63c 100644
--- a/src/converters/ffmpeg.ts
+++ b/src/converters/ffmpeg.ts
@@ -690,7 +690,7 @@ export async function convert(
convertTo: string,
targetPath: string,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
- _options?: unknown,
+ options?: unknown,
): Promise {
let extra = "";
diff --git a/src/converters/graphicsmagick.ts b/src/converters/graphicsmagick.ts
index 83b76b7..cde4a4a 100644
--- a/src/converters/graphicsmagick.ts
+++ b/src/converters/graphicsmagick.ts
@@ -313,8 +313,8 @@ export function convert(
fileType: string,
convertTo: string,
targetPath: string,
- // biome-ignore lint/suspicious/noExplicitAny:
- options?: any,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ options?: unknown,
): Promise {
return new Promise((resolve, reject) => {
exec(
diff --git a/src/converters/libjxl.ts b/src/converters/libjxl.ts
index aabf531..cb828f2 100644
--- a/src/converters/libjxl.ts
+++ b/src/converters/libjxl.ts
@@ -39,8 +39,8 @@ export function convert(
fileType: string,
convertTo: string,
targetPath: string,
- // biome-ignore lint/suspicious/noExplicitAny:
- options?: any,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ options?: unknown,
): Promise {
let tool = "";
if (fileType === "jxl") {
diff --git a/src/converters/main.ts b/src/converters/main.ts
index f477116..6a68e85 100644
--- a/src/converters/main.ts
+++ b/src/converters/main.ts
@@ -1,67 +1,64 @@
-import {
- convert as convertImage,
- properties as propertiesImage
-} from "./vips";
-
+import { normalizeFiletype } from "../helpers/normalizeFiletype";
import {
- convert as convertPandoc,
- properties as propertiesPandoc,
-} from "./pandoc";
-
+ convert as convertassimp,
+ properties as propertiesassimp,
+} from "./assimp";
import {
convert as convertFFmpeg,
properties as propertiesFFmpeg,
} from "./ffmpeg";
-
import {
convert as convertGraphicsmagick,
properties as propertiesGraphicsmagick,
} from "./graphicsmagick";
-
+import {
+ convert as convertLibjxl,
+ properties as propertiesLibjxl,
+} from "./libjxl";
+import {
+ convert as convertPandoc,
+ properties as propertiesPandoc,
+} from "./pandoc";
+import {
+ convert as convertresvg,
+ properties as propertiesresvg,
+} from "./resvg";
+import { convert as convertImage, properties as propertiesImage } from "./vips";
import {
convert as convertxelatex,
properties as propertiesxelatex,
} from "./xelatex";
-import {
- convert as convertLibjxl,
- properties as propertiesLibjxl,
-} from "./libjxl";
-
-import {
- convert as convertresvg,
- properties as propertiesresvg,
-} from "./resvg";
-
-import {
- convert as convertassimp,
- properties as propertiesassimp,
-} from "./assimp";
-
-import { normalizeFiletype } from "../helpers/normalizeFiletype";
-
// This should probably be reconstructed so that the functions are not imported instead the functions hook into this to make the converters more modular
-const properties: Record;
to: Record;
- options?: Record>;
+ }
+ >
+ >;
};
converter: (
filePath: string,
fileType: string,
convertTo: string,
targetPath: string,
- // biome-ignore lint/suspicious/noExplicitAny:
- options?: any,
- // biome-ignore lint/suspicious/noExplicitAny:
- ) => any;
- }> = {
+
+ options?: unknown,
+ ) => unknown;
+ }
+> = {
libjxl: {
properties: propertiesLibjxl,
converter: convertLibjxl,
@@ -99,24 +96,20 @@ const properties: Record
- convertTo: any,
+ convertTo: string,
targetPath: string,
- // biome-ignore lint/suspicious/noExplicitAny:
- options?: any,
+ options?: unknown,
converterName?: string,
) {
const fileType = normalizeFiletype(fileTypeOriginal);
- // biome-ignore lint/suspicious/noExplicitAny:
- let converterFunc: any;
+ let converterFunc: ((filePath: string, fileType: string, convertTo: string, targetPath: string, options?: unknown) => unknown) | undefined;
// let converterName = converterName;
if (converterName) {
converterFunc = properties[converterName]?.converter;
} else {
// Iterate over each converter in properties
- // biome-ignore lint/style/noParameterAssign:
for (converterName in properties) {
const converterObj = properties[converterName];
@@ -190,9 +183,7 @@ for (const converterName in properties) {
}
}
-export const getPossibleTargets = (
- from: string,
-): Record => {
+export const getPossibleTargets = (from: string): Record => {
const fromClean = normalizeFiletype(from);
return possibleTargets[fromClean] || {};
@@ -216,6 +207,7 @@ for (const converterName in properties) {
}
possibleInputs.sort();
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
const getPossibleInputs = () => {
return possibleInputs;
};
diff --git a/src/converters/pandoc.ts b/src/converters/pandoc.ts
index c86a9e0..e43dc5f 100644
--- a/src/converters/pandoc.ts
+++ b/src/converters/pandoc.ts
@@ -124,8 +124,8 @@ export function convert(
fileType: string,
convertTo: string,
targetPath: string,
- // biome-ignore lint/suspicious/noExplicitAny:
- options?: any,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ options?: unknown,
): Promise {
// set xelatex here
const xelatex = ["pdf", "latex"];
diff --git a/src/converters/resvg.ts b/src/converters/resvg.ts
index a93ea7d..ebba700 100644
--- a/src/converters/resvg.ts
+++ b/src/converters/resvg.ts
@@ -14,8 +14,8 @@ export function convert(
fileType: string,
convertTo: string,
targetPath: string,
- // biome-ignore lint/suspicious/noExplicitAny:
- options?: any,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ options?: unknown,
): Promise {
return new Promise((resolve, reject) => {
exec(`resvg "${filePath}" "${targetPath}"`, (error, stdout, stderr) => {
diff --git a/src/converters/vips.ts b/src/converters/vips.ts
index 09f3d68..65f8acd 100644
--- a/src/converters/vips.ts
+++ b/src/converters/vips.ts
@@ -94,8 +94,8 @@ export function convert(
fileType: string,
convertTo: string,
targetPath: string,
- // biome-ignore lint/suspicious/noExplicitAny:
- options?: any,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ options?: unknown,
): Promise {
// if (fileType === "svg") {
// const scale = options.scale || 1;
diff --git a/src/converters/xelatex.ts b/src/converters/xelatex.ts
index 2496785..fda01f4 100644
--- a/src/converters/xelatex.ts
+++ b/src/converters/xelatex.ts
@@ -14,8 +14,8 @@ export function convert(
fileType: string,
convertTo: string,
targetPath: string,
- // biome-ignore lint/suspicious/noExplicitAny:
- options?: any,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ options?: unknown,
): Promise {
return new Promise((resolve, reject) => {
// const fileName: string = (targetPath.split("/").pop() as string).replace(".pdf", "")
diff --git a/src/index.tsx b/src/index.tsx
index f2658b5..da51b5f 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -141,7 +141,9 @@ const app = new Elysia({
Welcome to ConvertX!
-
+