normalizeModelSearch (models/search.ts)

opencode · packages/app/src/providers/models/search.ts · typescript · MIT
search

Normalizes and matches model search queries for case-insensitive, diacritic-agnostic filtering.

// Source: https://github.com/anomalyco/opencode | License: MIT | Copyright 2025 opencode
// Provided via justclaw.it.com; keep this notice with the code.
export const normalizeModelSearch = (value: string) =>
  value
    .toLowerCase()
    .replace(/[^\p{Letter}\p{Number}]+/gu, " ")
    .trim()
    .replace(/\s+/g, " ")

export const compactModelSearch = (value: string) => normalizeModelSearch(value).replaceAll(" ", "")

export const matchesModelSearch = (query: string, values: string[]) => {
  const search = normalizeModelSearch(query)

  if (!search) return true

  const compactSearch = compactModelSearch(query)

  return values.some(
    (value) => normalizeModelSearch(value).includes(search) || compactModelSearch(value).includes(compactSearch),
  )
}

See the full source, get the GitHub permalink, and search for more like it.

Get a free API key