rx-subject
Version:
minimal Subject implementation (0.4k bytes), independent of reactive framework
1 lines • 728 B
JavaScript
;function e(){let e;const r=[];return{sink:{next:o("next"),error:o("error"),complete:o("complete")},source$:{subscribe:function(o,c,s){const u=n(o,c,s);if(e){const{key:n,args:r}=e;return t(u,n,r),{unsubscribe(){}}}return r.push(u),{unsubscribe:function(){const e=r.indexOf(u);e>=0&&r.splice(e,1)}}},[Symbol.observable](){return this}}};function o(n){return function(...o){if(!e){for(const e of r.slice())t(e,n,o);"next"!==n&&(r.splice(0,r.length),e={key:n,args:o})}}}}function n(e=r,t=r,o=r){return"function"!=typeof e?n(e.next.bind(e),e.error.bind(e),e.complete.bind(e)):{next:e,error:t,complete:o}}function t(e,n,t){e[n](...t)}function r(){}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=e;