UNPKG

@cross-nft-marketplace/auction-house-nft-hooks

Version:

Generic react hooks for fetching cross-nft-marketplace auctions, nfts, and data on arbitary 721s. Powers nft-components.

95 lines (94 loc) 3.35 kB
/** * Copyright (c) 2019-present, GraphQL Foundation * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow strict */ export declare type BatchLoadFn<K, V> = (keys: ReadonlyArray<K>) => Promise<ReadonlyArray<V | Error>>; export declare type Options<K, V, C = K> = { batch?: boolean; maxBatchSize?: number; batchScheduleFn?: (callback: () => void) => void; cache?: boolean; cacheKeyFn?: (key: K) => C; cacheMap?: CacheMap<C, Promise<V>> | null; }; export declare type CacheMap<K, V> = { get(key: K): V | void; set(key: K, value: V): any; delete(key: K): any; clear(): any; }; /** * A `DataLoader` creates a public API for loading data from a particular * data back-end with unique keys such as the `id` column of a SQL table or * document name in a MongoDB database, given a batch loading function. * * Each `DataLoader` instance contains a unique memoized cache. Use caution when * used in long-lived applications or those which serve many users with * different access permissions and consider creating a new instance per * web request. */ export declare class DataLoader<K, V, C = K> { constructor(batchLoadFn: BatchLoadFn<K, V>, options?: Options<K, V, C>); _batchLoadFn: BatchLoadFn<K, V>; _maxBatchSize: number; _batchScheduleFn: (callback: () => void) => void; _cacheKeyFn: (key: K) => C; _cacheMap: CacheMap<C, Promise<V>> | null; _batches: Batch<K, V>[]; /** * Loads a key, returning a `Promise` for the value represented by that key. */ load(key: K): Promise<V>; /** * Loads multiple keys, promising an array of values: * * var [ a, b ] = await myLoader.loadMany([ 'a', 'b' ]); * * This is similar to the more verbose: * * var [ a, b ] = await Promise.all([ * myLoader.load('a'), * myLoader.load('b') * ]); * * However it is different in the case where any load fails. Where * Promise.all() would reject, loadMany() always resolves, however each result * is either a value or an Error instance. * * var [ a, b, c ] = await myLoader.loadMany([ 'a', 'b', 'badkey' ]); * // c instanceof Error * */ loadMany(keys: ReadonlyArray<K>): Promise<Array<V | Error>>; /** * Clears the value at `key` from the cache, if it exists. Returns itself for * method chaining. */ clear(key: K): this; /** * Clears the entire cache. To be used when some event results in unknown * invalidations across this particular `DataLoader`. Returns itself for * method chaining. */ clearAll(): this; /** * Adds the provided key and value to the cache. If the key already * exists, no change is made. Returns itself for method chaining. * * To prime the cache with an error at a key, provide an Error instance. */ prime(key: K, value: V | Promise<V> | Error): this; } declare type Batch<K, V> = { keys: Array<K>; callbacks: Map<K, Array<{ resolve: (value: V) => void; reject: (error: Error) => void; }>>; cacheHits?: Array<() => void>; }; export {};