import { EventStream, EventStreamSeed, ObservableSeed, Property, PropertySeed, } from "./abstractions" import { tap } from "./tap" export type LogResult = O extends Property ? Property : O extends PropertySeed ? PropertySeed : O extends EventStream ? EventStream : O extends EventStreamSeed ? EventStreamSeed : never export interface LogOp { >(o: O): LogResult } export function log(...prefixes: any[]): LogOp { return tap((x: any) => console.log(...prefixes, x)) as LogOp }