{"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["/**\n * FuzzyFindJS - A powerful, multi-language optimized fuzzy search library\n *\n * @example\n * ```typescript\n * import { buildFuzzyIndex, getSuggestions } from 'fuzzyfindjs';\n *\n * const dictionary = ['Krankenhaus', 'Schule', 'Kindergarten'];\n * const index = buildFuzzyIndex(dictionary);\n * const results = getSuggestions(index, 'krankenh', 5);\n * ```\n */\n\n// Core functionality\nexport {\n  //\n  buildFuzzyIndex,\n  getSuggestions,\n  batchSearch,\n  updateIndex,\n  removeFromIndex,\n} from \"./core/index.js\";\n\nimport {\n  //\n  buildFuzzyIndex,\n  getSuggestions,\n} from \"./core/index.js\";\n\n// Highlighting utilities (for UI rendering)\nexport {\n  //\n  calculateHighlights,\n  formatHighlightedHTML,\n} from \"./core/highlighting.js\";\n\n// Cache utilities (for advanced users)\nexport {\n  //\n  SearchCache,\n  LRUCache,\n} from \"./core/cache.js\";\n\n// Serialization utilities (save/load indices)\nexport {\n  //\n  serializeIndex,\n  deserializeIndex,\n  saveIndexToLocalStorage,\n  loadIndexFromLocalStorage,\n  getSerializedSize,\n} from \"./core/serialization.js\";\n\n// E-Commerce: Filtering\nexport { applyFilters } from \"./core/filters.js\";\nexport type { RangeFilter, TermFilter, BooleanFilter, FilterOptions } from \"./core/filters.js\";\n\n// E-Commerce: Sorting\nexport { applySorting } from \"./core/sorting.js\";\nexport type { SortOption, SortConfig } from \"./core/sorting.js\";\n\n// Accent normalization utilities\nexport {\n  //\n  removeAccents,\n  hasAccents,\n  normalizeForComparison,\n  getAccentVariants,\n} from \"./utils/accent-normalization.js\";\n\n// Stop words utilities\nexport {\n  //\n  filterStopWords,\n  getStopWordsForLanguages,\n  isStopWord,\n  DEFAULT_STOP_WORDS,\n} from \"./utils/stop-words.js\";\n\n// Word boundary utilities\nexport {\n  //\n  isWordBoundary,\n  matchesAtWordBoundary,\n  findWordBoundaryMatches,\n  matchesWord,\n  matchesWildcard,\n} from \"./utils/word-boundaries.js\";\n\n// Data indexing utilities\nexport {\n  //\n  dataToIndex,\n  dataToIndexAsync,\n} from \"./utils/data-indexer.js\";\nexport type {\n  //\n  DataToIndexOptions,\n} from \"./utils/data-indexer.js\";\n\n// Phrase parsing utilities\nexport {\n  //\n  parseQuery,\n  hasPhraseSyntax,\n  normalizePhrase,\n  splitPhraseWords,\n} from \"./utils/phrase-parser.js\";\nexport type {\n  //\n  ParsedQuery,\n} from \"./utils/phrase-parser.js\";\n\n// Language detection utilities\nexport {\n  //\n  detectLanguages,\n  detectLanguagesWithConfidence,\n  sampleTextForDetection,\n  isValidLanguage,\n  normalizeLanguageCode,\n} from \"./utils/language-detection.js\";\nexport type {\n  //\n  LanguageDetectionResult,\n} from \"./utils/language-detection.js\";\n\n// Configuration\nexport {\n  //\n  DEFAULT_CONFIG,\n  PERFORMANCE_CONFIGS,\n  mergeConfig,\n  DEFAULT_MATCH_TYPE_SCORES,\n  DEFAULT_SCORING_MODIFIERS,\n} from \"./core/config.js\";\n\n// Types\nexport type {\n  //\n  FuzzyIndex,\n  FuzzyConfig,\n  SuggestionResult,\n  SearchMatch,\n  MatchType,\n  FuzzyFeature,\n  LanguageProcessor,\n  BuildIndexOptions,\n  SearchOptions,\n  DebugInfo,\n  SuggestionResultWithDebug,\n  MatchTypeScores,\n  ScoringModifiers,\n} from \"./core/types.js\";\n\n// Language processors\nexport {\n  //\n  LanguageRegistry,\n  GermanProcessor,\n  EnglishProcessor,\n  SpanishProcessor,\n  FrenchProcessor,\n  BaseLanguageProcessor,\n} from \"./languages/index.js\";\n\n// Algorithms (for advanced users)\nexport {\n  //\n  calculateLevenshteinDistance,\n  calculateDamerauLevenshteinDistance,\n  calculateNgramSimilarity,\n  distanceToSimilarity,\n  areStringsSimilar,\n} from \"./algorithms/levenshtein.js\";\nexport {\n  //\n  calculateBM25Score,\n  calculateIDF,\n  normalizeBM25Score,\n  combineScores,\n  buildCorpusStats,\n  DEFAULT_BM25_CONFIG,\n} from \"./algorithms/bm25.js\";\nexport type {\n  //\n  BM25Config,\n  DocumentStats,\n  CorpusStats,\n} from \"./algorithms/bm25.js\";\nexport {\n  //\n  BloomFilter,\n  createBloomFilter,\n} from \"./algorithms/bloom-filter.js\";\nexport type {\n  //\n  BloomFilterConfig,\n} from \"./algorithms/bloom-filter.js\";\n\n// Memory pooling utilities (for performance optimization)\nexport {\n  //\n  ObjectPool,\n  ArrayPool,\n  MapPool,\n  SetPool,\n  withPooledArray,\n  globalArrayPool,\n  globalMapPool,\n  globalSetPool,\n} from \"./utils/memory-pool.js\";\n\n// Alphanumeric segmentation utilities\nexport {\n  //\n  isAlphanumeric,\n  segmentString,\n  getAlphaSegments,\n  getNumericSegments,\n  extractAlphaPart,\n  extractNumericPart,\n  compareSegments,\n} from \"./utils/alphanumeric-segmenter.js\";\nexport type {\n  //\n  Segment,\n  SegmentType,\n} from \"./utils/alphanumeric-segmenter.js\";\n\n/**\n * Creates a fuzzy search instance with sensible defaults - the easiest way to get started.\n * \n * This convenience function combines index building and searching into a simple API.\n * It's perfect for quick prototyping and simple use cases. For advanced features,\n * use {@link buildFuzzyIndex} and {@link getSuggestions} directly.\n * \n * @param dictionary - Array of strings to make searchable\n * @param options - Simple configuration options\n * @param options.languages - Languages to enable (default: ['english'])\n * @param options.performance - Performance mode: 'fast', 'balanced', or 'comprehensive' (default: 'balanced')\n * @param options.maxResults - Maximum results to return per search (default: 5)\n * \n * @returns Object with search() method and the underlying index\n * @returns {Function} search - Function to search the index: (query: string, maxResults?: number) => SuggestionResult[]\n * @returns {FuzzyIndex} index - The underlying fuzzy index (for advanced usage)\n * \n * @example\n * ```typescript\n * // Quick start - one line setup\n * const search = createFuzzySearch(['apple', 'banana', 'cherry']);\n * const results = search.search('aple');\n * // Returns: [{ display: 'apple', score: 0.9, ... }]\n * \n * // With options\n * const search = createFuzzySearch(['Krankenhaus', 'Apotheke'], {\n *   languages: ['german'],\n *   performance: 'comprehensive',\n *   maxResults: 10\n * });\n * \n * // Access underlying index for advanced features\n * const { search: searchFn, index } = createFuzzySearch(['hello', 'world']);\n * console.log(index.base); // ['hello', 'world']\n * ```\n * \n * @see {@link buildFuzzyIndex} for advanced index building\n * @see {@link getSuggestions} for advanced search options\n */\nexport function createFuzzySearch(\n  //\n  dictionary: string[],\n  options: {\n    languages?: string[];\n    performance?: \"fast\" | \"balanced\" | \"comprehensive\";\n    maxResults?: number;\n  } = {}\n) {\n  const index = buildFuzzyIndex(dictionary, {\n    config: {\n      languages: options.languages || [\"english\"],\n      performance: options.performance || \"balanced\",\n      maxResults: options.maxResults || 5,\n    },\n  });\n\n  return {\n    search: (query: string, maxResults?: number) => getSuggestions(index, query, maxResults),\n    index,\n  };\n}\n\n/**\n * Version information\n */\nexport const VERSION = \"1.0.13\";\n"],"names":["index","buildFuzzyIndex","getSuggestions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA6QO,SAAS,kBAEd,YACA,UAII,IACJ;AACA,QAAMA,WAAQC,MAAAA,gBAAgB,YAAY;AAAA,IACxC,QAAQ;AAAA,MACN,WAAW,QAAQ,aAAa,CAAC,SAAS;AAAA,MAC1C,aAAa,QAAQ,eAAe;AAAA,MACpC,YAAY,QAAQ,cAAc;AAAA,IAAA;AAAA,EACpC,CACD;AAED,SAAO;AAAA,IACL,QAAQ,CAAC,OAAe,eAAwBC,MAAAA,eAAeF,UAAO,OAAO,UAAU;AAAA,IAAA,OACvFA;AAAAA,EAAA;AAEJ;AAKO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}