{"id":23120275,"url":"https://github.com/dragos-tudor/frontend-states","last_synced_at":"2026-05-20T14:11:17.594Z","repository":{"id":208884767,"uuid":"722196398","full_name":"dragos-tudor/frontend-states","owner":"dragos-tudor","description":"Rewritten React redux library [functional principles].","archived":false,"fork":false,"pushed_at":"2025-04-23T11:47:36.000Z","size":135,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-05T23:40:07.439Z","etag":null,"topics":["functional","functional-components","functional-programming","react-redux","redux","states"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/dragos-tudor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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,"zenodo":null}},"created_at":"2023-11-22T16:32:20.000Z","updated_at":"2025-04-23T11:47:40.000Z","dependencies_parsed_at":"2023-11-23T20:25:31.302Z","dependency_job_id":"23d49a80-9d52-4a1d-b1a8-ae73c7bc5c75","html_url":"https://github.com/dragos-tudor/frontend-states","commit_stats":null,"previous_names":["dragos-tudor/frontend-states"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/dragos-tudor/frontend-states","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragos-tudor%2Ffrontend-states","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragos-tudor%2Ffrontend-states/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragos-tudor%2Ffrontend-states/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragos-tudor%2Ffrontend-states/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dragos-tudor","download_url":"https://codeload.github.com/dragos-tudor/frontend-states/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragos-tudor%2Ffrontend-states/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265538453,"owners_count":23784601,"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":["functional","functional-components","functional-programming","react-redux","redux","states"],"created_at":"2024-12-17T06:09:37.657Z","updated_at":"2026-05-20T14:11:12.572Z","avatar_url":"https://github.com/dragos-tudor.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Frontend states library\n- simplified React-Redux like library.\n- Deno-based states management library [Node-free].\n- functional-style library [OOP-free].\n\n### Usage\n```javascript\nimport {render} from \"/scripts/rendering.js\"\nimport {createAction, createGlobalState, createReducer, dispatchAction, getGlobalStates, setSelectors, useSelector, Global_State} from \"/scripts/states.js\"\n\nconst changeAuthAction = createAction(\"userState/changeAuth\", {isAuth: true})\nconst userState = createGlobalState(\"userState\", ({ isAuth: false }))\nconst userStateReducer = createReducer(\"userState\", {\n  changeAuth: (userState, action) =\u003e ({ ...userState, ...action.payload })\n})\n\nexport const App = () =\u003e\n  \u003cmain\u003e\n    \u003cGlobal_State state={userState} reducer={userStateReducer}\u003e\u003c/Global_State\u003e\n    \u003cUser_Login logged=\"Logged in\" login=\"Login\"\u003e\u003c/User_Login\u003e\n  \u003c/main\u003e\n\nexport const User_Login = (props, elem) =\u003e {\n  const selectors = setSelectors(elem)\n  const globalStates = getGlobalStates(elem)\n  const isAuth = useSelector(selectors, \"isAuth\", (states) =\u003e states.userState.isAuth, globalStates)\n\n  return isAuth?\n    \u003cdiv\u003e{props.logged}\u003c/div\u003e:\n    \u003cbutton onclick={() =\u003e dispatchAction(elem, changeAuthAction)}\u003e{props.login}\u003c/button\u003e\n}\n\nrender(\u003cApp\u003e\u003c/App\u003e, document.body)\n```\n\n### Modules\n- *high-level modules*: states, states-components.\n- *low-level modules*: states-actions, states-html, states-middlewares, states-reducers, states-states, states-selectors, states-equalities.\n- *low-level modules* completely independent [\"parallel\" modules].\n\n### [State](./states/)\n- main functionality: dispatch actions, reduce states, update states consumers.\n- state means one states slice.\n- reducer means one group of change state funcs.\n- states operations:\n  - `dispatchAction` if action change states then update consumers.\n  - `chainMiddlewares` send actions through middlewares chain.\n  - `runAction` based on action type reduce state.\n  - `updateConsumers`:\n    - when reduced state is different than previous state.\n    - when previous selectors values are different than reduced state selectors values.\n\n\n### [Components](./states-components/)\n- main functionality: implement states components.\n  - `Global_State`: register global state, state reducer, actions middleware.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdragos-tudor%2Ffrontend-states","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdragos-tudor%2Ffrontend-states","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdragos-tudor%2Ffrontend-states/lists"}