feat: upgrade to SvelteKit 3 and adapter-bun
Some checks failed
Test and deploy staging / staging (push) Failing after 43s
Some checks failed
Test and deploy staging / staging (push) Failing after 43s
Run the sveltekit-3 migration and finish its manual tasks:
- Move kit config into the sveltekit() Vite plugin; drop svelte.config.js
- Replace $lib with #lib subpath imports
- Declare env vars in src/env.ts and import them from $app/env/{private,public}
- Consolidate param matchers into src/params.ts
- Use error(status, message), Response.json, refreshAll and goto reset/shallow
- Fall back to a full page load when goto rejects a login return path
Switch from adapter-node to adapter-bun: the build script runs Vite under
Bun (the adapter requires it) and the image starts with `bun ./build`.
Runtime env names (PORT, BODY_SIZE_LIMIT, ADDRESS_HEADER, ...) are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { db } from '$lib/server/db';
|
||||
import { db } from '#lib/server/db/index.js';
|
||||
|
||||
export const load = async () => {
|
||||
return {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<script lang="ts">
|
||||
import { resolve } from '$app/paths';
|
||||
import { Button } from '$lib/components/ui/button/index.js';
|
||||
import { Badge } from '$lib/components/ui/badge/index.js';
|
||||
import { Input } from '$lib/components/ui/input/index.js';
|
||||
import * as Card from '$lib/components/ui/card/index.js';
|
||||
import ProgressBar from '$lib/components/ProgressBar.svelte';
|
||||
import { Button } from '#lib/components/ui/button/index.js';
|
||||
import { Badge } from '#lib/components/ui/badge/index.js';
|
||||
import { Input } from '#lib/components/ui/input/index.js';
|
||||
import * as Card from '#lib/components/ui/card/index.js';
|
||||
import ProgressBar from '#lib/components/ProgressBar.svelte';
|
||||
import type { PageProps } from './$types';
|
||||
|
||||
let { data }: PageProps = $props();
|
||||
@@ -31,8 +31,8 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex gap-2">
|
||||
<Button href={resolve('/projects/progress/topics')} variant="outline">Topics</Button
|
||||
>{#if data.editable}<Button href={resolve('/projects/progress/create')}>Create task</Button
|
||||
<Button href={resolve('projects/progress/topics')} variant="outline">Topics</Button
|
||||
>{#if data.editable}<Button href={resolve('projects/progress/create')}>Create task</Button
|
||||
>{/if}
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { isAdmin, requireAdmin } from '$lib/server/authorization';
|
||||
import { isAdmin, requireAdmin } from '#lib/server/authorization.js';
|
||||
import type { Actions, PageServerLoad } from './$types';
|
||||
import { db } from '$lib/server/db';
|
||||
import { tasks, tasksToTopics, topics } from '$lib/server/db/schema';
|
||||
import { db } from '#lib/server/db/index.js';
|
||||
import { tasks, tasksToTopics, topics } from '#lib/server/db/schema/index.js';
|
||||
import { eq, and } from 'drizzle-orm';
|
||||
|
||||
export const load: PageServerLoad = async (event) => {
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
<script lang="ts">
|
||||
import { NativeSelect } from '$lib/components/ui/native-select/index.js';
|
||||
import { NativeSelect } from '#lib/components/ui/native-select/index.js';
|
||||
import { resolve } from '$app/paths';
|
||||
import { Button } from '$lib/components/ui/button/index.js';
|
||||
import { Badge } from '$lib/components/ui/badge/index.js';
|
||||
import { Input } from '$lib/components/ui/input/index.js';
|
||||
import { Label } from '$lib/components/ui/label/index.js';
|
||||
import { Textarea } from '$lib/components/ui/textarea/index.js';
|
||||
import * as Card from '$lib/components/ui/card/index.js';
|
||||
import ProgressBar from '$lib/components/ProgressBar.svelte';
|
||||
import { Button } from '#lib/components/ui/button/index.js';
|
||||
import { Badge } from '#lib/components/ui/badge/index.js';
|
||||
import { Input } from '#lib/components/ui/input/index.js';
|
||||
import { Label } from '#lib/components/ui/label/index.js';
|
||||
import { Textarea } from '#lib/components/ui/textarea/index.js';
|
||||
import * as Card from '#lib/components/ui/card/index.js';
|
||||
import ProgressBar from '#lib/components/ProgressBar.svelte';
|
||||
import type { PageProps } from './$types';
|
||||
|
||||
let { data }: PageProps = $props();
|
||||
</script>
|
||||
|
||||
<div class="mx-auto max-w-4xl space-y-6 px-4 py-12 sm:px-6">
|
||||
<Button href={resolve('/projects/progress')} variant="ghost" size="sm">← All tasks</Button>
|
||||
<Button href={resolve('projects/progress')} variant="ghost" size="sm">← All tasks</Button>
|
||||
{#if data.task}
|
||||
<header>
|
||||
<h1 class="text-4xl font-semibold tracking-tight">{data.task.name}</h1>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { requireAdmin } from '$lib/server/authorization';
|
||||
import { requireAdmin } from '#lib/server/authorization.js';
|
||||
import type { Actions } from './$types';
|
||||
import { db } from '$lib/server/db';
|
||||
import { tasks } from '$lib/server/db/schema';
|
||||
import { db } from '#lib/server/db/index.js';
|
||||
import { tasks } from '#lib/server/db/schema/index.js';
|
||||
import { redirect } from '@sveltejs/kit';
|
||||
|
||||
export const actions: Actions = {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<script lang="ts">
|
||||
import { resolve } from '$app/paths';
|
||||
import { Button } from '$lib/components/ui/button/index.js';
|
||||
import { Input } from '$lib/components/ui/input/index.js';
|
||||
import { Label } from '$lib/components/ui/label/index.js';
|
||||
import * as Card from '$lib/components/ui/card/index.js';
|
||||
import { Button } from '#lib/components/ui/button/index.js';
|
||||
import { Input } from '#lib/components/ui/input/index.js';
|
||||
import { Label } from '#lib/components/ui/label/index.js';
|
||||
import * as Card from '#lib/components/ui/card/index.js';
|
||||
</script>
|
||||
|
||||
<div class="mx-auto max-w-xl space-y-6 px-4 py-12 sm:px-6">
|
||||
<Button href={resolve('/projects/progress')} variant="ghost" size="sm">← All tasks</Button>
|
||||
<Button href={resolve('projects/progress')} variant="ghost" size="sm">← All tasks</Button>
|
||||
<Card.Root
|
||||
><Card.Header><Card.Title>Create task</Card.Title></Card.Header><Card.Content
|
||||
><form method="POST" class="space-y-4">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { db } from '$lib/server/db';
|
||||
import { db } from '#lib/server/db/index.js';
|
||||
import type { PageServerLoad } from './$types';
|
||||
|
||||
export const load: PageServerLoad = async () => {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<script lang="ts">
|
||||
import { resolve } from '$app/paths';
|
||||
import * as Table from '$lib/components/ui/table/index.js';
|
||||
import { Button } from '$lib/components/ui/button/index.js';
|
||||
import * as Table from '#lib/components/ui/table/index.js';
|
||||
import { Button } from '#lib/components/ui/button/index.js';
|
||||
import type { PageProps } from './$types';
|
||||
let { data }: PageProps = $props();
|
||||
</script>
|
||||
|
||||
<div class="mx-auto max-w-4xl space-y-6 px-4 py-12 sm:px-6">
|
||||
<Button href={resolve('/projects/progress')} variant="ghost" size="sm">← All tasks</Button>
|
||||
<Button href={resolve('projects/progress')} variant="ghost" size="sm">← All tasks</Button>
|
||||
<h1 class="text-4xl font-semibold tracking-tight">topics</h1>
|
||||
<div class="overflow-hidden rounded-md border border-border">
|
||||
<Table.Root
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { db } from '$lib/server/db';
|
||||
import { db } from '#lib/server/db/index.js';
|
||||
|
||||
export const load = async ({ params }) => {
|
||||
return {
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
<script lang="ts">
|
||||
import { resolve } from '$app/paths';
|
||||
import { Button } from '$lib/components/ui/button/index.js';
|
||||
import * as Card from '$lib/components/ui/card/index.js';
|
||||
import { Button } from '#lib/components/ui/button/index.js';
|
||||
import * as Card from '#lib/components/ui/card/index.js';
|
||||
import type { PageProps } from './$types';
|
||||
let { data }: PageProps = $props();
|
||||
</script>
|
||||
|
||||
<div class="mx-auto max-w-4xl space-y-6 px-4 py-12 sm:px-6">
|
||||
<Button href={resolve('/projects/progress/topics')} variant="ghost" size="sm">← All topics</Button
|
||||
>
|
||||
<Button href={resolve('projects/progress/topics')} variant="ghost" size="sm">← All topics</Button>
|
||||
{#if data.topic}
|
||||
<h1 class="text-4xl font-semibold tracking-tight">{data.topic.name}</h1>
|
||||
<p class="text-muted-foreground">{data.topic.topicsToTasks.length} tasks</p>
|
||||
|
||||
Reference in New Issue
Block a user