{"id":13627285,"url":"https://github.com/ngneat/elf","last_synced_at":"2025-05-14T05:10:24.284Z","repository":{"id":37809106,"uuid":"378070841","full_name":"ngneat/elf","owner":"ngneat","description":"🧙‍♀️ A Reactive Store with Magical Powers","archived":false,"fork":false,"pushed_at":"2024-07-21T06:23:58.000Z","size":10185,"stargazers_count":1645,"open_issues_count":9,"forks_count":94,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-05-12T23:03:16.388Z","etag":null,"topics":["angular","javascript","react","rxjs","state-management"],"latest_commit_sha":null,"homepage":"https://ngneat.github.io/elf/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ngneat.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.config.js","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"ngneat"}},"created_at":"2021-06-18T07:33:16.000Z","updated_at":"2025-05-05T03:42:38.000Z","dependencies_parsed_at":"2023-10-16T04:23:24.541Z","dependency_job_id":"2e53ec43-ceca-418f-ad4b-14d7be5912b6","html_url":"https://github.com/ngneat/elf","commit_stats":{"total_commits":594,"total_committers":62,"mean_commits":9.580645161290322,"dds":0.6127946127946128,"last_synced_commit":"5651be0fc75e0d45049879214c20b5807b890fab"},"previous_names":[],"tags_count":112,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngneat%2Felf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngneat%2Felf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngneat%2Felf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngneat%2Felf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ngneat","download_url":"https://codeload.github.com/ngneat/elf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253888137,"owners_count":21979396,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","javascript","react","rxjs","state-management"],"created_at":"2024-08-01T22:00:32.405Z","updated_at":"2025-05-14T05:10:24.260Z","avatar_url":"https://github.com/ngneat.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n \u003cimg width=\"20%\" height=\"20%\" src=\"elf.png\"\u003e\n\u003c/p\u003e\n\n# Elf\n\n\u003e A Reactive Store with Magical Powers\n\nElf is a reactive immutable state management solution built on top of RxJS. It uses custom RxJS operators to query the state and pure functions to update it.\n\nElf encourages simplicity. It saves you the hassle of creating boilerplate code and offers powerful tools with a moderate learning curve, suitable for experienced and inexperienced developers alike.\n\n✅ \u0026nbsp;Modular by design  \n✅ \u0026nbsp;Tree Shakeable \u0026 Fully Typed  \n✅ \u0026nbsp;CLI  \n✅ \u0026nbsp;First Class Entities Support  \n✅ \u0026nbsp;Requests Status \u0026 Cache  \n✅ \u0026nbsp;Persist State  \n✅ \u0026nbsp;State History  \n✅ \u0026nbsp;Pagination  \n✅ \u0026nbsp;Devtools\n\n## Sponsoring ngneat\n\n[Sponsorships](https://github.com/sponsors/ngneat) aid in the continued development and maintenance of ngneat libraries. Consider asking your company to sponsor ngneat as its core to their business and application development.\n\n### Gold Sponsors\n\nElevate your support by becoming a Gold Sponsor and have your logo prominently featured on our README in the top 5 repositories.\n\n### Silver Sponsors\n\nBoost your backing by becoming a Gold Sponsor and enjoy the spotlight with your logo prominently showcased in the top 3 repositories on our README.\n\n### Bronze Sponsors\n\n\u003ca href=\"https://houseofangular.io\" target=\"_blank\"\u003e\n  \u003cimg src=\"https://github.com/ngrx/platform/blob/main/projects/ngrx.io/src/assets/images/sponsors/house-of-angular.png\" width=\"50px\" height=\"50px\" alt=\"House of Angular\" /\u003e\n\u003c/a\u003e\n\nBecome a bronze sponsor and get your logo on our README on GitHub.\n\n\u003chr /\u003e\n\n\u003cp align=\"center\"\u003e\n\n[![@ngneat/elf](https://github.com/ngneat/elf/actions/workflows/ci.yml/badge.svg)](https://github.com/ngneat/elf/actions/workflows/ci.yml)\n[![commitizen](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?style=flat-square)]()\n[![PRs](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)]()\n[![coc-badge](https://img.shields.io/badge/codeof-conduct-ff69b4.svg?style=flat-square)]()\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e5079.svg?style=flat-square)](https://github.com/semantic-release/semantic-release)\n[![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)\n\n\u003c/p\u003e\n\n## 🤓 Learn about it on the [docs site](https://ngneat.github.io/elf/)\n\n## 👩‍🎓 Check out the React Todos [example](https://stackblitz.com/edit/react-ts-jidhej?file=todos/todos.tsx)\n\n## 😋 Check out the Angular Todos [example](https://stackblitz.com/edit/angular-ivy-sky1gb?file=src/app/todos/state/todos.repository.ts) or Books [example](https://stackblitz.com/edit/angular-ivy-j9azue?file=src/app/state/books.repository.ts)\n\n\u003cbr \u003e\n\n```ts\nimport { createStore, withProps, select, setProp } from '@ngneat/elf';\nimport { withEntities, selectAllEntities, setEntities } from '@ngneat/elf-entities';\n\ninterface TodosProps {\n  filter: 'ALL' | 'ACTIVE' | 'COMPLETED';\n}\n\ninterface Todo {\n  id: string;\n  title: string;\n  status: string;\n}\n\nconst store = createStore({ name: 'todos' }, withProps\u003cTodosProps\u003e({ filter: 'ALL' }), withEntities\u003cTodo\u003e());\n\nexport const filter$ = store.pipe(select(({ filter }) =\u003e filter));\nexport const todos$ = store.pipe(selectAllEntities());\n\nexport function setTodos(todos: Todo[]) {\n  store.update(setEntities(todos));\n}\n\nexport function updateFilter(filter: TodosProps['filter']) {\n  store.update(setProp('filter', filter));\n}\n```\n\n## 🗒️ Review the Change Logs\n\n- [`@ngneat/elf`](https://github.com/ngneat/elf/blob/master/packages/store/CHANGELOG.md)\n- [`@ngneat/elf-cli`](https://github.com/ngneat/elf/blob/master/packages/cli/CHANGELOG.md)\n- [`@ngneat/elf-devtools`](https://github.com/ngneat/elf/blob/master/packages/devtools/CHANGELOG.md)\n- [`@ngneat/elf-entities`](https://github.com/ngneat/elf/blob/master/packages/entities/CHANGELOG.md)\n- [`@ngneat/pagination`](https://github.com/ngneat/elf/blob/master/packages/pagination/CHANGELOG.md)\n- [`@ngneat/persist-state`](https://github.com/ngneat/elf/blob/master/packages/persist-state/CHANGELOG.md)\n- [`@ngneat/requests`](https://github.com/ngneat/elf/blob/master/packages/requests/CHANGELOG.md)\n- [`@ngneat/state-history`](https://github.com/ngneat/elf/blob/master/packages/state-history/CHANGELOG.md)\n\n## ⭐ Usage Trend of Elf Packages\n\n[Usage Trend of Elf Packages](https://npm-compare.com/@ngneat/elf,@ngneat/elf-entities,@ngneat/elf-devtools,@ngneat/elf-persist-state,@ngneat/elf-requests,@ngneat/elf-pagination,@ngneat/elf-cli-ng,@ngneat/elf-state-history,@ngneat/elf-cli)\n","funding_links":["https://github.com/sponsors/ngneat"],"categories":["Projects by main language","TypeScript","State Management"],"sub_categories":["angular","Other State Libraries"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngneat%2Felf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fngneat%2Felf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngneat%2Felf/lists"}