import { checkObservable } from "../_check" import { makeProperty } from "../_obs" import { curry2 } from "../_util" import { dispatcherOf, Observable } from "../Observable" import { isProperty, Property } from "../Property" import { _startWithP } from "./startWith" export const toPropertyWith: CurriedToPropertyWith = curry2(_toPropertyWith) export interface CurriedToPropertyWith { (initial: ValueType, observable: Observable): Property (initial: ValueType): (observable: Observable) => Property } export function toProperty(observable: Observable): Property { checkObservable(observable) return isProperty(observable) ? observable : makeProperty(dispatcherOf(observable)) } function _toPropertyWith(initial: T, observable: Observable): Property { checkObservable(observable) return _startWithP(initial, toProperty(observable)) }