/** Keep `prev`'s reference when it's element-equal to `next`, so a nanostores * `computed` (notifies on `!==`) skips the emit when its projected list didn't * actually change — e.g. status-id sets recomputed on every stream delta. * `next` is frozen: the ref is shared across ticks, so an in-place mutation * would corrupt the cache — fail loud instead. */ export const stableArray = (prev: readonly T[], next: T[]): readonly T[] => prev.length === next.length && prev.every((v, i) => v === next[i]) ? prev : Object.freeze(next)