12345678910111213141516171819202122232425262728293031 |
- import type Fuse from 'fuse.js';
- // See http://fusejs.io/ for more information
- const DEFAULT_FUSE_OPTIONS: Fuse.IFuseOptions<any> = {
- includeScore: true,
- includeMatches: true,
- threshold: 0.4,
- location: 0,
- distance: 75,
- minMatchCharLength: 2,
- };
- export async function createFuzzySearch<
- T = string,
- Options extends Fuse.IFuseOptions<T> = Fuse.IFuseOptions<T>
- >(objects: T[], options: Options): Promise<Fuse<T>> {
- if (!options.keys) {
- throw new Error('You need to define `options.keys`');
- }
- const fuseImported = await import('fuse.js');
- const fuse = {Fuse: fuseImported.default};
- return new fuse.Fuse(objects, {
- ...DEFAULT_FUSE_OPTIONS,
- ...options,
- });
- }
- // re-export fuse type to make it easier to use
- export type {Fuse};
|