nrgy
Version:
The library for reactive programming using efficient computing and MVC/MVVM patterns
61 lines (47 loc) • 2.09 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});
var _chunkDUWWIS26cjs = require('./chunk-DUWWIS26.cjs');
var _chunk4OYRW4HCcjs = require('./chunk-4OYRW4HC.cjs');
// src/rxjs/observe.ts
var _rxjs = require('rxjs');
function observe(source, options) {
const observable = new (0, _rxjs.Observable)((subscriber) => {
const scope = _chunkDUWWIS26cjs.createScope.call(void 0, );
scope.onDestroy(() => subscriber.complete());
const effectFn = (options == null ? void 0 : options.sync) ? scope.syncEffect : scope.effect;
const fx = effectFn(source, (value) => {
_chunk4OYRW4HCcjs.RUNTIME.runAsUntracked(() => subscriber.next(value));
});
_chunk4OYRW4HCcjs.syncEffect.call(void 0,
fx.onError,
(error) => _chunk4OYRW4HCcjs.RUNTIME.runAsUntracked(() => subscriber.error(error))
);
_chunk4OYRW4HCcjs.syncEffect.call(void 0, fx.onDestroy, () => scope.destroy());
if (_chunk4OYRW4HCcjs.isAtom.call(void 0, source)) {
const sourceFx = scope.syncEffect(source, () => {
});
scope.syncEffect(sourceFx.onDestroy, () => scope.destroy());
}
return () => scope.destroy();
});
if (_chunk4OYRW4HCcjs.isSignal.call(void 0, source)) {
return observable.pipe(_rxjs.share.call(void 0, { resetOnRefCountZero: true }));
} else {
if (options == null ? void 0 : options.onlyChanges) {
return observable.pipe(_rxjs.skip.call(void 0, 1), _rxjs.share.call(void 0, { resetOnRefCountZero: true }));
} else {
return observable.pipe(_rxjs.shareReplay.call(void 0, { bufferSize: 1, refCount: true }));
}
}
}
// src/rxjs/fromObservable.ts
function fromObservable(source, initialValue) {
const scope = _chunkDUWWIS26cjs.createScope.call(void 0, );
const atomSubject = _chunkDUWWIS26cjs.createAtomSubject.call(void 0, initialValue, {
onDestroy: scope.destroy
});
scope.add(
source.subscribe({ next: atomSubject.next, error: atomSubject.error })
);
return atomSubject.asDestroyable();
}
exports.observe = observe; exports.fromObservable = fromObservable;