`effector-logger` breaks operations' priorities
Subj, effector-logger somehow breaks effector priorities, for example, sample began to work earlier, than .on, which completely breaks synchronous logic.
Code
const passingBy = createEvent();
const goAhead = createEvent();
const $gate = createStore(true)
.on(passingBy, () => false)
.on(goAhead, () => true);
sample({
clock: passingBy,
target: goAhead
});
passingBy()
works differently, when you import from from "effector-logger":
- with
import {} from "effector"store$gatecontainstrueafter calculations - with
import {} from "effector-logger"store$gatecontainsfalseafter calculations, becausesampleexecutes earlier, than.on(passingBy
Repo with reproduce: https://github.com/yumauri/effector-logger-issue
Same problem https://codesandbox.io/s/effector-logger-break-89zdmc?file=/src/App.js
Looks like an issue in effector-inspector If you set inspector option to true (which is a default) the issue occurs
Yep, looks like. Might it be because inspector calls event inside of compute step? https://github.com/effector/inspector/blob/master/src/index.ts#L235
UPD: I've tried to remove traceEffectRun/traceEventTrigger/traceStoreChange events calls (line 222, line 235 and line 260) from installed inspector in node_modules folder, and issue in my repo has gone. So, looks like here is an issue, or at least, roots lay here.