import { ApolloError } from '@apollo/client/core'; import { readable } from 'svelte/store'; import { client } from '$config/apollo'; /* * This is a generic store for use with apollo */ export const store = function store({ key, query, initialValue = null, variables = {} }) { return readable({ loading: true, data: initialValue, error: undefined }, (set) => { const handleError = function (error) { return set({ loading: false, data: initialValue, error }); }; client.watchQuery({ query, variables }).subscribe((result) => { if (result.errors) { const error = new ApolloError({ graphQLErrors: result.errors }); return handleError(error); } set({ loading: false, data: result.data[key], error: undefined }); }, (error) => handleError(error)); }); };