Repository navigation
v10.10.1
Cache not-found content results briefly instead of refetching them on every request.
ContentDelivery treated any falsy cached value as a miss, so a stored null story lookup still reached the API on every request. Only an absent cache entry is a miss now: a stored null, false or 0 is a hit. Null results (API 403, 404 and 410 as mapped by story() and gallery()) are kept for negativeTtl seconds, 60 by default and configurable through cache.negativeTtl on PrezlyAdapter.connect, which must be a positive integer. The deadline is written into the cached envelope and enforced on read, so a cache layer that ignores the new ttl hint, or a null written by an older Theme Kit, is a miss rather than a stale hit. The memory cache expires these entries; the Redis cache writes them with their own EX and does not renew it on read. A cache version change still invalidates them immediately. Errors keep throwing and are never stored; undefined results are no longer written. Clients created with a custom fetch and no requestScope keep treating null as a miss.
Cache.set gains an optional { ttl } argument; custom caches that ignore it keep working. Telemetry counts a cached null as cache_hit.
The manifests drop the legacy devEngines field, which npm 11.13 rejects; engines carries the same constraint.
10.10.0 was published with pnpm workspace:^ dependency specifiers left unrewritten and cannot be installed. It is deprecated on npm; use 10.10.1. The README documents publishing with a hardware security key so this does not recur.
Bea adopts this release in prezly/theme-nextjs-bea alongside the middleware slug pre-filter (DEV-24197); together they remove most story-lookup API calls for missing paths. Linear: DEV-24151.