Lewati ke konten

Referensi API

Semua diimpor dari "bosia":

import { cn, sequence, error, redirect, fail } from "bosia";
import type { RequestEvent, LoadEvent, Handle, Cookies } from "bosia";

Gabungkan class Tailwind CSS dengan aman. Mengombinasikan clsx dan tailwind-merge.

cn("px-4 py-2", "px-6") // → "py-2 px-6"
cn("text-red-500", isActive && "text-blue-500")

Susun beberapa middleware Handle menjadi satu handler tunggal:

export const handle = sequence(auth, logging, rateLimit);

Handler dieksekusi dari kiri ke kanan. resolve pada setiap handler memanggil handler berikutnya.

Lempar error HTTP dari fungsi load(). Merender +error.svelte terdekat.

error(404, "Post not found"); // never returns

Redirect dari fungsi load() atau form action.

redirect(303, "/login"); // never returns

Kembalikan kegagalan validasi dari form action. Dikembalikan, bukan dilempar.

return fail(400, { email, errors: { email: "Required" } });

Tersedia di rute API (+server.ts) dan form actions.

type RequestEvent = {
request: Request;
url: URL;
locals: Record<string, any>;
params: Record<string, string>;
cookies: Cookies;
};

Tersedia di fungsi load() dalam +page.server.ts dan +layout.server.ts.

type LoadEvent = {
url: URL;
params: Record<string, string>;
locals: Record<string, any>;
cookies: Cookies;
fetch: (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
parent: () => Promise<Record<string, any>>;
metadata: Record<string, any> | null;
};

Tersedia di fungsi metadata() dalam +page.server.ts.

type MetadataEvent = {
params: Record<string, string>;
url: URL;
locals: Record<string, any>;
cookies: Cookies;
fetch: (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
};

Tipe kembalian untuk fungsi metadata().

type Metadata = {
title?: string;
description?: string;
meta?: Array<{ name?: string; property?: string; content: string }>;
data?: Record<string, any>;
};

Tipe fungsi middleware untuk hooks.server.ts.

type Handle = (input: {
event: RequestEvent;
resolve: ResolveFunction;
}) => MaybePromise<Response>;

Antarmuka baca/tulis cookie yang tersedia di event.cookies.

interface Cookies {
get(name: string): string | undefined;
getAll(): Record<string, string>;
set(name: string, value: string, options?: CookieOptions): void;
delete(name: string, options?: Pick<CookieOptions, "path" | "domain">): void;
}
interface CookieOptions {
path?: string;
domain?: string;
maxAge?: number; // seconds
expires?: Date;
httpOnly?: boolean;
secure?: boolean;
sameSite?: "Strict" | "Lax" | "None";
}

Kelas error yang dilempar oleh error().

class HttpError extends Error {
status: number;
}

Kelas redirect yang dilempar oleh redirect().

class Redirect {
status: number;
location: string;
}

Dikembalikan oleh fail() dalam form actions.

class ActionFailure<T extends Record<string, any>> {
status: number;
data: T;
}
interface CsrfConfig {
checkOrigin: boolean;
allowedOrigins?: string[];
}
interface CorsConfig {
allowedOrigins: string[];
allowedMethods?: string[];
allowedHeaders?: string[];
exposedHeaders?: string[];
credentials?: boolean;
maxAge?: number;
}
ImportSumber
import { cn, sequence } from "bosia"Paket framework
import { cn } from "$lib/utils"Utilitas proyek
import { VAR } from "$env"Variabel lingkungan
import type { PageData } from "./$types"Tipe yang digenerate