doublesharp/lru-cache-for-clusters-as-promised

View on GitHub
index.d.ts

Summary

Maintainability
A
0 mins
Test Coverage
import LRUCache from "lru-cache";

// https://github.com/doublesharp/lru-cache-for-clusters-as-promised#lru-cache-for-clusters-as-promised
declare module "lru-cache-for-clusters-as-promised" {

    interface LRUCaches {
        [key: string]: LRUCache
    }

    // https://github.com/doublesharp/lru-cache-for-clusters-as-promised#options
    interface cacheConstructorParam {
        // The namespace for this cache on the master thread as it is not aware of the worker instances.
        namespace?: string,
        // The amount of time in milliseconds that a worker will wait for a response from the master before rejecting the Promise.
        timeout?: number,
        // When a request times out the Promise will return resolve(undefined) by default, or with a value of reject the return will be reject(Error)
        failsafe?: "resolve" | "reject",
        // The maximum items that can be stored in the cache
        max?: number,
        // The maximum age for an item to be considered valid
        maxAge?: number,
        // When true expired items are return before they are removed rather than undefined
        stale?: boolean,
        // Use a cron job on the master thread to call prune() on your cache at regular intervals specified in "crontime", for example "*/30 * * * * *" would prune the cache every 30 seconds. Also works in single threaded environments not using the cluster module.
        prune?: false | string,
        // custom stringify function
        stringify?: function,
        // custom parse function
        parse?: function,
    }

    // https://github.com/doublesharp/lru-cache-for-clusters-as-promised#example-usage
    class Cache <G1 = never, G2 = never, G3 = never, G4 = never> {
        constructor(options?: cacheConstructorParam);

        // Call from the master to ensure that the listeners are enabled
        static init(): void
        
        // Called from the master to fetch unerlying LRUCaches keyed by namespace
        static getLruCaches(): LRUCaches

        // Load an instance asynchronously to ensure that the cache has been created on the master.
        static async getInstance(): Promise<Cache>

        // Get the underlying LRUCache on the master thread (throws exception on worker)
        getCache(): LRUCache

        // Execute arbitrary command (function) on the cache.
        async execute(command: string, ...args: any[]): Promise<any>

        // Sets a value for a key. Specifying the maxAge will cause the value to expire per the stale value or when pruned.
        async set(key: string, value: G1 | G2 | G3 | G4, maxAge?: number): Promise<void>

        // Sets a value for a key. Specifying the maxAge will cause the value to expire per the stale value or when pruned.
        async setObject(key: string, object: Object, maxAge?: number): Promise<void>

        // Sets multiple key-value pairs in the cache at one time.
        async mSet(keys: { [index: string]: string | number }, maxAge?: number): Promise<void>

        // Sets multiple key-value pairs in the cache at one time, where the value is an object.
        async mSetObjects(keys: { [index: string]: G1 | G2 | G3 | G4 }, maxAge?: number): Promise<void>

        // Returns a value for a key.
        async get(key: string): Promise<G1 | G2 | G3 | G4 | string | number>

        // Returns a value for a key.
        async getObject(key: string): Promise<Object>

        // Returns values for multiple keys, results are in the form of { key1: '1', key2: '2' }.
        async mGet(keys: Array<string>): Promise<{ [index: string]: string | number }>

        // Returns values as objects for multiple keys, results are in the form of { key1: '1', key2: '2' }.
        async mGetObjects(keys: Array<string>): Promise<{ [index: string]: G1 | G2 | G3 | G4 | string | number}>

        // Returns the value for a key without updating its last access time.
        async peek(key: string): Promise< G1 | G2 | G3 | G4 | string | number>

        // Removes a value from the cache.
        async del(key: string): Promise<void>

        // Removes multiple keys from the cache..
        async mDel(keys: Array<string>): Promise<void>

        // Returns true if the key exists in the cache.
        async has(key: string): Promise<boolean>

        // Increments a numeric key value by the amount, which defaults to 1. More atomic in a clustered environment.
        async incr(key: string, amount?: number): Promise<void>

        // Decrements a numeric key value by the amount, which defaults to 1. More atomic in a clustered environment.
        async decr(key: string, amount?: number): Promise<void>

        // Removes all values from the cache.
        async reset(): Promise<void>

        // Returns an array of all the cache keys.
        async keys(): Promise<Array<string>>

        // Returns an array of all the cache values.
        async values(): Promise<Array< G1 | G2 | G3 | G4 | string | number>>

        // Returns a serialized array of the cache contents.
        async dump(): Promise<Array<string>>

        // Manually removes items from the cache rather than on get.
        async prune(): Promise<void>

        // Return the number of items in the cache.
        async length(): Promise<number>

        // Return the number of items in the cache - same as length().
        async itemCount(): Promise<number>

        // Get or update the max value for the cache.
        async max(): Promise<number>

        // Get or update the maxAge value for the cache.
        async max(max: number): Promise<void>

        // Get or update the maxAge value for the cache.
        async maxAge(): Promise<number>

        // Get or update the maxAge value for the cache.
        async maxAge(maxAge: number): Promise<void>

        /**
         * Get or update the stale value for the cache.
         * @deprecated please use allowStale()
         */
        async stale(): Promise<boolean>

        /**
         * Get or update the stale value for the cache.
         * @param stale 
         * @deprecated please use allowStale(stale)
         */
        async stale(stale: boolean): Promise<void>
        
        // Get or update the stale value for the cache.
        async allowStale(): Promise<boolean>

        // Get or update the stale value for the cache.
        async allowStale(stale: boolean): Promise<void>
    }

    module Cache {
    }

    export = Cache;
}