URL templating for the STATE corner. A RouteContract.path is Hono-style ("/pet/:petId"); v4 uriTemplates are RFC-6570 ("pet/{petId}"). buildUrl accepts BOTH param syntaxes so the same helper works whether the caller hands us a raw contract path or an already-projected v4 template — we substitute ":name" and "{name}" segments from the params bag, then prepend an optional baseUrl.
Honest-loss discipline (house pattern): a placeholder with no matching param is NOT silently emptied — it
is left verbatim in the URL so the missing binding is visible in the request (and to any test asserting on
the URL), rather than producing a plausible-but-wrong path. Callers that want strictness can diff the
result against a "no :/{ remains" check.
Optionalparams: Record<string, string | number>OptionalbaseUrl: string
@suluk/nano-stores— the STATE corner. Projects v4 "Suluk" RouteContracts (the same ones @suluk/hono derives a server from) into a typed Nano Stores client: GET → @nanostores/query fetcher stores, the rest → mutator stores, with the contract's Zod schemas guarding both request and response edges. One contract, two projections (server + client state). CANDIDATE tooling — NOT official OAS.