logger icon indicating copy to clipboard operation
logger copied to clipboard

`effector-logger` breaks operations' priorities

Open yumauri opened this issue 3 years ago • 3 comments

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 $gate contains true after calculations
  • with import {} from "effector-logger" store $gate contains false after calculations, because sample executes earlier, than .on(passingBy

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

yumauri avatar Jun 27 '22 17:06 yumauri

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

ZothOmmog avatar Jul 21 '22 06:07 ZothOmmog

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

zerobias avatar Jul 21 '22 15:07 zerobias

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.

yumauri avatar Jul 26 '22 06:07 yumauri