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,387 changes: 1,062 additions & 2,325 deletions package-lock.json

Large diffs are not rendered by default.

6 changes: 2 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,9 @@
"db:studio": "drizzle-kit studio"
},
"devDependencies": {
"@cloudflare/workers-types": "^4.20251224.0",
"@eslint/compat": "^1.4.0",
"@eslint/js": "^9.36.0",
"@inlang/paraglide-js": "^2.3.2",
"@sveltejs/adapter-cloudflare": "^7.2.4",
"@sveltejs/kit": "^2.43.2",
"@sveltejs/vite-plugin-svelte": "^6.2.0",
"@tailwindcss/typography": "^0.5.18",
Expand All @@ -48,11 +46,11 @@
"tailwindcss": "^4.1.13",
"typescript": "^5.9.2",
"typescript-eslint": "^8.44.1",
"vite": "^7.1.7",
"wrangler": "^4.53.0"
"vite": "^7.1.7"
},
"dependencies": {
"@libsql/client": "^0.15.15",
"@sveltejs/adapter-node": "^5.5.3",
"cloc": "^2.6.0-cloc",
"drizzle-orm": "^0.45.1",
"remixicon": "^4.7.0"
Expand Down
14 changes: 4 additions & 10 deletions src/app.d.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
import type { DrizzleD1Database } from 'drizzle-orm/d1';
import type { LibSQLDatabase } from 'drizzle-orm/libsql';
import * as schema from '$lib/server/db/schema';
import type { LibSQLDatabase } from "drizzle-orm/libsql";
import * as schema from "$lib/server/db/schema";

declare global {
namespace App {
// interface Error {}
interface Locals {
dev: boolean;
dblocal: LibSQLDatabase<typeof schema>;
dbprod: DrizzleD1Database<typeof schema>;
db: LibSQLDatabase<typeof schema>;
}
// interface PageData {}
// interface PageState {}
interface Platform {
env: {
CONCURRENCY: D1Database;
};
}
interface Platform {}
}
}

Expand Down
20 changes: 7 additions & 13 deletions src/hooks.server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,12 @@ const handleSecurity: Handle = async ({ event, resolve }) => {

let db: undefined | libsql.LibSQLDatabase<typeof schema> = undefined;
const handleMap: Handle = async ({ event, resolve }) => {
if (env.DEV == 'true') {
event.locals.dev = true;
if (!db) {
db = libsql.drizzle(env.DATABASE_URL ?? 'file:local.db', { schema });
}
event.locals.dblocal = db;
} else {
event.locals.dev = false;
event.locals.dbprod = d1.drizzle(event.platform?.env.CONCURRENCY as D1Database, { schema });
}

return resolve(event);
};
event.locals.dev = true;
if(!db) {
db = libsql.drizzle(env.DATABASE_URL ?? "file:local.db", { schema });
}
event.locals.db = db;
return resolve(event);
}

export const handle: Handle = sequence(handleMap, handleParaglide, handleSecurity);
30 changes: 5 additions & 25 deletions src/lib/server/concurrency/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,17 @@ import type { RequestEvent } from '@sveltejs/kit';
import * as schema from '$lib/server/db/schema';
import { count, eq, lte } from 'drizzle-orm';
import type { LibSQLDatabase } from 'drizzle-orm/libsql';
import type { DrizzleD1Database } from 'drizzle-orm/d1';

export const LAST_BEAT_AGE_FOR_ACTIVE = Math.trunc(BEAT_FREQUENCY * 1.25);

export const containsId = async (event: RequestEvent, key: string) => {
let db;
if (event.locals.dev) db = event.locals.dblocal;
else db = event.locals.dbprod;
let db = event.locals.db;

return (await db.select().from(schema.sessions).where(eq(schema.sessions.uuid, key))).length > 0;
};

export const updateId = async (event: RequestEvent, key: string) => {
let db;
if (event.locals.dev) db = event.locals.dblocal;
else db = event.locals.dbprod;
let db = event.locals.db;

await db
.insert(schema.sessions)
Expand All @@ -35,34 +30,19 @@ export const updateId = async (event: RequestEvent, key: string) => {
};

export const removeOld = async (event: RequestEvent, key: string) => {
let db;
if (event.locals.dev) db = event.locals.dblocal;
else db = event.locals.dbprod;
let db = event.locals.db;

await db.delete(schema.sessions).where(eq(schema.sessions.uuid, key));
};

export const getActive = async (event: RequestEvent) => {
const now = Date.now();

let db;
if (event.locals.dev) db = event.locals.dblocal;
else db = event.locals.dbprod;
let db = event.locals.db;

await db
.delete(schema.sessions)
.where(lte(schema.sessions.time, String(now - LAST_BEAT_AGE_FOR_ACTIVE)));

//shitty workaround
if (event.locals.dev) {
return (
await (db as LibSQLDatabase<typeof schema>).select({ count: count() }).from(schema.sessions)
)[0].count;
} else {
return (
await (db as DrizzleD1Database<typeof schema>)
.select({ count: count() })
.from(schema.sessions)
)[0].count;
}
return (await (db as LibSQLDatabase<typeof schema>).select({ count: count() }).from(schema.sessions))[0].count;
};
2 changes: 1 addition & 1 deletion src/routes/+layout.server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export const load = async (event) => {
playlist: event.cookies.get('playlist') as string,
millisecond: (event.cookies.get('millisecond') as string) == 'true',
journey: (event.cookies.get('journey') as string) == 'true',
countdown: new Date(parseInt(event.cookies.get('time'))),
countdown: new Date(parseInt(event.cookies.get('time')!)),
snow: parseInt(event.cookies.get('snow') as string)
};
};
2 changes: 1 addition & 1 deletion src/routes/+page.server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export const actions = {
time = Date.UTC(new Date().getUTCFullYear() + 1, 0, 1, 0, 0, 0, 0);
}

event.cookies.set('time', time, { path: '/' });
event.cookies.set('time', String(time), { path: '/' });
event.cookies.set(
'snow',
String(
Expand Down
4 changes: 4 additions & 0 deletions src/routes/modals/ChangelogModal.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@
<li>Fixed critical bugs</li>
</VersionItem>

<VersionItem version="1.0.5" date="22.2.2026">
<li>Changed hosting backend</li>
</VersionItem>

<Button
text="Close"
emoji="close-circle"
Expand Down
2 changes: 1 addition & 1 deletion src/routes/modals/SettingsModal.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

let { settingsModal = $bindable(false), data } = $props();

let hasDifferentTime = $state(
let hasDifferentTime = $derived(
data.countdown.getTime() + new Date().getTimezoneOffset() * 60 * 1000 !=
new Date(new Date().getFullYear() + 1, 0, 1, 0, 0, 0, 0).getTime()
);
Expand Down
11 changes: 4 additions & 7 deletions svelte.config.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import adapter from '@sveltejs/adapter-cloudflare';
import adapter from '@sveltejs/adapter-node';
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';

/** @type {import('@sveltejs/kit').Config} */
Expand All @@ -12,14 +12,14 @@ const config = {
directives: {
'default-src': ['none'],
'font-src': ['self', 'fonts.gstatic.com'],
'script-src': ['self', '*.cloudflare.com'],
'script-src': ['self'],
'object-src': ['self'],
'img-src': ['self'],
//sveltekit announcer issue + we use this
'style-src': ['self', 'fonts.googleapis.com', 'martinbykov.eu', 'unsafe-inline'],
'frame-ancestors': ['none'],
'connect-src': ['self'],
'frame-src': ['*.cloudflare.com', 'www.youtube-nocookie.com', 'youtube-nocookie.com', 'youtube.com', 'www.youtube.com', 'consent.youtube.com'],
'frame-src': ['www.youtube-nocookie.com', 'youtube-nocookie.com', 'youtube.com', 'www.youtube.com', 'consent.youtube.com'],
'media-src': ['self']
},
// must be specified with either the `report-uri` or `report-to` directives, or both
Expand All @@ -28,10 +28,7 @@ const config = {
},
mode: 'auto',
},
adapter: adapter({
config: "wrangler.jsonc",
fallback: 'plaintext'
}),
adapter: adapter(),
csrf: {
trustedOrigins: ['festies.martinbykov.eu', 'http://localhost:5173']
}
Expand Down
Loading
Loading