recent-searches
Version:
A JavaScript module to help anyone easily build recent searches functionality into their search.
51 lines (50 loc) • 1.51 kB
TypeScript
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;