UseLiveQueryReturn is missing fields that electric appends
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 68/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- typescript
- Área
- frontend
Línea de trabajo
Comienza localizando las definiciones de TypeScript para UseLiveQueryReturn y el tipo de retorno de live query de ElectricCollection; después, compáralas con los campos añadidos por Electric. Reproduce el ejemplo de Action y verifica que el resultado inferido de useLiveQuery satisface UseElectricLiveQueryReturn sin un workaround.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
- I've validated the bug against the latest version of DB packages
Describe the bug
UseLiveQueryReturn when used agains a ElectricCollection, doesn't match what actually a useLiveQuery returns for a query from an electric collection.
To Reproduce
Steps to reproduce the behavior:
- Create zod schema
import { z } from 'zod/v4';
export const actionSchema = z.object({
id: z.string().uuid(),
label: z.string(),
// ... wathever...
});
export type Action = z.infer<typeof actionSchema>;
- Create a collection
const electricOpts = electricCollectionOptions({
id: 'actions',
schema: actionSchema,
getKey: (item) => item.id,
shapeOptions: {
url: `${env.PUBLIC_URL}/shapes/actions`,
subsetMethod: 'POST',
columnMapper: snakeCamelMapper(),
},
});
export const actionsCollection = createCollection(electricOpts);
- Query it using live query (in svelte in this case, and inside of a class)
#query: UseElectricLiveQueryReturn<Action> | null = $state(null);
// ...class stuff...
this.#query = useLiveQuery((q) =>
q.from({ a: actionsCollection }).orderBy(({ a }) => a.createdAt, 'desc').limit(50),
);
- Expect a type error that the query is missing
{ readonly $synced: boolean; readonly $origin: VirtualOrigin; readonly $key: string | number; readonly $collectionId: string; }from the original type passed (Actionin this case)
Expected behavior
Type should match correctly when inferring from UseElectricLiveQueryReturn<Action>
Workaround
I've created the follow type util to help me while this is an issue
import type { UseLiveQueryReturn, VirtualOrigin } from "@tanstack/svelte-db";
export type UseElectricLiveQueryReturn<T extends object> = UseLiveQueryReturn<T & {
readonly $synced: boolean; readonly $origin: VirtualOrigin; readonly $key: string | number; readonly $collectionId: string;
}>;
- Lenguaje dominante
- TypeScript
- Estrellas
- 3.9k
- Forks
- 268
- Merge medio
- 1 d 3 h
- PR fusionados (30 d)
- 148
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de TanStack/db
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 50/100
TanStack/db#1992 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
useLiveQuery({ query }) keeps a cleaned source after same-ID collection instance replacementAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
TanStack/db#1991 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Los mantenedores suelen responder en 1 día
Todos los issues de TanStack/db
Issues similares
-
level/task reporter/qa type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
wazuh/wazuh-dashboard-plugins#9310 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
cybersemics/treecrdt#267 ·
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 85/100
wiz-sec-public/backstage-plugin-wiz#16 · 1 comentario ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
solana-foundation/solana-com#2245 ·
Los mantenedores suelen responder en 1 día