@appello/services
Version:
Services package with api / graphql
17 lines (16 loc) • 949 B
TypeScript
import { Unidentifiable } from '@appello/common';
export type CacheItem<T, Id> = {
type: T;
id: Id;
};
export type CacheList<T, Id> = (CacheItem<T, 'LIST'> | CacheItem<T, Id>)[];
type InnerProvidesList<T> = <Results extends {
id: unknown;
}[]>(results: Unidentifiable<Results>) => CacheList<T, Results[number]['id']>;
export declare const providesList: <T extends string>(type: T) => InnerProvidesList<T>;
export declare const invalidatesList: <T extends string>(type: T) => () => readonly [CacheItem<T, "LIST">];
export declare const cacheByIdArg: <T extends string>(type: T) => <Id, Result = undefined, Error = undefined>(result: Result, error: Error, id: Id) => readonly [CacheItem<T, Id>];
export declare const cacheByIdArgProperty: <T extends string>(type: T) => <Arg extends {
id: unknown;
}, Result = undefined, Error = undefined>(result: Result, error: Error, arg: Arg) => readonly [CacheItem<T, Arg["id"]>] | [];
export {};