{"id":21020934,"url":"https://github.com/awto/mfjs-core","last_synced_at":"2025-03-13T17:42:24.659Z","repository":{"id":143761013,"uuid":"58798076","full_name":"awto/mfjs-core","owner":"awto","description":"Abstract runtime library for embedded effects compiler","archived":false,"fork":false,"pushed_at":"2016-07-13T17:58:03.000Z","size":43,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-08T09:35:49.324Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/awto.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}},"created_at":"2016-05-14T08:37:25.000Z","updated_at":"2016-05-15T17:52:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"c4c92382-4a08-43e4-b2cb-9c34f77fcbc7","html_url":"https://github.com/awto/mfjs-core","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awto%2Fmfjs-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awto%2Fmfjs-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awto%2Fmfjs-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awto%2Fmfjs-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awto","download_url":"https://codeload.github.com/awto/mfjs-core/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243451032,"owners_count":20293055,"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":[],"created_at":"2024-11-19T10:44:01.936Z","updated_at":"2025-03-13T17:42:24.625Z","avatar_url":"https://github.com/awto.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mfjs-core\n\nLibrary provides utilities for implementing monads with interfaces compatible\nwith [mfjs compiler](https://github.com/awto/mfjs-compiler). \n\nIt doesn’t implement any concrete effects but it contains tools for monads\nconstruction used by in other libraries.\n\nMonad is encoded in the library using simple object with a set of functions\nfor operations. It exports a prototype with a set of default implementations\nas `MonadDict`. There are also a few transformers for definitions. They add\nsome common boilerplate features into concrete monad definitions.\n\nLibrary stores global context with current monad definition to allow usage of\nseveral monads within same project. There are `M.setContext`, `M.liftContext`,\n`M.withContext` function to manage its value. To add context management into\nsome definition use `M.addContext` transformer.\n\nBecause of global context storing it is critical only single instance of the\nlibrary is loaded at the moment, for example using peer dependencies.\n\nThe generated code expects some functions to be method of monadic values.\nTo add default implementations to prototype of monadic value use `M.addMethods`\nand `M.completePrototype` functions.\n\nSometime same data type may be used as monadic value of several monads, or\ndeveloper simply doesn't want to pollute some probably external type with\nmore prototype methods. To avoid this use `M.wrap` function.\n\n`M.withControlByToken` transformer implements JS control operators using\nspecial value threading through monad steps and probably ignoring or changing\nbehavior of some of them.\n\nFor more information about mentioned functions check [API reference](doc/api.md).\n\n\n\n## LICENSE\n\nLicense\n\nCopyright © 2016 Vitaliy Akimov\n\nDistributed under the terms of the The MIT License (MIT).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawto%2Fmfjs-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawto%2Fmfjs-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawto%2Fmfjs-core/lists"}