/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import Fuse from 'fuse.js';
export default class FuzzySearch {
constructor(items, options) {
this.fuse = new Fuse(items, {
includeMatches: true,
shouldSort: false, // use our own sorting for the moment
threshold: 0.4,
keys: Object.keys(options.finders) || [],
getFn(item, key) {
return (options.finders[key[0]](item) || []).toString();
},
});
}
search(s) {
return this.fuse.search(s).map((item) => item.item);