@tech.gocase/search
v0.5.1
Published
Isomorphic search client library.
Readme
@tech.gocase/search
Isomorphic search client (Node + evergreen browsers), framework-agnostic
(native fetch, no framework runtime). Internal Gocase package — the full
technical documentation lives in the Gocase monorepo.
Install
npm i @tech.gocase/search # or: yarn add @tech.gocase/searchUsage
import { createSearchClient, fetchCatalogProducts } from "@tech.gocase/search";
// Configuration (host, search-only apiKey, timeouts, …) is provided by the
// consumer; nothing is read from env vars or globals.
const client = createSearchClient({ host, apiKey });
const { products, totalFound } = await fetchCatalogProducts(client, {
perPage: 24,
});Surface (overview)
createSearchClient(config)— opaque client with per-instance caching.fetchCatalogProducts(client, params)— single entry point: listing, full-text query, hydration by ids, filters, optional facets, pagination, sort.fetchCatalogAuxMaps/hydrateFacets/fetchInitialFacets— facet hydration helpers (labels/colors), decoupled from the products fetch.fetchQuerySuggestions(client, { query })— autocomplete terms for a keystroke. Throws on a failed engine (the caller decides whether to silence it) and never retries.new SearchEngine(client, opts)— stateful navigable search (debounced fetch,subscribe, middlewares), with no framework reactivity.SearchError,SORT_CODES, and the Zod document schemas.
Module formats
Ships dual ESM + CJS builds (exports): modern bundlers resolve the ESM
entry; legacy CJS toolchains resolve a self-contained, down-leveled CJS entry.
Publishing
Released via release-please: merging the auto-generated release PR on main
publishes to npm via CI (Trusted Publishing / OIDC — no long-lived token).
Every published version maps to a search-v<version> git tag/commit.
