@idiosync/react-observable
Version:
State management control layer for React projects
30 lines (29 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getIsAppropriateStream = exports.wrapObservable = exports.createStreamName = void 0;
const observable_1 = require("../factories/observable");
const observable_2 = require("../types/observable");
const createStreamName = (baseName) => {
const match = baseName.match(/_STREAM_(\d+)$/);
const index = match ? parseInt(match[1], 10) + 1 : 1;
return `${baseName}_STREAM_${index}`;
};
exports.createStreamName = createStreamName;
const wrapObservable = (observable, onSubscription) => {
const proxyObservable = (0, observable_1.createObservable)({ initialValue: observable.get() });
const unsubscribe = observable.subscribe((payload, stack) => proxyObservable.set(payload, stack), proxyObservable.emitError, (stack, event) => {
if ((event === null || event === void 0 ? void 0 : event.reason) === observable_2.StreamHaltReason.Cancelled) {
proxyObservable.cancelStream(stack);
return;
}
proxyObservable.emitStreamHalted(stack, event);
});
onSubscription({
unsubscribe,
cancelStream: proxyObservable.cancelStream,
});
return proxyObservable;
};
exports.wrapObservable = wrapObservable;
const getIsAppropriateStream = (stack, id, emitCount) => stack === null || stack === void 0 ? void 0 : stack.some((item) => item.id === id && item.emitCount === emitCount);
exports.getIsAppropriateStream = getIsAppropriateStream;