SolidJS

Fine-grained reactive primitives using createSignal, createEffect, createMemo. Input is a getter () => value. Returns signal accessors — call them to read: data().

Setup

toml
# metaxy.config.toml
[output]
solid = "src/lib/rpc.solid.ts"

or via CLI

sh
metaxy generate --solid-output src/lib/rpc.solid.ts

createQuery

ts
import { createQuery } from './rpc.solid';
import { rpc } from './client';
import { createSignal } from 'solid-js';

const [page, setPage] = createSignal(1);

// Getter input — fine-grained reactivity
const users = createQuery(rpc, 'list_users', () => page(), {
  enabled: () => page() > 0,
  refetchInterval: 30000,
});

// Access via signal accessors
users.data()       // T | undefined
users.error()      // RpcError | undefined
users.isLoading()  // boolean
users.isSuccess()  // boolean (memo)
users.refetch()    // manual refetch

createMutation

ts
import { createMutation } from './rpc.solid';

const create = createMutation(rpc, 'create_user', {
  onSuccess: (data) => console.log('Created:', data),
  onError: (err) => console.error(err),
});

// Fire-and-forget
create.mutate({ name: 'Alice' });

// Await the result
const user = await create.mutateAsync({ name: 'Alice' });

// Access via signal accessors
create.data()       // T | undefined
create.error()      // RpcError | undefined
create.isLoading()  // boolean
create.isSuccess()  // boolean (memo)
create.isError()    // boolean (memo)
create.reset()      // clear state

visit GitHub to learn more about metaxy