This repository has been archived on 2026-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
todo/node_modules/rxjs/dist/esm/internal/observable/connectable.js
2025-06-13 14:04:40 +08:00

26 lines
855 B
JavaScript

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