UNPKG

@equinor/fusion-query

Version:

Reactive data fetching and caching library with observable streams and comprehensive event system

75 lines (74 loc) 3.21 kB
/** * Represents a single record in the query cache with generic types for the value and arguments. * @typeParam TType - The type of the value stored in the cache record. * @typeParam TArgs - The type of the arguments associated with the cache record. */ export type QueryCacheRecord<TType = unknown, TArgs = unknown> = { /** * The value of the cache record, which can be of any type. */ value: TType; /** * The arguments associated with the cache record, which can be of any type. */ args: TArgs; uuid?: string; /** * A unique identifier for the transaction associated with the cache record. */ transaction: string; /** * The timestamp when the cache record was created, represented as a number. */ created: number; /** * An optional timestamp when the cache record was last updated, represented as a number. */ updated?: number; /** * An optional count of how many times the cache record has been updated. */ updates?: number; /** * An optional timestamp when the cache record was last mutated, represented as a number. */ mutated?: number; }; /** * Defines the shape of the state data for the query cache, which is a record where keys are strings * and values are QueryCacheRecord instances with generic types for the value and arguments. * @typeParam TType - The type of the value stored in the cache records. * @typeParam TArgs - The type of the arguments associated with the cache records. */ export type QueryCacheStateData<TType = unknown, TArgs = unknown> = Record<string, QueryCacheRecord<TType, TArgs>>; /** * Represents a mutation to be applied to the query cache. * @typeParam TType - The type of the value to be mutated in the cache. */ export type QueryCacheMutation<TType = unknown> = { /** * The new value to be set in the cache record. */ value: TType; /** * An optional timestamp when the mutation occurred, represented as a number. */ updated?: number; }; /** * Represents the state of the query cache, which is a mapping from string keys to QueryCacheRecord instances. * @typeParam TType - The type of the value stored in the cache records. * @typeParam TArgs - The type of the arguments associated with the cache records. */ export type QueryCacheState<TType = unknown, TArgs = unknown> = QueryCacheStateData<TType, TArgs>; /** * Defines a function type for sorting cache records, taking two QueryCacheRecord instances and * returning a number indicating their sort order. * @typeParam TType - The type of the value stored in the cache records. * @typeParam TArgs - The type of the arguments associated with the cache records. * @param a - The first QueryCacheRecord instance for comparison. * @param b - The second QueryCacheRecord instance for comparison. * @returns A number that determines the order of the records; a negative number if `a` should come before `b`, * zero if they are considered equal, or a positive number if `a` should come after `b`. */ export type CacheSortFn<TType = any, TArgs = any> = (a: QueryCacheRecord<TType, TArgs>, b: QueryCacheRecord<TType, TArgs>) => number;