Effector models with ease
Work in progress, api may change
import { keyval } from '@effector/model';
const entities = keyval(() => {
const $id = createStore(0);
const $count = createStore(0);
const inc = createEvent();
$count.on(inc, (x) => x + 1);
const onMount = createEvent();
return {
state: {
id: $id,
count: $count,
},
api: { inc },
key: 'id',
optional: ['count'],
onMount,
};
});
entities.edit.add({ id: 1 });
entities.edit.add([{ id: 2, count: 10 }]);
entities.api.inc({ key: 1, value: undefined });
entities.$items;- clone repo
- install deps via
pnpm install - make changes
- make sure that your changes is passing checks:
- run tests via
pnpm test - run type tests via
pnpm test:types - run linter via
pnpm lint - try to build it via
pnpm build - format code via
pnpm format
- run tests via
- fill in changes via
pnpm changes - open a PR
- enjoy 🎉
Releases of Model are automated by changesets and GitHub Actions. Your only duty is creating changeset for every PR, it is controlled by Changes-action.
After merging PR to master-branch, Version-action will update special PR with the next release. To publish this release, just merge special PR and wait, Release-action will publish packages.