в юниты проставляется их name и объект loc, содержащий имя файла, в котором этот юнит был создан
в вызовы фабрики будет передаваться этот самый loc, если фабрика передаёт этот loc в юниты, то они начинают выглядеть, будто созданные в месте создания фабрики
const fab = (params, {loc} = {}) => {
const foo = createEvent({loc})
const bar = createEvent({loc})
return {foo, bar}
}
// a.js
const x = fab(0)
// => fab(0, {name: 'x', loc: 'a.js'})
const y = fab(0)
// => fab(0, {name: 'y', loc: 'a.js'})
// b.js
const z = fab(0)
// => fab(0, {name: 'z', loc: 'b.js'})
но теперь мы не можем узнать из loc о том, что
x.foo,
y.foo и
z.foo создаются в одной и той же точке кода 😟 потому что они же будут выглядеть, как юниты, которые созданы в корне модулей a.js и b.js
для обхода этого эффектор проставляет ещё и хэшированный loc — sid (да, тот, через который работает ssr)