UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

37 lines (36 loc) 764 B
import {freeze} from "../helpers/freeze.mjs"; export function createSubscription(subscribe, emit) { let unsubscribe = null; const isActivated = () => { return unsubscribe !== null; }; const activate = () => { if (unsubscribe === null) { unsubscribe = subscribe(emit); } return subscription; }; const deactivate = () => { if (unsubscribe !== null) { unsubscribe(); unsubscribe = null; } return subscription; }; const toggle = (_activate = !isActivated()) => { if (_activate) { return activate(); } else { return deactivate(); } }; const subscription = freeze({ subscribe, emit, isActivated, activate, deactivate, toggle }); return subscription; }