feat: add formidable ESLint + Prettier linting setup
Some checks failed
Build and Push Backend Image / build (push) Successful in 47s
Build and Push Frontend Image / build (push) Has been cancelled

- Root-level eslint.config.js (flat config): typescript-eslint,
  eslint-plugin-svelte, eslint-config-prettier, @eslint/js
- Root-level prettier.config.js with prettier-plugin-svelte
- svelte-check added to frontend for Svelte/TS type checking
- lint, lint:fix, format, format:check, check scripts in root
  and both packages
- All 60 lint errors fixed across backend and frontend:
  - Consistent type imports
  - Removed unused imports/variables
  - Added keys to all {#each} blocks for Svelte performance
  - Replaced mutable Set/Map with SvelteSet/SvelteMap
  - Fixed useless assignments and empty catch blocks
- 64 remaining warnings are intentional any usages in the
  Pothos/Drizzle GraphQL resolver layer

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-04 22:24:55 +01:00
parent 741e0c3387
commit 18116072c9
43 changed files with 1023 additions and 5048 deletions

View File

@@ -200,7 +200,7 @@ const filteredVideos = $derived(() => {
<!-- Videos Grid -->
<div class="container mx-auto px-4 py-12">
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{#each filteredVideos() as video}
{#each filteredVideos() as video (video.slug)}
<Card
class="p-0 group hover:shadow-2xl hover:shadow-primary/25 transition-all duration-500 hover:-translate-y-3 bg-gradient-to-br from-card/90 via-card/95 to-card/85 backdrop-blur-xl shadow-lg shadow-primary/10 overflow-hidden"
>

View File

@@ -33,7 +33,7 @@ let commentError = $state();
let currentPlayId = $state<string | null>(null);
let lastTrackedTime = $state(0);
const relatedVideos = [
const _relatedVideos = [
{
id: 2,
title: "Sunset Dreams",
@@ -94,7 +94,7 @@ async function handleLike() {
}
}
function handleBookmark() {
function _handleBookmark() {
isBookmarked = !isBookmarked;
}
@@ -279,7 +279,7 @@ let showPlayer = $state(false);
/>
<!-- <Button
variant={isBookmarked ? "default" : "outline"}
onclick={handleBookmark}
onclick={_handleBookmark}
class="flex items-center gap-2 {isBookmarked
? 'bg-gradient-to-r from-primary to-accent'
: 'border-primary/20 hover:bg-primary/10'}"
@@ -291,7 +291,7 @@ let showPlayer = $state(false);
<!-- Model Info -->
<div class="grid grid-cols-1 gap-4">
{#each data.video.models as model}
{#each data.video.models as model (model.slug)}
<div class="flex items-center justify-between">
<div class="flex items-center gap-4">
<a href={`/models/${model.slug}`}>
@@ -341,7 +341,7 @@ let showPlayer = $state(false);
<CardContent class="p-4">
<p class="text-muted-foreground mb-4">{data.video.description}</p>
<div class="flex flex-wrap gap-2">
{#each data.video.tags as tag}
{#each data.video.tags as tag (tag)}
<a
class="text-xs bg-primary/10 text-primary px-2 py-1 rounded-full"
href="/tags/{tag}"
@@ -438,7 +438,7 @@ let showPlayer = $state(false);
{#if showComments}
<!-- Comments List -->
<div class="space-y-4">
{#each data.comments as comment}
{#each data.comments as comment (comment.id)}
<div class="flex gap-3">
<a href="/users/{comment.user_created.id}" class="flex-shrink-0">
<Avatar