import {ReadonlySignal, Signal} from '@preact/signals-core'; export function isSignal( value: T | Signal | ReadonlySignal ): value is Signal | ReadonlySignal { return ( value != null && typeof value === 'object' && 'value' in value && (value as {brand: unknown}).brand === Symbol.for('preact-signals') ); } export function extractValue( value: | T | 'initial' | undefined | Signal | ReadonlySignal ): T | undefined { const valueOrInitial = isSignal(value) ? value.value : value; return valueOrInitial !== 'initial' ? valueOrInitial : undefined; }