UNPKG

recent-searches

Version:

A JavaScript module to help anyone easily build recent searches functionality into their search.

51 lines (50 loc) 1.51 kB
import MemoryStorage from "./MemoryStorage"; import { SafeLocalStorage } from "./SafeLocalStorage"; export interface ISearch { query: string; timestamp: number; data?: { [key: string]: string; }; } export declare type ScoredSearch = ISearch & { score: number; }; export declare type RankingStrategy = "PROXIMITY" | "TIME" | "PROXIMITY_AND_TIME"; export interface IRecentSearchesConfig { ttl?: number; limit?: number; namespace?: string; ranking?: RankingStrategy; } export declare type RecentSearchesStorage = SafeLocalStorage<ISearch[]> | MemoryStorage<ISearch[]>; export declare class RecentSearches { private readonly TTL; private readonly LIMIT; private readonly STORAGE; private readonly RANKING; private RECENT_SEARCHES; constructor(config?: IRecentSearchesConfig); /** * Retrieve recent searches for a given query. * If no query is passed, returns all recent searches * * @param {string} query? * @returns Search[] */ getRecentSearches: (query?: string | number | undefined) => ISearch[]; /** * Set a recent search and data related to it. * * @param {string} query * @param {object} data? * @returns Search[] */ setRecentSearch: (query: string | number, data?: { [key: string]: string; } | undefined) => ISearch[]; private filterScoredResults; private sortScoredResults; private initializeStorageData; } export default RecentSearches;