Skip to content

Query

Query wraps SvelteKit query(...) and makes the callable client-side surface return Effect.

ts
import { Query } from "svelte-effect-runtime";

Signatures

ts
type EffectQueryFunction<Input, Output, Error = never> =
  ((arg: OptionalArgument<Input>) =>
    Effect.Effect<Output, RemoteFailure<Error>, never>) & {
      native: RemoteQueryFunction<Input, Output>;
    };
ts
interface EffectQueryFactory {
  <Output, ErrorType, Requirements>(
    fn: () => Effect.Effect<Output, ErrorType, Requirements>
  ): EffectQueryFunction<void, Output, ErrorType>;

  <Input, Output, ErrorType, Requirements>(
    validate: "unchecked",
    fn: (arg: Input) => Effect.Effect<Output, ErrorType, Requirements>
  ): EffectQueryFunction<Input, Output, ErrorType>;

  <SchemaType extends EffectSchema, Output, ErrorType, Requirements>(
    validate: SchemaType,
    fn: (arg: SchemaOutput<SchemaType>) =>
      Effect.Effect<Output, ErrorType, Requirements>
  ): EffectQueryFunction<SchemaInput<SchemaType>, Output, ErrorType>;

  batch: typeof query_batch_factory;
}

Type model

  • Server callback input for schema overload: SchemaOutput<SchemaType>
  • Client callable input for schema overload: SchemaInput<SchemaType>
  • Client error type: RemoteFailure<ErrorType>

Query.batch

Query.batch follows the validator forms:

  • Query.batch("unchecked", fn)
  • Query.batch(schema, fn)

Unlike Query, Query.batch does not support the no-validator overload.

BSD-3-Clause