smolter
Types

RouteData

Derive data from a Preact loader or action type.

Compatibility

ReactAvailable in this renderer's browser integration.
React SSRAvailable to this renderer's SSR integration; browser event handlers run after hydration.
PreactAvailable in this renderer's browser integration.
Preact SSRAvailable to this renderer's SSR integration; browser event handlers run after hydration.

Import from @kasperrt/smolter/react @kasperrt/smolter/preact

Signature

type RouteData<T> = T extends (...args: never[]) => infer R
  ? UnwrapData<Exclude<Awaited<R>, Response | Error>>
  : T;

Contract

For a function type, takes its awaited return type, excludes Response and Error, and unwraps DataResponse<T> to T. For a non-function type, uses that type unchanged.

import type { RouteData } from "@kasperrt/smolter/preact";

import type { loader } from "../routes/tasks/loader";

export type TasksData = RouteData<typeof loader>;

Usage and limits

Use type-only handler imports in browser modules. A raw Response does not carry an inferable JSON payload type; return plain data or data(...) when inferred hook types are needed. This helper does not recursively Await nested fields.

View implementation ↗