Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ yarn.lock
# Ignore scripts folder
scripts/

# Generated Supabase types (kept byte-identical to `supabase gen types` output)
src/lib/types/database.ts

# Ignore Playwright artifacts
test-results/
playwright-report/
Expand Down
3 changes: 3 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url));

export default ts.config(
includeIgnoreFile(gitignorePath),
// Generated Supabase types are kept byte-identical to the `supabase gen types`
// output, so they are exempt from lint/format rules.
{ ignores: ['src/lib/types/database.ts'] },
js.configs.recommended,
...ts.configs.recommended,
...svelte.configs.recommended,
Expand Down
4 changes: 3 additions & 1 deletion src/lib/queries/contestQueries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,9 @@ export async function fetchContestFeedback(): Promise<Record<string, 'like' | 'd
console.error('Error fetching user contest feedback:', error);
return {};
}
return Object.fromEntries(data.map((item) => [item.contest_id, item.feedback_type]));
return Object.fromEntries(
data.map((item) => [item.contest_id, item.feedback_type as 'like' | 'dislike' | null])
);
} catch (error) {
console.error('Failed to fetch user contest feedback:', error);
return {};
Expand Down
4 changes: 3 additions & 1 deletion src/lib/queries/problemQueries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,9 @@ export async function fetchProblemFeedback(): Promise<Record<string, 'like' | 'd
console.error('Error fetching user feedback:', error);
return {};
}
return Object.fromEntries(data.map((item) => [item.problem_id, item.feedback_type]));
return Object.fromEntries(
data.map((item) => [item.problem_id, item.feedback_type as 'like' | 'dislike' | null])
);
} catch (error) {
console.error('Failed to fetch user feedback:', error);
return {};
Expand Down
5 changes: 3 additions & 2 deletions src/lib/server/authorization.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import { json } from '@sveltejs/kit';
import { createClient, type SupabaseClient } from '@supabase/supabase-js';
import { PUBLIC_SUPABASE_ANON_KEY, PUBLIC_SUPABASE_URL } from '$env/static/public';
import type { Database } from '$lib/types/database';

export type AuthorizedUser = {
authorized: true;
userId: string;
supabase: SupabaseClient;
supabase: SupabaseClient<Database>;
};

export type AuthorizationDenied = {
Expand All @@ -28,7 +29,7 @@ export async function requireUser(request: Request): Promise<AuthorizationResult
};
}

const supabase = createClient(PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY, {
const supabase = createClient<Database>(PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY, {
global: { headers: { Authorization: `Bearer ${token}` } },
auth: { persistSession: false, autoRefreshToken: false }
});
Expand Down
3 changes: 2 additions & 1 deletion src/lib/services/database.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { createClient } from '@supabase/supabase-js';
import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/public';
import type { Database } from '$lib/types/database';

const supabaseUrl = PUBLIC_SUPABASE_URL;
const supabaseKey = PUBLIC_SUPABASE_ANON_KEY;

export const supabase = createClient(supabaseUrl, supabaseKey);
export const supabase = createClient<Database>(supabaseUrl, supabaseKey);
Loading
Loading