effector / logger

Simple logger with stores inspector
https://npmjs.com/effector-logger
160 stars 22 forks source link

`effector-logger` breaks operations' priorities #100

Closed yumauri closed 1 year ago

yumauri commented 2 years ago

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":

Repo with reproduce: https://github.com/yumauri/effector-logger-issue

ZothOmmog commented 2 years ago

Same problem https://codesandbox.io/s/effector-logger-break-89zdmc?file=/src/App.js

zerobias commented 2 years ago

Looks like an issue in effector-inspector If you set inspector option to true (which is a default) the issue occurs

yumauri commented 2 years ago

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.