// A fun fact about $derive: if the deriving expression throws an error, then Svelte (at least as of // 5.20.2) _permanently_ stops evaluating it, even if the inputs change. To prevent this, you need // to ensure that derive expressions never raise an exception. function tryDerive(args, func, fallback) { try { return func(...args); } catch (e) { return fallback; } } // A "deriver" is a function that never raises; if the underlying function would raise, the // corresponding deriver instead returns a fallback value (or `undefined`). export function makeDeriver(func, fallback = undefined) { return (...args) => tryDerive(args, func, fallback); }