import { Subject } from '../Subject'; import { Observable } from '../Observable'; import { defer } from './defer'; const DEFAULT_CONFIG = { connector: () => new Subject(), resetOnDisconnect: true, }; export function connectable(source, config = DEFAULT_CONFIG) { let connection = null; const { connector, resetOnDisconnect = true } = config; let subject = connector(); const result = new Observable((subscriber) => { return subject.subscribe(subscriber); }); result.connect = () => { if (!connection || connection.closed) { connection = defer(() => source).subscribe(subject); if (resetOnDisconnect) { connection.add(() => (subject = connector())); } } return connection; }; return result; } //# sourceMappingURL=connectable.js.map